9.7.2. HTTP-01 문제를 해결하기 위해 ACME 발행자 구성


cert-manager Operator for Red Hat OpenShift를 사용하여 ACME 발행자를 설정하여 HTTP-01 문제를 해결할 수 있습니다. 이 절차에서는 Let's Encrypt 를 ACME CA 서버로 사용합니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • 노출하려는 서비스가 있습니다. 이 절차에서 서비스의 이름은 sample-workload 입니다.

프로세스

  1. ACME 클러스터 발행자를 생성합니다.

    1. ClusterIssuer 오브젝트를 정의하는 YAML 파일을 생성합니다.

      acme-cluster-issuer.yaml 파일의 예

      apiVersion: cert-manager.io/v1
      kind: ClusterIssuer
      metadata:
        name: letsencrypt-staging                                        
      1
      
      spec:
        acme:
          preferredChain: ""
          privateKeySecretRef:
            name: <secret_for_private_key>                               
      2
      
          server: https://acme-staging-v02.api.letsencrypt.org/directory 
      3
      
          solvers:
          - http01:
              ingress:
                ingressClassName: openshift-default                                 
      4

      1
      클러스터 발행자의 이름을 제공합니다.
      2
      & lt;secret_private_key >를 ACME 계정 개인 키를 저장할 시크릿 이름으로 바꿉니다.
      3
      ACME 서버의 디렉터리 끝점에 액세스할 URL을 지정합니다. 이 예에서는 Let's Encrypt 스테이징 환경을 사용합니다.
      4
      Ingress 클래스를 지정합니다.
    2. 선택 사항: ingressClassName 을 지정하지 않고 오브젝트를 생성하는 경우 다음 명령을 사용하여 기존 수신을 패치합니다.

      $ oc patch ingress/<ingress-name> --type=merge --patch '{"spec":{"ingressClassName":"openshift-default"}}' -n <namespace>
    3. 다음 명령을 실행하여 ClusterIssuer 오브젝트를 생성합니다.

      $ oc create -f acme-cluster-issuer.yaml
  2. Ingress를 생성하여 사용자 워크로드의 서비스를 노출합니다.

    1. Namespace 오브젝트를 정의하는 YAML 파일을 생성합니다.

      namespace.yaml 파일 예

      apiVersion: v1
      kind: Namespace
      metadata:
        name: my-ingress-namespace 
      1

      1
      Ingress의 네임스페이스를 지정합니다.
    2. 다음 명령을 실행하여 Namespace 오브젝트를 생성합니다.

      $ oc create -f namespace.yaml
    3. Ingress 오브젝트를 정의하는 YAML 파일을 생성합니다.

      ingress.yaml 파일 예

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: sample-ingress                                           
      1
      
        namespace: my-ingress-namespace                                
      2
      
        annotations:
          cert-manager.io/cluster-issuer: letsencrypt-staging          
      3
      
      spec:
        ingressClassName: openshift-default                            
      4
      
        tls:
        - hosts:
          - <hostname>                                                 
      5
      
          secretName: sample-tls                                       
      6
      
        rules:
        - host: <hostname>                                             
      7
      
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: sample-workload                                
      8
      
                  port:
                    number: 80

      1
      Ingress의 이름을 지정합니다.
      2
      Ingress에 대해 생성한 네임스페이스를 지정합니다.
      3
      생성한 클러스터 발행자를 지정합니다.
      4
      Ingress 클래스를 지정합니다.
      5
      & lt;hostname >을 인증서와 연결할 주체 대체 이름(SAN)으로 바꿉니다. 이 이름은 인증서에 DNS 이름을 추가하는 데 사용됩니다.
      6
      인증서를 저장하는 보안을 지정합니다.
      7
      &lt ;hostname&gt;을 호스트 이름으로 바꿉니다. < host_name>.<cluster_ingress_domain > 구문을 사용하여 *.<cluster_ingress_domain > 와일드카드 DNS 레코드 및 클러스터의 인증서를 제공할 수 있습니다. 예를 들어 apps.<cluster_base_domain>을 사용할 수 있습니다. 그렇지 않으면 선택한 호스트 이름에 대한 DNS 레코드가 있는지 확인해야 합니다.
      8
      노출할 서비스 이름을 지정합니다. 이 예에서는 sample-workload 라는 서비스를 사용합니다.
    4. 다음 명령을 실행하여 Ingress 오브젝트를 생성합니다.

      $ oc create -f ingress.yaml
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동