Kubernetes Cluster Secrets TOKEN 생성 방법

작성자 이경미 수정일 2022-12-28 11:33

들어가며

  • K8S의 클러스터의 API와 통신하기 위한 secrets TOKEN 을 생성하는 방법에 대해 알 수 있습니다. 
  • 스파클링소다 설치 시 default TOKEN 이 생성됩니다. 해당 TOKEN을 그대로 활용하시는걸 권장드립니다.
 


내용

default token 조회

token 에 대한 uuid 는 클러스터마다 다르므로 주의합니다.


1. devai-cluster SECRETS

아래와 같이 클러스터 내에 생성된 기본 토큰값을 확인할 수 있습니다. 

kubectl get secrets | grep default
default-token-ps89x         kubernetes.io/service-account-token   3      202d

 

2. kube-system SECRETS
kubectl get secrets -nkube-system| grep default
default-token-zmnk7                                    kubernetes.io/service-account-token   3      202d


3. Token 값 출력

: 해당 시크릿 값을 복사하여 명령어에 대입하시면 TOKEN 출력이 가능합니다. token 값은 클러스터마다 상이합니다. 
1. devai-cluster TOKEN
# kubectl describe secret default-token-XXXXX  | grep -E '^token' | cut -f2 -d':' | tr -d " "

kubectl describe secret default-token-ps89x  | grep -E '^token' | cut -f2 -d':' | tr -d " "
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZXZhaS1jbHVzdGVyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tcHM4OXgiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImFjNWI0NDM5LWU3MDktMTFlYy1hMDE3LTAwMGMyOTUzMWE1ZCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZXZhaS1jbHVzdGVyOmRlZmF1bHQifQ.R822yUxC_YnmZ-
... 중략 ...


2. kube-system TOKEN
# kubectl describe secret default-token-XXXXX -nkube-system | grep -E '^token' | cut -f2 -d':' | tr -d " "

kubectl describe secret default-token-zmnk7 -nkube-system | grep -E '^token' | cut -f2 -d':' | tr -d " "
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXptbms3Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI4YTYyNmJkNC1lNzA5LTExZWMtYTAxNy0wMDBjMjk1MzFhNWQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.JhkD5exPs9FXrGFsgs1IC0c4LaX66QWFQG7JyUonC6Pit0i1VARFwscaBIxHxUAiKxVwjlQhL4KX96czdvgHZk6CmwxRBQeUs_s7UgdY5XLLZz6LpHk9WlOEavAP1uuXyDV_0mnIV5ZKLnijEftqN_qpRIQex8QD4vMKqLSkVyUaMSqYadLvLcltCa5DRVGiWrwJBfoiv5ougklJN8ih3Qb6CdMoSGNeweArBEDW-amohKbnsO37-LwUjZB-kDcFAa5kluq2rI1G7P0a63pjhfJz4lARv1KmtW4Ae3bMwdJmjHwp5VVHefbYVpieHwFk1vAE7BEGrDfXysJY92llTA


API 통신 확인 방법

해당 토큰값을 통해 API통신이 실제로 동작하는지 테스트하는 간단한 방법은 마스터 노드에서 아래명령어를 순차적으로 입력한 뒤 확인할 수 있습니다. 
APISERVER=$(kubectl config view --minify | grep server | cut -f 2- -d ":" | tr -d " ")
SECRET_NAME=$(kubectl get secrets | grep ^default | cut -f1 -d ' ')
TOKEN=$(kubectl describe secret $SECRET_NAME | grep -E '^token' | cut -f2 -d':' | tr -d " ")
curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "192.168.100.160:6443"
    }
  ]
}

아래와 같이 비슷한 결과값이 출력되면 수집 된 TOKEN이 K8S 클러스터에  API서버에 통신 가능함을 의미합니다.

{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "192.168.100.160:6443"
    }
  ]
}


아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300