티스토리 뷰
1. 사용자 등록 및 승인
- 'jane'이라는 승인할 때 쿠버네티스에 등록하자
1) 생성과정
(1) 개인키 및 CSR 생성
##개인키 생성
openssl genrsa -out jane.key 2048
##CSR 생성
openssl req -new -key jane.key -out jane.csr -subj "/CN=jane/O=developers"
(2)CSR 제출
##jane-csr.yaml 파일 등록
kubectl apply -f jane-csr.yaml
##jane-csr.yaml
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: jane
spec:
request: $(cat jane.csr | base64 | tr -d '\n')
signerName: kubernetes.io/kube-apiserver-client
usages:
- client auth
- `request` : jane.csr 파일을 base64로 인코딩 한뒤, tr -d '₩n'을 하여 한 라인으로 만든다. (줄바꿈으로 문제가 생길수도 있어 tr로 없앰)
(3)CSR 승인
##jane 인증서 조회
kubectl get csr
##jane 인증서 등록
kubectl certificate approve jane
- API 서버에 jane-csr 인증서를 등록한다.
(4) 인증서 다운로드
- 필요할 때, 인증서를 발급하여 다운로드 한다.
kubectl get csr jane -o jsonpath='{.status.certificate}' | base64 -d > jane.crt
(5) 사용자 추가
-kubeconfig에 사용자를 등록한다.
##jane 사용자 등록
kubectl config set-credentials jane \
--client-certificate=jane.crt \
--client-key=jane.key \
--embed-certs=true
- 필요한 인증서와 키를 같이 등록한다.
- embed-certs를 통해 인증서와 키를 kubeconfig 파일에 직접 포함시킨다.
2. Kubeconfig
1) Kubeconfig란?
(1) 정의
- kubeconfig: 쿠버네티스가 클러스터와 통신하기 위한 설정 파일
- 기본적으로 `$HOME/.kube/config`경로에 저장되며, 여러 클러스터와 사용자를 관리할 수 있는 정보를
포함
(2) 주요 구성 요소:
- 클러스터 정보: API 서버 주소 및 CA 인증서
- 사용자 정보: 클라이언트 인증서, 키 또는 토큰
- 컨텍스트: 사용자, 클러스터, 네임스페이스 간의 관계 정의
2) 파일 구조
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority: /etc/kubernetes/pki/ca.crt
server: https://kube-apiserver:6443
name: kubernetes
users:
- name: kubernetes-admin
user:
client-certificate: /etc/kubernetes/pki/admin.crt
client-key: /etc/kubernetes/pki/admin.key
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
namespace: default
name: admin-context
current-context: admin-context
- 구성 요소 설명
(1) clusters:
- Kubernetes API 서버에 대한 정보를 정의
- `certificate-authority`: API서버의 신뢰성을 검증하기 위한 ca 인증서 경로
- `server`: API 서버의 URL
- `name`: 클러스터 이름
(2) users:
- Kubernetest API 서버에 접근하기 위한 사용자 인증정보를 정의
- `client-certificate`: 사용자의 공개 인증서 경로
- `client-key`: 사용자의 개인 키 경로
(3) contexts:
- 사용자와 클러스터 간의 관계를 정의하며, 기본 네임스페이스를 설정할 수 있다.
- `cluster`: 연결할 클러스터 이름(API서버 클러스터와 연결함)
- `user`: 연결할 사용장 이름
- `namespace`: 기본적으로 사용할 네임스페이스
(4) current context
- 현재 활성화된 컨텍스트를 지정
2) kubeconfig 파일의 활용
(1) 다중 클러스터 관리
- kubeconfig는 여러 클러스터와 사용자 정보를 하나의 파일에 저장
- 각 클러스터와 사용자를 구분하여 작업환경(컨텍스트)을 쉽게 전환 가능
(2) 보안 관리
- TLS 기반 인증서,키를 사용하여 안전한 통신을 보장
- config를 통해 설정 중앙화 관리
(3) 환경변수를 활용한 적절한 설정 변경
- 특정 kubeconfig 파일을 명시적으로 지정하여 사용 가능
export KUBECONFIG=/path/to/custom-kubeconfig.yaml
3) 사용자 추가시 kubeconfig에 등록
-이전에 jane 사용자 추가했을때, kubeconfig에 jane이 클러스터에 접근하기 위한 컨텍스트를 설정해야한다.
(1) 생성과정
- csr까지 등록했다는 가정한다.
## CSR 등록한 후에 진행
kubectl config set-credentials jane \
--client-certificate=jane.crt \
--client-key=jane.key \
--embed-certs=true
kubectl config set-context jane-context \
--cluster=kubernetes \
--namespace=default \
--user=jane
kubectl config use-context jane-context
- 'jane' 사용자를 등록한 뒤, jane이 작업을 할 수 있는 환경(컨텍스트)를 구성한다.
- jane-context를 kubernetes API server(--cluster=kubernetest)에 등록한다. 그리고 사용할 수 있는 사용자를 jane임을 명시한다.
- 그리고 jane 이 작업할 수 있는 환경을 kubectl config use-context jane-context를 통해 전환할 수 있다.
'쿠버네티스' 카테고리의 다른 글
[쿠버네티스] 7.보안 (4) 승인 (0) | 2024.12.13 |
---|---|
[쿠버네티스] 7. 보안 (3) API 그룹들, kubectl proxy (0) | 2024.12.13 |
[쿠버네티스] 7. 보안 (1)PKI (0) | 2024.12.13 |
[쿠버네티스] 6. Cluster Maintenace 3) 백업과 복원 (0) | 2024.12.13 |
[쿠버네티스] 6. Cluseter Maintanence 2) 쿠버네티스 Release, Version (0) | 2024.12.13 |