2.6.4. 보안이 포함된 서명된 인증서 사용 정보
서비스에 대한 통신을 보호하려면 프로젝트의 보안에 추가할 수 있는 서명된 제공 인증서/키 쌍을 생성하도록 OpenShift Container Platform을 구성하면 됩니다.
서비스 제공 인증서 보안은 즉시 사용 가능한 인증서가 필요한 복잡한 미들웨어 애플리케이션을 지원하기 위한 것입니다. 해당 설정은 관리자 툴에서 노드 및 마스터에 대해 생성하는 서버 인증서와 동일합니다.
서비스 Pod
사양은 서비스 제공 인증서 보안에 대해 구성됩니다.
apiVersion: v1
kind: Service
metadata:
name: registry
annotations:
service.beta.openshift.io/serving-cert-secret-name: registry-cert1
# ...
- 1
- 인증서 이름을 지정합니다.
기타 Pod는 해당 Pod에 자동으로 마운트되는 /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt 파일의 CA 번들을 사용하여 내부 DNS 이름에만 서명되는 클러스터 생성 인증서를 신뢰할 수 있습니다.
이 기능의 서명 알고리즘은 x509.SHA256WithRSA
입니다. 직접 교대하려면 생성된 보안을 삭제합니다. 새 인증서가 생성됩니다.
2.6.4.1. 보안과 함께 사용할 서명된 인증서 생성
Pod와 함께 서명된 제공 인증서/키 쌍을 사용하려면 서비스를 생성하거나 편집하여 service.beta.openshift.io/serving-cert-secret-name
주석을 추가한 다음 포드에 보안을 추가합니다.
절차
서비스 제공 인증서 보안을 생성하려면 다음을 수행합니다.
-
서비스에 대한
Pod
사양을 편집합니다. 보안에 사용할 이름으로
service.beta.openshift.io/serving-cert-secret-name
주석을 추가합니다.kind: Service apiVersion: v1 metadata: name: my-service annotations: service.beta.openshift.io/serving-cert-secret-name: my-cert 1 spec: selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 9376
인증서 및 키는 PEM 형식이며 각각
tls.crt
및tls.key
에 저장됩니다.서비스를 생성합니다.
$ oc create -f <file-name>.yaml
보안이 생성되었는지 확인합니다.
모든 보안 목록을 확인합니다.
$ oc get secrets
출력 예
NAME TYPE DATA AGE my-cert kubernetes.io/tls 2 9m
보안에 대한 세부 정보를 확인합니다.
$ oc describe secret my-cert
출력 예
Name: my-cert Namespace: openshift-console Labels: <none> Annotations: service.beta.openshift.io/expiry: 2023-03-08T23:22:40Z service.beta.openshift.io/originating-service-name: my-service service.beta.openshift.io/originating-service-uid: 640f0ec3-afc2-4380-bf31-a8c784846a11 service.beta.openshift.io/expiry: 2023-03-08T23:22:40Z Type: kubernetes.io/tls Data ==== tls.key: 1679 bytes tls.crt: 2595 bytes
해당 보안을 사용하여
Pod
사양을 편집합니다.apiVersion: v1 kind: Pod metadata: name: my-service-pod spec: containers: - name: mypod image: redis volumeMounts: - name: foo mountPath: "/etc/foo" volumes: - name: foo secret: secretName: my-cert items: - key: username path: my-group/my-username mode: 511
사용 가능한 경우 Pod가 실행됩니다. 인증서는 내부 서비스 DNS 이름인
<service.name>.<service.namespace>.svc
에 적합합니다.인증서/키 쌍은 만료 시기가 다가오면 자동으로 교체됩니다. 보안의
service.beta.openshift.io/expiry
주석에서 RFC3339 형식으로 된 만료 날짜를 확인합니다.참고대부분의 경우 서비스 DNS 이름
<service.name>.<service.namespace>.svc
는 외부에서 라우팅할 수 없습니다.<service.name>.<service.namespace>.svc
는 주로 클러스터 내 또는 서비스 내 통신과 경로 재암호화에 사용됩니다.