들어가며
- 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" } ] }
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.