PaaS/Kubernetes

kubernetes-dashboard용 Service Account를 만들자

armyost 2022. 12. 23. 14:01
728x90

Kubernetes 권한관리는 기본적으로 RBAC로 Service Account에 따라서 정보노출이 다르다.

 

Kubernetes 엔진 버전이 올라갈 수록 과거에 쉽게 접근하였던 cluster-admin 권한이 수동적으로 바뀌는것 같다. 

 

따라서 cluster admin 권한의 계정을 만들고 이것으로 kubernetes-dashboard를 들어가자

 

우선 ServiceAccount, ClusterRoleBinding, Secret 리소스를 만들자

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
secrets:
  - name: admin-user-secret
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
---
apiVersion: v1
kind: Secret
metadata:
  name: admin-user-secret
  namespace: kube-system
  annotations:
    kubernetes.io/service-account.name: admin-user
type: kubernetes.io/service-account-token

이렇게 만들면 Service Account에 Cluster admin Role이 매핑되고 Secret이 붙는다. 

 

해당 Secret이 잘붙었는지 확인한다.

$ kubectl get sa admin-user -n kube-system

 

그리고 해당 Secret의 Token을 복사해둔다.

$ kubectl describe secrets admin-user-secret -n kube-system

 

복사한 Secret으로 config파일을 만들어서 이 파일로 Kubernetes-Dashboard를 로그인하자

 

파일 내용 : 

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTXXXXXXXXXX
    server: https://127.0.0.1:6443
name: admin-user@cluster.local
contexts:
- context:
    cluster: cluster.local
    user: admin-user

kind: Config
preferences: {}
users:
- name: admin-user
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: eyJhbGciOiJSUXXXXXXXXXXXXXXXXXXX