The Cluster API Book
사용자 지정 인증서 사용
Cluster API는 부트스트래핑에 사용되는 인증서와 키가 아래 규칙을 따를 것으로 예상한다. CABPK는 아직 존재하지 않는 경우 이 규칙을 사용하여 새 인증서를 생성한다.
각 인증서는 다음 중 하나의 이름을 가진 시크릿으로 저장해야 한다.
이름 | 유형 | 예 |
---|---|---|
[cluster name]-ca | CA | openssl req -x509 -subj “/CN=Kubernetes API” -new -newkey rsa:2048 -nodes -keyout tls.key -sha256 -days 3650 -out tls.crt |
[cluster name]-etcd | CA | openssl req -x509 -subj “/CN=ETCD CA” -new -newkey rsa:2048 -nodes -keyout tls.key -sha256 -days 3650 -out tls.crt |
[cluster name]-proxy | CA | openssl req -x509 -subj “/CN=Front-End Proxy” -new -newkey rsa:2048 -nodes -keyout tls.key -sha256 -days 3650 -out tls.crt |
[cluster name]-sa | Key Pair | openssl genrsa -out tls.key 2048 && openssl rsa -in tls.key -pubout -out tls.crt |
CA Key Age
CA 인증서 교환은 중요하지 않으므로 수명이 긴 CA를 생성하거나 중간 CA가 짧은 긴 루트/오프라인 CA를 사용하는 것이 좋습니다.
예
apiVersion: v1 kind: Secret metadata: name: cluster1-ca type: kubernetes.io/tls data: tls.crt: <base 64 encoded PEM> tls.key: <base 64 encoded PEM>
자신의 CA를 사용하여 Kubeconfig 생성
- system:masters Kubernetes 역할에 대한 새 Certificate Signing Request (CSR)을 생성하거나 CN 아래에 다른 역할을 지정한다.
openssl req -subj "/CN=system:masters" -new -newkey rsa:2048 -nodes -out admin.csr -keyout admin.key -out admin.csr
- [cluster-name]-ca 키를 사용하여 CSR 서명:
openssl x509 -req -in admin.csr -CA tls.crt -CAkey tls.key -CAcreateserial -out admin.crt -days 5 -sha256
- 서명 키로 kubeconfig 업데이트
kubectl config set-credentials cluster-admin --client-certificate=admin.crt --client-key=admin.key --embed-certs=true