검색

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

download PDF

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. 다음 명령을 실행하여 엣지 TLS 종료 및 사용자 정의 호스트 이름을 사용하여 Service 리소스에 대한 경로 리소스를 생성합니다. 호스트 이름은 다음 단계에서 인증서 리소스를 생성하는 동안 사용됩니다.

    $ oc create route edge <route_name> \ 1
      --service=<service_name> \ 2
      --hostname=<hostname> \ 3
      --namespace=<namespace> 4
    1
    경로 이름을 지정합니다.
    2
    노출하려는 서비스를 지정합니다.
    3
    경로의 호스트 이름을 지정합니다.
    4
    경로가 있는 네임스페이스를 지정합니다.
  2. 다음 명령을 실행하여 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

    1
    Issuer가 있는 네임스페이스를 지정합니다. 경로의 네임스페이스와 동일해야 합니다.
  3. 다음 명령을 실행하여 경로에 대한 인증서 오브젝트를 생성합니다. 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
    1
    인증서 리소스가 있는 네임스페이스 를 지정합니다. 경로의 네임스페이스와 동일해야 합니다.
    2
    경로의 호스트 이름을 사용하여 인증서의 일반 이름을 지정합니다.
    3
    경로의 호스트 이름을 인증서의 DNS 이름에 추가합니다.
    4
    인증서가 포함된 보안의 이름을 지정합니다.
  4. 다음 명령을 사용하여 참조된 시크릿을 읽을 수 있는 라우터 서비스 계정 권한을 제공하는 역할을 생성합니다.

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

    $ oc create rolebinding secret-reader-binding \
      --role=secret-reader \
      --serviceaccount=openshift-ingress:router \
      --namespace=<namespace> 1
    1
    시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
  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
    1
    경로 이름을 지정합니다.
    2
    시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
    3
    인증서가 포함된 보안의 이름을 지정합니다.

검증

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

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

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

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

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

9.9.2. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.