aws eks 접속 토큰

# aws eks 에 생성한 클러스터 접근시
# 다음과 같이 접속 정보를 설정할 수 있다.
# --kubeconfig 가 없으면 ~/.kube/config 에 추가된다.
aws eks update-kubeconfig --region ap-northeast-2 --name ysoftman-cluster --kubeconfig ~/.kube/aws-ysoftman.yaml

# KUBECONFIG 환경변수 설정
export KUBECONFIG=~/.kube/config:~/.kube/aws-ysoftman.yaml 

# 그런데 실제 접속 정보를 보면 사용자 token: 값 대신
# 다음과 같이 aws eks get-token 으로 새 토큰을 얻는 명령 수행 방식으로 설정된다.
vi ~/.kube/kubeconfig-aws-ysoftman.yaml
... 생략 ...
users:
- name: arn:aws:eks:ap-northeast-2:1111111111:cluster/ysoftman-cluster
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - --region
      - ap-northeast-2
      - eks
      - get-token
      - --cluster-name
      - ysoftman-cluster
      command: aws

# 에 보면 get-token 으로 얻은 토큰은 TTL(time to live)이 15분이라
# 15분마다 새 토큰으로 갱신이 필요한데,
# 클라이언트가 kubectl 인 경우 위 설정으로 자동 갱신을 해준다.

# 그런데 서버의 설정에는 고정 토큰 값으로 k8s api 을 사용하고 있다.
# 위의 명령을 다음과 같이 실행해 토큰 값을 파악할 수 있지만,
# 서버 설정 파일에 토큰을 설정하면 15분뒤에는 연결이 끊어진다.
aws --region ap-northeast-2 eks get-token --cluster-name ysoftman-cluster | jq .status.token

# 아래 사이트에서 k8s dashboard 설치시 service-account 를 추가하거나
# 다음과 같이 admin(service-account) 토큰 값을 파악해 
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin | awk '{print $1}')

# ~/.kube/kubeconfig-aws-ysoftman.yaml 를 다음과 같이 고정하면 만료 없이 사용할 수 있긴 하다.
users:
- name: arn:aws:eks:ap-northeast-2:1111111111:cluster/ysoftman-cluster
  user:
    token: "위에서 파악한 토큰값"


comments:

댓글 쓰기