14.5. 사용자 정의 도메인 Ingress 컨트롤러 생성
사용자 정의 도메인 Ingress 컨트롤러의 인증서를 프로비저닝하도록 인증서 리소스를 생성하고 구성합니다.
참고다음 예제에서는 단일 도메인 인증서를 사용합니다. SAN 및 와일드카드 인증서도 지원됩니다.
$ cat << EOF | oc apply -f - apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: custom-domain-ingress-cert namespace: openshift-ingress spec: secretName: custom-domain-ingress-cert-tls issuerRef: name: letsencrypt-production kind: ClusterIssuer commonName: "${DOMAIN}" dnsNames: - "${DOMAIN}" EOF
인증서가 발행되었는지 확인합니다.
참고Let's Encrypt에서 이 인증서를 발급하는 데 몇 분이 걸립니다. 5분 이상 걸리는 경우
oc -n openshift-ingress describe certificate.cert-manager.io/custom-domain-ingress-cert
를 실행하여 cert-manager에서 보고한 모든 문제를 확인합니다.$ oc -n openshift-ingress get certificate.cert-manager.io/custom-domain-ingress-cert
출력 예
NAME READY SECRET AGE custom-domain-ingress-cert True custom-domain-ingress-cert-tls 9m53s
새
IngressController
리소스를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: custom-domain-ingress namespace: openshift-ingress-operator spec: domain: ${DOMAIN} defaultCertificate: name: custom-domain-ingress-cert-tls endpointPublishingStrategy: loadBalancer: dnsManagementPolicy: Unmanaged providerParameters: aws: type: NLB type: AWS scope: External type: LoadBalancerService EOF
주의이
IngressController
예제에서는 AWS 계정에서 인터넷에 액세스할 수 있는 NLB(Network Load Balancer)를 생성합니다. 대신 내부 NLB를 프로비저닝하려면IngressController
리소스를 생성하기 전에.spec.endpointPublishingStrategy.loadBalancer.scope
매개변수를Internal
로 설정합니다.사용자 정의 도메인 IngressController가 외부 로드 밸런서를 성공적으로 생성했는지 확인합니다.
$ oc -n openshift-ingress get service/router-custom-domain-ingress
출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-custom-domain-ingress LoadBalancer 172.30.174.34 a309962c3bd6e42c08cadb9202eca683-1f5bbb64a1f1ec65.elb.us-east-1.amazonaws.com 80:31342/TCP,443:31821/TCP 7m28s
사용자 정의 도메인 Ingress 컨트롤러에 대한 DNS 확인을 활성화하기 위해 필요한 DNS 변경 사항이 포함된 문서를 준비합니다.
$ INGRESS=$(oc -n openshift-ingress get service/router-custom-domain-ingress -ojsonpath="{.status.loadBalancer.ingress[0].hostname}") $ cat << EOF > "${SCRATCH}/create-cname.json" { "Comment":"Add CNAME to custom domain endpoint", "Changes":[{ "Action":"CREATE", "ResourceRecordSet":{ "Name": "*.${DOMAIN}", "Type":"CNAME", "TTL":30, "ResourceRecords":[{ "Value": "${INGRESS}" }] } }] } EOF
승인을 위해 Amazon Route 53에 변경 사항을 제출합니다.
$ aws route53 change-resource-record-sets \ --hosted-zone-id ${ZONE_ID} \ --change-batch file://${SCRATCH}/create-cname.json
참고와일드카드 CNAME 레코드는 사용자 정의 도메인 Ingress 컨트롤러를 사용하여 배포하는 모든 새 애플리케이션에 대해 새 레코드를 생성할 필요가 없지만 이러한 각 애플리케이션에서 사용하는 인증서는 와일드카드 인증서가 아닙니다.