1.4. 고급 경로 생성
여러 유형의 TLS 종료를 사용하여 클라이언트에 인증서를 제공하는 기능으로 보안 경로를 생성할 수 있습니다. 다음 섹션에서는 사용자 정의 인증서를 사용하여 재암호화 에지 및 패스스루 경로를 생성하는 방법을 설명합니다.
1.4.1. 사용자 정의 인증서를 사용하여 엣지 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
oc create route 명령을 사용하면 엣지 TLS 종료와 사용자 정의 인증서로 보안 경로를 구성할 수 있습니다. 엣지 경로를 사용하면 Ingress 컨트롤러에서 트래픽을 대상 Pod로 전달하기 전에 TLS 암호화를 종료합니다. 이 경로는 Ingress 컨트롤러가 경로에 사용하는 TLS 인증서 및 키를 지정합니다.
이 절차에서는 사용자 정의 인증서 및 엣지 TLS 종료를 사용하여 Route 리소스를 생성합니다. 다음 예에서는 인증서/키 쌍이 현재 작업 디렉터리의 tls.crt 및 tls.key 파일에 있다고 가정합니다. 인증서 체인을 완료하는 데 필요한 경우 CA 인증서를 지정할 수도 있습니다. tls.crt, tls.key, ca.crt(옵션)에 실제 경로 이름을 사용하십시오. frontend에는 노출하려는 서비스 이름을 사용합니다. www.example.com을 적절한 호스트 이름으로 바꿉니다.
사전 요구 사항
- PEM 인코딩 파일에 인증서/키 쌍이 있고 해당 인증서가 경로 호스트에 유효해야 합니다.
- 인증서 체인을 완성하는 PEM 인코딩 파일에 별도의 CA 인증서가 있을 수 있습니다.
- 노출하려는 서비스가 있어야 합니다.
암호로 보호되는 키 파일은 지원되지 않습니다. 키 파일에서 암호를 제거하려면 다음 명령을 사용하십시오.
openssl rsa -in password_protected_tls.key -out tls.key
$ openssl rsa -in password_protected_tls.key -out tls.key
프로세스
엣지 TLS 종료 및 사용자 정의 인증서를 사용하여 보안
Route리소스를 생성합니다.oc create route edge --service=frontend --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=www.example.com
$ oc create route edge --service=frontend --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=www.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
Route리소스는 다음과 유사합니다.보안 경로의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 추가 옵션은
oc create route edge --help를 참조하십시오.
1.4.2. 사용자 정의 인증서를 사용하여 재암호화 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
oc create route 명령을 사용하여 사용자 정의 인증서와 함께 TLS 종료를 재암호화하여 보안 경로를 구성할 수 있습니다.
이 절차에서는 사용자 정의 인증서를 사용하여 Route 리소스를 생성하고 TLS 종료를 재암호화합니다. 다음 예에서는 인증서/키 쌍이 현재 작업 디렉터리의 tls.crt 및 tls.key 파일에 있다고 가정합니다. Ingress 컨트롤러에서 서비스의 인증서를 신뢰하도록 하려면 대상 CA 인증서도 지정해야 합니다. 인증서 체인을 완료하는 데 필요한 경우 CA 인증서를 지정할 수도 있습니다. tls.crt, tls.key, cacert.crt, ca.crt(옵션)에 실제 경로 이름을 사용하십시오. frontend에는 노출하려는 서비스 리소스 이름을 사용합니다. www.example.com을 적절한 호스트 이름으로 바꿉니다.
사전 요구 사항
- PEM 인코딩 파일에 인증서/키 쌍이 있고 해당 인증서가 경로 호스트에 유효해야 합니다.
- 인증서 체인을 완성하는 PEM 인코딩 파일에 별도의 CA 인증서가 있을 수 있습니다.
- PEM 인코딩 파일에 별도의 대상 CA 인증서가 있어야 합니다.
- 노출하려는 서비스가 있어야 합니다.
암호로 보호되는 키 파일은 지원되지 않습니다. 키 파일에서 암호를 제거하려면 다음 명령을 사용하십시오.
openssl rsa -in password_protected_tls.key -out tls.key
$ openssl rsa -in password_protected_tls.key -out tls.key
프로세스
재암호화 TLS 종료 및 사용자 정의 인증서를 사용하여 보안
Route리소스를 생성합니다.oc create route reencrypt --service=frontend --cert=tls.crt --key=tls.key --dest-ca-cert=destca.crt --ca-cert=ca.crt --hostname=www.example.com
$ oc create route reencrypt --service=frontend --cert=tls.crt --key=tls.key --dest-ca-cert=destca.crt --ca-cert=ca.crt --hostname=www.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
Route리소스는 다음과 유사합니다.보안 경로의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 자세한 옵션은
oc create route reencrypt --help를 참조하십시오.
1.4.3. 패스스루 라우팅 생성 링크 복사링크가 클립보드에 복사되었습니다!
oc create route 명령을 사용하면 패스스루 종료와 사용자 정의 인증서로 보안 경로를 구성할 수 있습니다. 패스스루 종료를 사용하면 암호화된 트래픽이 라우터에서 TLS 종료를 제공하지 않고 바로 대상으로 전송됩니다. 따라서 라우터에 키 또는 인증서가 필요하지 않습니다.
사전 요구 사항
- 노출하려는 서비스가 있어야 합니다.
프로세스
Route리소스를 생성합니다.oc create route passthrough route-passthrough-secured --service=frontend --port=8080
$ oc create route passthrough route-passthrough-secured --service=frontend --port=8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
Route리소스는 다음과 유사합니다.패스스루 종료를 사용하는 보안 경로
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 대상 Pod는 끝점의 트래픽에 대한 인증서를 제공해야 합니다. 현재 이 방법은 양방향 인증이라고도 하는 클라이언트 인증서도 지원할 수 있는 유일한 방법입니다.
1.4.4. Ingress 주석에서 대상 CA 인증서를 사용하여 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
Ingress 오브젝트에 route.openshift.io/destination-ca-certificate-secret 주석을 사용하여 사용자 정의 대상 CA 인증서로 경로를 정의할 수 있습니다.
사전 요구 사항
- PEM 인코딩 파일에 인증서/키 쌍이 있을 수 있습니다. 여기서 인증서가 경로 호스트에 유효합니다.
- 인증서 체인을 완성하는 PEM 인코딩 파일에 별도의 CA 인증서가 있을 수 있습니다.
- PEM 인코딩 파일에 별도의 대상 CA 인증서가 있어야 합니다.
- 노출하려는 서비스가 있어야 합니다.
프로세스
다음 명령을 입력하여 대상 CA 인증서에 대한 보안을 생성합니다.
oc create secret generic dest-ca-cert --from-file=tls.crt=<file_path>
$ oc create secret generic dest-ca-cert --from-file=tls.crt=<file_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들면 다음과 같습니다.
oc -n test-ns create secret generic dest-ca-cert --from-file=tls.crt=tls.crt
$ oc -n test-ns create secret generic dest-ca-cert --from-file=tls.crt=tls.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
secret/dest-ca-cert created
secret/dest-ca-cert createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ingress 주석에
route.openshift.io/destination-ca-certificate-secret을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이 주석은 kubernetes 시크릿을 참조합니다.
이 주석에서 참조된 시크릿은 생성된 경로에 삽입됩니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.5. 외부 관리형 인증서를 사용하여 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
경로 API의 .spec.tls.externalCertificate 필드를 사용하여 타사 인증서 관리 솔루션으로 OpenShift Container Platform 경로를 구성할 수 있습니다. 시크릿을 통해 외부 관리형 TLS 인증서를 참조할 수 있으므로 수동 인증서 관리가 필요하지 않습니다.
외부 관리형 인증서를 사용하면 오류를 줄여 인증서 업데이트를 원활하게 롤아웃하고 OpenShift 라우터에서 갱신된 인증서를 즉시 제공할 수 있습니다. 에지 경로 및 재암호화 경로 둘 다와 함께 외부 관리형 인증서를 사용할 수 있습니다.
사전 요구 사항
-
tls.key및tls.crt키가 모두 포함된kubernetes.io/tls유형의 PEM 인코딩 형식으로 유효한 인증서 또는 키 쌍을 포함하는 시크릿이 있어야 합니다. 예:$ oc create secret tls myapp-tls --cert=server.crt --key=server.key.
프로세스
다음 명령을 실행하여 라우터 서비스 계정 읽기 권한을 허용하기 위해 시크릿과 동일한 네임스페이스에
역할오브젝트를 생성합니다.oc create role secret-reader --verb=get,list,watch --resource=secrets --resource-name=<secret-name> \ --namespace=<current-namespace>
$ oc create role secret-reader --verb=get,list,watch --resource=secrets --resource-name=<secret-name> \ --namespace=<current-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<secret-name> : 시크릿의 실제 이름을 지정합니다. -
<current-namespace>: 시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
-
보안과 동일한 네임스페이스에
rolebinding오브젝트를 생성하고 다음 명령을 실행하여 라우터 서비스 계정을 새로 생성된 역할에 바인딩합니다.oc create rolebinding secret-reader-binding --role=secret-reader --serviceaccount=openshift-ingress:router --namespace=<current-namespace>
$ oc create rolebinding secret-reader-binding --role=secret-reader --serviceaccount=openshift-ingress:router --namespace=<current-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<current-namespace>: 시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
-
경로를정의하는 YAML 파일을 생성하고 다음 예제를 사용하여 인증서가 포함된 보안을 지정합니다.보안 경로에 대한 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<secret-name> : 시크릿의 실제 이름을 지정합니다.
-
다음 명령을 실행하여
경로리소스를 생성합니다.oc apply -f <route.yaml>
$ oc apply -f <route.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <route.yaml> : 생성된 YAML 파일 이름을 지정합니다.보안이 존재하고 인증서/키 쌍이 있는 경우 라우터는 모든 사전 요구 사항을 충족하는 경우 생성된 인증서를 제공합니다.
참고.spec.tls.externalCertificate가 제공되지 않으면 라우터에서 기본 생성된 인증서를 사용합니다..spec.tls.externalCertificate필드를 사용하는 경우.spec.tls.certificate필드 또는.spec.tls.key필드를 지정할 수 없습니다.
1.4.6. Ingress 오브젝트를 통해 기본 인증서를 사용하여 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
TLS 구성을 지정하지 않고 Ingress 오브젝트를 생성하면 OpenShift Container Platform에서 비보안 경로를 생성합니다. 기본 Ingress 인증서를 사용하여 보안 에지 종료 경로를 생성하는 Ingress 오브젝트를 생성하려면 다음과 같이 빈 TLS 구성을 지정할 수 있습니다.
사전 요구 사항
- 노출하려는 서비스가 있습니다.
-
OpenShift CLI(
oc)에 액세스할 수 있습니다.
프로세스
Ingress 오브젝트에 대한 YAML 파일을 생성합니다. 이 예제에서는 파일을
example-ingress.yaml이라고 합니다.Ingress 오브젝트의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 사용자 정의 인증서를 지정하지 않고 TLS를 지정하려면 이 정확한 구문을 사용합니다.
다음 명령을 실행하여 Ingress 오브젝트를 생성합니다.
oc create -f example-ingress.yaml
$ oc create -f example-ingress.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 OpenShift Container Platform에서 Ingress 오브젝트에 대한 예상 경로를 생성했는지 확인합니다.
oc get routes -o yaml
$ oc get routes -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow