티스토리 뷰

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를 통해 전환할 수 있다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함