1.13.4. 외부 인증 기관 키 및 인증서 추가
기본적으로 Red Hat OpenShift Service Mesh는 자체 서명된 루트 인증서와 키를 생성하고 이를 사용하여 워크로드 인증서에 서명합니다. 사용자 정의 인증서 및 키를 사용하여 사용자 정의 루트 인증서로 워크로드 인증서에 서명할 수도 있습니다. 이 작업은 인증서와 키를 서비스 메시에 연결하는 예제를 보여줍니다.
사전 요구 사항
- 인증서를 구성하려면 상호 TLS가 활성화된 Red Hat OpenShift Service Mesh를 설치합니다.
- 이 예제에서는 Maistra 리포지토리의 인증서를 사용합니다. 프로덕션의 경우 인증 기관의 자체 인증서를 사용합니다.
- 이러한 지침으로 결과를 확인하려면 Bookinfo 샘플 애플리케이션을 배포합니다.
- 인증서를 확인하려면 OpenSSL이 필요합니다.
1.13.4.1. 기존 인증서 및 키 추가
기존 서명(CA) 인증서 및 키를 사용하려면 CA 인증서, 키, 루트 인증서가 포함된 신뢰 파일 체인을 생성해야 합니다. 해당 인증서 각각에 대해 다음과 같은 정확한 파일 이름을 사용해야 합니다. CA 인증서를 ca-cert.pem
, 키는 ca-key.pem
이라고 합니다. ca-cert.pem
을 서명하는 루트 인증서는 root-cert.pem
이라고 합니다. 워크로드에서 중개 인증서를 사용하는 경우 cert-chain.pem
파일에 인증서를 지정해야 합니다.
-
Maistra 리포지토리에서 로컬로 예제 인증서를 저장하고
<path>
를 인증서 경로로 바꿉니다. 입력 파일
ca-cert.pem
,ca-key.pem
,root-cert.pem
및cert-chain.pem
을 포함하는cacert
라는 시크릿을 생성합니다.$ oc create secret generic cacerts -n istio-system --from-file=<path>/ca-cert.pem \ --from-file=<path>/ca-key.pem --from-file=<path>/root-cert.pem \ --from-file=<path>/cert-chain.pem
ServiceMeshControlPlane
리소스에서spec.security.dataPlane.mtls true
를true
로 설정하고 다음 예와 같이certificateAuthority
필드를 구성합니다. 기본rootCADir
는/etc/cacerts
입니다. 키와 인증서가 기본 위치에 마운트된 경우privateKey
를 설정할 필요가 없습니다. 서비스 메시는 secret-mount 파일에서 인증서와 키를 읽습니다.apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane spec: security: dataPlane: mtls: true certificateAuthority: type: Istiod istiod: type: PrivateKey privateKey: rootCADir: /etc/cacerts
cacert
시크릿을 생성/변경/삭제한 후 Service Mesh Control Planeistiod
및게이트웨이
pod를 다시 시작해야 변경 사항이 적용됩니다. 다음 명령을 사용하여 Pod를 재시작합니다.$ oc -n istio-system delete pods -l 'app in (istiod,istio-ingressgateway, istio-egressgateway)'
Operator는 삭제된 후 Pod를 자동으로 다시 생성합니다.
사이드카 프록시가 시크릿 변경 사항을 선택하도록 bookinfo 애플리케이션 Pod를 다시 시작합니다. 다음 명령을 사용하여 Pod를 재시작합니다.
$ oc -n bookinfo delete pods --all
출력은 다음과 유사합니다.
pod "details-v1-6cd699df8c-j54nh" deleted pod "productpage-v1-5ddcb4b84f-mtmf2" deleted pod "ratings-v1-bdbcc68bc-kmng4" deleted pod "reviews-v1-754ddd7b6f-lqhsv" deleted pod "reviews-v2-675679877f-q67r2" deleted pod "reviews-v3-79d7549c7-c2gjs" deleted
Pod가 생성되고 다음 명령을 사용하여 준비되었는지 확인합니다.
$ oc get pods -n bookinfo