6.3. Operator를 사용한 인증서 주입
OpenShift Container Platform에서 Operator를 사용한 인증서 삽입은 사용자 정의 CA(인증 기관)를 시스템 인증서와 병합하고 이를 요청하는 Operator에 병합된 번들을 삽입합니다. Operator에서 수동 인증서 번들 관리 없이도 사용자 정의 인증서를 신뢰하도록 이 기능을 사용할 수 있습니다.
config.openshift.io/inject-trusted-cabundle="true" 레이블을 구성 맵에 추가하면 기존 데이터가 삭제됩니다. CNO(Cluster Network Operator)는 구성 맵의 소유권을 가지며 ca-bundle 만 데이터로만 허용합니다. service.beta.openshift.io/inject-cabundle=true 주석 또는 유사한 구성을 사용하여 별도의 구성 맵을 사용하여 service-ca.crt 를 저장해야 합니다. 동일한 구성 맵에 config.openshift.io/inject-trusted-cabundle="true" 레이블 및 service.beta.openshift.io/inject-cabundle=true 주석을 추가하면 문제가 발생할 수 있습니다.
Operator는 다음 라벨이 있는 빈 ConfigMap을 생성하여 이러한 주입을 요청합니다.
config.openshift.io/inject-trusted-cabundle="true"
빈 ConfigMap의 예:
apiVersion: v1
data: {}
kind: ConfigMap
metadata:
labels:
config.openshift.io/inject-trusted-cabundle: "true"
name: ca-inject
namespace: apache
다음과 같습니다.
metadata.name- 빈 ConfigMap 이름을 지정합니다.
Operator는 이 ConfigMap을 컨테이너의 로컬 신뢰 저장소에 마운트합니다.
신뢰할 수 있는 CA 인증서를 추가하는 작업은 인증서가 RHCOS(Red Hat Enterprise Linux CoreOS) 신뢰 번들에 포함되지 않은 경우에만 필요합니다.
Operator는 제한 없이 인증서를 주입할 수 있습니다. config.openshift.io/inject-trusted-cabundle=true 라벨을 사용하여 비어있는 ConfigMap이 생성되면 CNO(Cluster Network Operator)에서 모든 네임스페이스에 인증서를 주입합니다.
ConfigMap은 모든 네임스페이스에 상주할 수 있지만 사용자 정의 CA가 필요한 Pod 내의 각 컨테이너에 볼륨으로 마운트해야 합니다. 예를 들면 다음과 같습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-example-custom-ca-deployment
namespace: my-example-custom-ca-ns
spec:
...
spec:
...
containers:
- name: my-container-that-needs-custom-ca
volumeMounts:
- name: trusted-ca
mountPath: /etc/pki/ca-trust/extracted/pem
readOnly: true
volumes:
- name: trusted-ca
configMap:
name: ca-inject
items:
- key: ca-bundle.crt
path: tls-ca-bundle.pem
다음과 같습니다.
volumes.items.key- ConfigMap 키를 지정합니다.
volumes.items.path- ConfigMap 경로를 지정합니다.