9.9. cert-manager Operator for Red Hat OpenShift를 사용하여 경로 보안


OpenShift Container Platform에서 경로 API는 시크릿을 통해 TLS 인증서를 참조하는 구성 가능한 옵션을 제공하도록 확장됩니다. 외부 관리형 인증서 를 활성화하면 수동 조작으로 인한 오류를 최소화하고 인증서 관리 프로세스를 간소화하며 OpenShift Container Platform 라우터에서 참조된 인증서를 즉시 제공할 수 있습니다.

중요

cert-manager Operator for Red Hat OpenShift를 사용하여 경로를 보호하는 것은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

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 이상을 설치했습니다.
  • RouteExternalCertificate 기능 게이트를 활성화했습니다.
  • routes/custom-host 하위 리소스에 대한 생성업데이트 권한이 있습니다.
  • 노출하려는 서비스 리소스가 있습니다.

프로세스

  1. 다음 명령을 실행하여 HTTP-01 솔러를 구성할 Issuer 를 만듭니다. 다른 ACME 발행자 유형의 경우 "ACME an issuer 구성"을 참조하십시오.

    Issuer.yaml 파일 예

    $ oc create -f - << EOF
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: letsencrypt-acme
      namespace: <namespace> 
    1
    
    spec:
      acme:
        server: https://acme-v02.api.letsencrypt.org/directory
        privateKeySecretRef:
          name: letsencrypt-acme-account-key
        solvers:
          - http01:
              ingress:
                ingressClassName: openshift-default
    EOF
    Copy to Clipboard Toggle word wrap

    1
    Issuer가 있는 네임스페이스를 지정합니다. 경로의 네임스페이스와 동일해야 합니다.
  2. 다음 명령을 실행하여 경로에 대한 인증서 오브젝트를 생성합니다. secretName 은 cert-manager에서 발행하고 관리할 TLS 시크릿을 지정하고 다음 단계에서 경로에서도 참조합니다.

    $ oc create -f - << EOF
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: example-route-cert
      namespace: <namespace> 
    1
    
    spec:
      commonName: <hostname> 
    2
    
      dnsNames:
        - <hostname> 
    3
    
      usages:
        - server auth
      issuerRef:
        kind: Issuer
        name: letsencrypt-acme
      secretName: <secret_name> 
    4
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    인증서 리소스가 있는 네임스페이스 를 지정합니다. 경로의 네임스페이스와 동일해야 합니다.
    2
    경로의 호스트 이름을 사용하여 인증서의 일반 이름을 지정합니다.
    3
    경로의 호스트 이름을 인증서의 DNS 이름에 추가합니다.
    4
    인증서가 포함된 보안의 이름을 지정합니다.
  3. 다음 명령을 사용하여 참조된 시크릿을 읽을 수 있는 라우터 서비스 계정 권한을 제공하는 역할을 생성합니다.

    $ oc create role secret-reader \
      --verb=get,list,watch \
      --resource=secrets \
      --resource-name=<secret_name> \ 
    1
    
      --namespace=<namespace> 
    2
    Copy to Clipboard Toggle word wrap
    1
    액세스 권한을 부여할 시크릿 이름을 지정합니다. 인증서 리소스에 지정된 secretName 과 일치해야 합니다.
    2
    시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
  4. 다음 명령을 사용하여 새로 생성된 Role 리소스와 라우터 서비스 계정을 바인딩할 RoleBinding 리소스를 생성합니다.

    $ oc create rolebinding secret-reader-binding \
      --role=secret-reader \
      --serviceaccount=openshift-ingress:router \
      --namespace=<namespace> 
    1
    Copy to Clipboard Toggle word wrap
    1
    시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
  5. 다음 명령을 실행하여 엣지 TLS 종료 및 사용자 지정 호스트 이름을 사용하는 서비스 리소스의 경로를 생성합니다. 호스트 이름은 다음 단계에서 인증서 리소스를 생성할 때 사용됩니다.

    $ oc create route edge <route_name> \ 
    1
    
      --service=<service_name> \ 
    2
    
      --hostname=<hostname> \ 
    3
    
      --namespace=<namespace> 
    4
    Copy to Clipboard Toggle word wrap
    1
    경로 이름을 지정합니다.
    2
    노출하려는 서비스를 지정합니다.
    3
    경로의 호스트 이름을 지정합니다.
    4
    경로가 있는 네임스페이스를 지정합니다.
  6. 경로의 .spec.tls.externalCertificate 필드를 업데이트하여 이전에 생성된 보안을 참조하고 다음 명령을 사용하여 cert-manager에서 발급한 인증서를 사용합니다.

    $ oc patch route <route_name> \ 
    1
    
      -n <namespace> \ 
    2
    
      --type=merge \
      -p '{"spec":{"tls":{"externalCertificate":{"name":"<secret_name>"}}}}' 
    3
    Copy to Clipboard Toggle word wrap
    1
    경로 이름을 지정합니다.
    2
    시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
    3
    인증서가 포함된 보안의 이름을 지정합니다.

검증

  • 다음 명령을 실행하여 인증서가 생성되고 사용할 준비가 되었는지 확인합니다.

    $ oc get certificate -n <namespace> 
    1
    
    $ oc get secret -n <namespace> 
    2
    Copy to Clipboard Toggle word wrap
    1 2
    시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
  • 다음 명령을 실행하여 라우터에서 참조된 외부 인증서를 사용하고 있는지 확인합니다. 명령은 상태 코드 200 OK 와 함께 반환되어야 합니다.

    $ curl -IsS https://<hostname> 
    1
    Copy to Clipboard Toggle word wrap
    1
    경로의 호스트 이름을 지정합니다.
  • 다음 명령을 실행하여 서버 인증서의 subject, subjectAltName, issuer 가 모두 curl verbose 출력에서 예상대로 표시되는지 확인합니다.

    $ curl -v https://<hostname> 
    1
    Copy to Clipboard Toggle word wrap
    1
    경로의 호스트 이름을 지정합니다.

    이제 경로는 cert-manager가 발행한 참조 시크릿의 인증서로 성공적으로 보호됩니다. cert-manager는 인증서의 라이프 사이클을 자동으로 관리합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat