매일 매일 하지 않으면 다 까먹는게 k8s인 것 같습니다.
여느 오픈소스들과 마찬가지로 마이너버전 업데이트가 이루어지더라도
여러가지 변경되는 점들이 워낙 많기 때문일 것 같습니다.
그 중에서도!
ServiceAccount를 생성했을 때 같이 생성되던 Token이 만들어지지 않는 것은
분명 꼼꼼히 이것저것 살피지 않았다면 빠지기 쉬운 함정인 것 같습니다 ㅠㅠ
한 줄 요약 : k8s 1.24 버전 이후부터는 ServiceAccount 생성시 자동으로 Token이 생성되지 않습니다! |
네, 1.24 버전 이후의 k8s를 사용한 클러스터로 작업중이라면
ServiceAccount와 함께 수동으로 Token을 위한 Secret을 생성해야 합니다.
예를 들어 보겠습니다.
apiVersion: v1
kind: ServiceAccount
metadata:
namespace: default
name: drone-bot
1.24 버전까지는 위와 같이 ServiceAccount를 생성하면
`drone-bot-token-j13b7`와 같은 스타일의 토큰이 자동으로 생성되었습니다.
1.24 이후 버전부터는 보안 강화를 위해 토큰을 자동으로 생성하지 않습니다.
따라서 아래와 같이 별도로 Secret 오브젝트를 생성해 줘야 합니다.
apiVersion: v1
kind: Secret
metadata:
name: drone-bot-secret
namespace: default
annotations:
kubernetes.io/service-account.name: drone-bot
type: kubernetes.io/service-account-token
이렇게 하고나면 ServiceAccount에 대한 Token을 획득할 수 있습니다.
% k get secret drone-bot-secret -n default
NAME TYPE DATA AGE
drone-bot-secret kubernetes.io/service-account-token 3 15s
% k get secret drone-bot-secret -n default -o yaml
apiVersion: v1
data:
ca.crt: LS0tLS1CRUdJTi...
namespace: ...
token: ZX...
...
왜 자동으로 Token이 생성되지 않는지 한참 헤메였는데...
알게 모르게 k8s 버전이 1.25로 바뀌었는데 그걸 모르고 클러스터 만들고 삽질을 했었네요...
여러분은 삽질하지 마시라고 공유해 드립니다!