9.9. cert-manager Operator for Red Hat OpenShift를 사용하여 경로 보안
OpenShift Container Platform에서 경로 API는 시크릿을 통해 TLS 인증서를 참조하는 구성 가능한 옵션을 제공하도록 확장됩니다. 외부 관리형 인증서 를 활성화하면 수동 조작으로 인한 오류를 최소화하고 인증서 관리 프로세스를 간소화하며 OpenShift Container Platform 라우터에서 참조된 인증서를 즉시 제공할 수 있습니다.
9.9.1. 클러스터의 경로를 보호하도록 인증서 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계에서는 Let's Encrypt ACME HTTP-01 챌린지 유형과 함께 cert-manager Operator for Red Hat OpenShift를 사용하여 OpenShift Container Platform 클러스터의 경로 리소스를 보호하는 프로세스를 보여줍니다.
사전 요구 사항
- Red Hat OpenShift용 cert-manager Operator 버전 1.14.0 이상을 설치했습니다.
-
경로
생성
및 업데이트 모두에 사용되는routes/custom-host
하위 리소스에 대한 생성 권한이 있습니다. -
노출하려는
서비스
리소스가 있습니다.
프로세스
다음 명령을 실행하여 HTTP-01 솔러를 구성할
Issuer
를 만듭니다. 다른 ACME 발행자 유형의 경우 "ACME an issuer 구성"을 참조하십시오.Issuer.yaml
파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Issuer
가 있는 네임스페이스를 지정합니다. 경로의 네임스페이스와 동일해야 합니다.
다음 명령을 실행하여 경로에 대한
인증서
오브젝트를 생성합니다.secretName
은 cert-manager에서 발행하고 관리할 TLS 시크릿을 지정하고 다음 단계에서 경로에서도 참조합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 참조된 시크릿을 읽을 수 있는 라우터 서비스 계정 권한을 제공하는
역할
을 생성합니다.oc create role secret-reader \ --verb=get,list,watch \ --resource=secrets \ --resource-name=<secret_name> \ --namespace=<namespace>
$ oc create role secret-reader \ --verb=get,list,watch \ --resource=secrets \ --resource-name=<secret_name> \
1 --namespace=<namespace>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 새로 생성된
Role
리소스와 라우터 서비스 계정을 바인딩할RoleBinding
리소스를 생성합니다.oc create rolebinding secret-reader-binding \ --role=secret-reader \ --serviceaccount=openshift-ingress:router \ --namespace=<namespace>
$ oc create rolebinding secret-reader-binding \ --role=secret-reader \ --serviceaccount=openshift-ingress:router \ --namespace=<namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
다음 명령을 실행하여 엣지 TLS 종료 및 사용자 지정 호스트 이름을 사용하는 서비스 리소스의 경로를 생성합니다. 호스트 이름은 다음 단계에서
인증서
리소스를 생성할 때 사용됩니다.oc create route edge <route_name> \ --service=<service_name> \ --hostname=<hostname> \ --namespace=<namespace>
$ oc create route edge <route_name> \
1 --service=<service_name> \
2 --hostname=<hostname> \
3 --namespace=<namespace>
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 경로의
.spec.tls.externalCertificate
필드를 업데이트하여 이전에 생성된 보안을 참조하고 다음 명령을 사용하여 cert-manager에서 발급한 인증서를 사용합니다.oc patch route <route_name> \ -n <namespace> \ --type=merge \ -p '{"spec":{"tls":{"externalCertificate":{"name":"<secret_name>"}}}}'
$ oc patch route <route_name> \
1 -n <namespace> \
2 --type=merge \ -p '{"spec":{"tls":{"externalCertificate":{"name":"<secret_name>"}}}}'
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 인증서가 생성되고 사용할 준비가 되었는지 확인합니다.
oc get certificate -n <namespace> oc get secret -n <namespace>
$ oc get certificate -n <namespace>
1 $ oc get secret -n <namespace>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 라우터에서 참조된 외부 인증서를 사용하고 있는지 확인합니다. 명령은 상태 코드
200 OK
와 함께 반환되어야 합니다.curl -IsS https://<hostname>
$ curl -IsS https://<hostname>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 경로의 호스트 이름을 지정합니다.
다음 명령을 실행하여 서버 인증서의
subject
,subjectAltName
,issuer
가 모두 curl verbose 출력에서 예상대로 표시되는지 확인합니다.curl -v https://<hostname>
$ curl -v https://<hostname>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 경로의 호스트 이름을 지정합니다.
이제 경로는 cert-manager가 발행한 참조 시크릿의 인증서로 성공적으로 보호됩니다. cert-manager는 인증서의 라이프 사이클을 자동으로 관리합니다.