728x90
Kubernetes 실습 :: Virtual Machine에서 Kubernetes 설치 (6) 대시보드 인증서 생성 Ver. 1 / Ver. 2
<Ver. 1>
- 권한 설정을 완료하였으나, 홈페이지에서 로그인 페이지가 뜨지 않아 방법만 정리 후, 간단하게 요약한 방법으로 인증서 설정 완료하였음.
- 따라서, 오류가 있는 완벽하지 않은 방법이니 절차 따라하지 않을 것.
- dashboard_rbac 디렉토리를 만들어 작업 진행
1. dashboard_rbac 디렉토리 생성
ubuntu@k8s-master:~$ mkdir dashboard_rbac
ubuntu@k8s-master:~$ ls
2163 cd Desktop Downloads Pictures pwd Templates
calico.yaml dashboard_rbac Documents Music Public snap Videos
ubuntu@k8s-master:~$ cd dashboard_rbac
2. dashboard-admin-user.yaml 생성
ubuntu@k8s-master:~/dashboard_rbac$ vi dashboard-admin-user.yaml
<vi 편집 내용>
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
3. ClusterRoleBinding-admin-user.yml 생성
ubuntu@k8s-master:~/dashboard_rbas$ vi ClusterRoleBinding-admin-user.yml
<vi 편집 내용>
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: kubernetes-dashboard
4. Kubernetes 대시보드 관리자 사용자 생성
ubuntu@k8s-master:~/dashboard_rbas$ kubectl apply -f dashboard-admin-user.yaml
serviceaccount/admin-user created
ubuntu@k8s-master:~/dashboard_rbas$ kubectl apply -f ClusterRoleBinding-admin-user.yml
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
5. 관리자 사용자 토큰 생성
ubuntu@k8s-master:~/dashboard_rbas$ kubectl -n kubernetes-dashboard get sa
NAME SECRETS AGE
admin-user 0 4m14s
default 0 20m
kubernetes-dashboard 0 20m
ubuntu@k8s-master:~/dashboard_rbas$ kubectl -n kubernetes-dashboard get serviceaccounts
NAME SECRETS AGE
admin-user 0 4m24s
default 0 20m
kubernetes-dashboard 0 20m
ubuntu@k8s-master:~/dashboard_rbas$ kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6ImI3MnZNUFdRVWM5Vmx6czBIRlM0Nk5ob0hWMFA0cnZqLThJNGNmSUh5U3cifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzA3OTg2MjEwLCJpYXQiOjE3MDc5ODI2MTAsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiYzIwYWQ1MDUtOTQ4My00YjE4LTk5MDMtZDExNDA3NWQzNTMxIn19LCJuYmYiOjE3MDc5ODI2MTAsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.EW-SCmnqP8PzuQsUHgtcwZ3d6pAKYXON9L3b5thRyTgNqZbHaw0mRGOLjNB-NujVx68iUgkaKXVN0sBEV_nGEjGrWFa5mVX1xPTSB-6HUz7nVEKiRWFsR4VS5ja8HXT6ugYXbKxycqTE3iK0GAiBjT8xUni0D2HP2qyL-UO1CnUGUi26u46BQzOu1w4y1iwtTHOjjFs_P3SYR6Fp2MVLhiv-RU50aB5nK1Yl9q1-wFY9bAe973JmONAjdlJTBJMYQrG5iMIoj2g9X81t-F4eWbUHyYud_eqsVr70CXiH0FYuaafTQVXtNbOQxipxHTLKOpo2LMIjO_-U6BJlnODnpQ
6. 대시보드에 액세스하기 위해 클라이언트 측 SSL 인증서 및 키 생성
ubuntu@k8s-master:~/dashboard_rbac$ grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
ubuntu@k8s-master:~/dashboard_rbac$ ls
ClusterRoleBinding-admin-user.yml dashboard-admin-user.yaml kubecfg.crt
>> ~/.kube/config 파일에서 클라이언트 측 SSL 인증서 데이터를 추출하고, 해당 데이터를 base64로 디코딩한 후 kubecfg.crt 파일에 추가
ubuntu@k8s-master:~/dashboard_rbac$ grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
>> ~/.kube/config 파일에서 클라이언트 측 SSL 키 데이터를 추출하고, 해당 데이터를 base64로 디코딩한 후 kubecfg.key 파일에 추가
ubuntu@k8s-master:~/dashboard_rbac$ ls
ClusterRoleBinding-admin-user.yml dashboard-admin-user.yaml kubecfg.crt kubecfg.key
ubuntu@k8s-master:~/dashboard_rbas$ openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-admin"
Warning: -clcerts option ignored with -export
Enter Export Password:
Verifying - Enter Export Password:
>> 인증서와 키를 사용하여 PKCS#12 포맷의 인증서 파일(kubecfg.p12)을 생성
ubuntu@k8s-master:~/dashboard_rbac$ ls
ClusterRoleBinding-admin-user.yml dashboard-admin-user.yaml kubecfg.crt kubecfg.key kubecfg.p12
ubuntu@k8s-master:~/dashboard_rbac$ sudo cp /etc/kubernetes/pki/ca.crt ./
[sudo] password for ubuntu:
ubuntu@k8s-master:~/dashboard_rbac$ ls
ca.crt ClusterRoleBinding-admin-user.yml dashboard-admin-user.yaml kubecfg.crt kubecfg.key kubecfg.p12
>> 클러스터의 CA 인증서를 현재 디렉토리로 복사 (대시보드에 접속할 때 사용)
7. 생성된 인증서를 통해 로그인
- 이 과정에서 등록은 되었으나 로그인 페이지가 뜨지 않아 과정 진행 중단
- PowerShell 관리자 권한으로 실행
- 처음 위치가 System32에 있기 때문에 User/amdin/dashboard_rbac으로 이동하여 진행
PS C:\\Users\\admin> scp -r ubuntu@192.168.56.100:/home/ubuntu/dashboard_rbac ./
ubuntu@192.168.56.100's password:
dashboard-admin-user.yaml 100% 99 27.8KB/s 00:00
ClusterRoleBinding-admin-user.yml 100% 271 108.9KB/s 00:00
kubecfg.crt 100% 1147 475.0KB/s 00:00
kubecfg.key 100% 1675 495.7KB/s 00:00
kubecfg.p12 100% 2644 702.3KB/s 00:00
ca.crt
PS C:\\Users\\admin> cd dashboard_rbac
PS C:\\Users\\admin\\dashboard_rbac> certutil.exe -addstore "Root" ca.crt
Root "신뢰할 수 있는 루트 인증 기관"
서명이 공개 키와 일치합니다.
"kubernetes" 인증서가 저장소에 추가되었습니다.
CertUtil: -addstore 명령이 성공적으로 완료되었습니다.
PS C:\\Users\\admin\\dashboard_rbac> certmgr.msc
8. 대시보드 페이지 접속 (오류)
- https://192.168.56.100:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login으로 접속
<Ver. 2> 쿠버네티스 인증서 간편 설치
1. 사용 명령어
ubuntu@k8s-master:~$ kubectl create -f <https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/dashboard-2.7.0/dashboard.yaml>
ubuntu@k8s-master:~$ kubectl create -f <https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/metrics-server-0.6.3/metrics-server.yaml>
<결과 확인>
2. 대시보드 접속 확인
- https://192.168.56.100:30000으로 접속
3. 토큰 생성
- 생성된 토큰을 통해 대시보드 접속해야 하기 때문에, 따로 메모해야 함
ubuntu@k8s-master:~/dashboard_rbac$ kubectl apply -f dashboard-admin-user.yaml
serviceaccount/admin-user created
ubuntu@k8s-master:~/dashboard_rbac$ kubectl apply -f ClusterRoleBinding-admin-user.yml
clusterrolebinding.rbac.authorization.k8s.io/admin-user unchanged
ubuntu@k8s-master:~/dashboard_rbac$ kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6ImI3MnZNUFdRVWM5Vmx6czBIRlM0Nk5ob0hWMFA0cnZqLThJNGNmSUh5U3cifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzA4MDQ3NDYzLCJpYXQiOjE3MDgwNDM4NjMsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiODAwYWNkYWYtMjM3Ni00Y2UyLWJiMGItMDljOTRiNjYyYzNiIn19LCJuYmYiOjE3MDgwNDM4NjMsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.ZEFuSTA_P156sJoQk0luT3b6fRN9MMXxud-nbHqRhdD3hE5PeeoVscCVdp2PXLDVg-CvluL6UrLn15n97vbGak1GkcWPzlVxrXc5f8wwBMyEpuIqXP7XhJ8_V0VQcUT05v1BXFdtdMblOz8qBIsquFrjhU0uHx-H2pEXFQHKGnmyoHXsY49RTC1KtyHEVBxBV4yktAZcy_onXEjpzl2iy5TWvSMHWvdl925Zih4KBlFk0mwVZLqHT1QmnBHJYH_lBI50AJvAdjNu8A9I4UevQCk5HEZzO8TD0pbNWsBNASgl5FuTRrXQgR1Bz6Ol3plCLGHEflVT2AYumoi_iS8ZKA
<dashboard-admin-user.yaml 내용>
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
<ClusterRoleBinding-admin-user.yml 내용>
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: kubernetes-dashboard
- 주기적으로 로그아웃 및 토큰이 만료되기 때문에 계속 생성해야 함
- kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6ImI3MnZNUFdRVWM5Vmx6czBIRlM0Nk5ob0hWMFA0cnZqLThJNGNmSUh5U3cifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzA4MDQ3NDYzLCJpYXQiOjE3MDgwNDM4NjMsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiODAwYWNkYWYtMjM3Ni00Y2UyLWJiMGItMDljOTRiNjYyYzNiIn19LCJuYmYiOjE3MDgwNDM4NjMsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.ZEFuSTA_P156sJoQk0luT3b6fRN9MMXxud-nbHqRhdD3hE5PeeoVscCVdp2PXLDVg-CvluL6UrLn15n97vbGak1GkcWPzlVxrXc5f8wwBMyEpuIqXP7XhJ8_V0VQcUT05v1BXFdtdMblOz8qBIsquFrjhU0uHx-H2pEXFQHKGnmyoHXsY49RTC1KtyHEVBxBV4yktAZcy_onXEjpzl2iy5TWvSMHWvdl925Zih4KBlFk0mwVZLqHT1QmnBHJYH_lBI50AJvAdjNu8A9I4UevQCk5HEZzO8TD0pbNWsBNASgl5FuTRrXQgR1Bz6Ol3plCLGHEflVT2AYumoi_iS8ZKA
4. 쿠버네티스 대시보드 접속
- 토큰을 붙여넣기 하여 로그인 진행
<접속 완료>
'클라우드 + DevOps > Kubernetes (k8s)' 카테고리의 다른 글
Kubernetes 실습 :: Kubernetes 대시보드 모니터링 실습 (2) 프로메테우스 모니터링 서비스 설치 (0) | 2024.04.14 |
---|---|
Kubernetes 실습 :: Kubernetes 대시보드 모니터링 실습 (1) (0) | 2024.04.13 |
Kubernetes 실습 :: Virtual Machine에서 Kubernetes 설치 (5) 대시보드 생성 (0) | 2024.04.11 |
Kubernetes 실습 :: Virtual Machine에서 Kubernetes 설치 (4) swap 영구 비활성화 (0) | 2024.04.10 |
Kubernetes 실습 :: Virtual Machine에서 Kubernetes 설치 (3) node 서버 생성 (0) | 2024.04.09 |