# 다음과 같이 접속 정보를 설정할 수 있다.
# --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
# https://aws.github.io/aws-eks-best-practices/security/docs/iam/#controlling-access-to-eks-clusters
# 에 보면 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 를 추가하거나
# https://yoonbh2714.blogspot.com/2021/04/k8s-service-account.html 처럼 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:
댓글 쓰기