9.6. Red Hat OpenShift용 cert-manager 운영자 인증


클라우드 인증 정보를 구성하여 클러스터에서 cert-manager Operator for Red Hat OpenShift를 인증할 수 있습니다.

9.6.1. AWS에서 인증

사전 요구 사항

  • Red Hat OpenShift용 cert-manager Operator 버전 1.11.1 이상을 설치했습니다.
  • 클라우드 자격 증명 운영자가 민트 모드 또는 패스스루 모드에서 작동하도록 구성했습니다.

프로세스

  1. 다음과 같이 sample-credential-request.yaml 과 같은 CredentialsRequest 리소스 YAML 파일을 만듭니다.

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cert-manager
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - action:
          - "route53:GetChange"
          effect: Allow
          resource: "arn:aws:route53:::change/*"
        - action:
          - "route53:ChangeResourceRecordSets"
          - "route53:ListResourceRecordSets"
          effect: Allow
          resource: "arn:aws:route53:::hostedzone/*"
        - action:
          - "route53:ListHostedZonesByName"
          effect: Allow
          resource: "*"
      secretRef:
        name: aws-creds
        namespace: cert-manager
      serviceAccountNames:
      - cert-manager
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 CredentialsRequest 리소스를 만듭니다.

    $ oc create -f sample-credential-request.yaml
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 Red Hat OpenShift용 cert-manager Operator에 대한 구독 객체를 업데이트합니다.

    $ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"aws-creds"}]}}}'
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 실행하여 재배포된 cert-manager 컨트롤러 포드의 이름을 가져옵니다.

    $ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                          READY   STATUS    RESTARTS   AGE
    cert-manager-bd7fbb9fc-wvbbt  1/1     Running   0          15m39s
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 mountPath 에 지정된 경로 아래에 마운트된 AWS 자격 증명 볼륨으로 cert-manager 컨트롤러 포드가 업데이트되었는지 확인합니다.

    $ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
    Copy to Clipboard Toggle word wrap

    출력 예

    ...
    spec:
      containers:
      - args:
        ...
        - mountPath: /.aws
          name: cloud-credentials
      ...
      volumes:
      ...
      - name: cloud-credentials
        secret:
          ...
          secretName: aws-creds
    Copy to Clipboard Toggle word wrap

9.6.2. AWS 보안 토큰 서비스를 통한 인증

사전 요구 사항

  • ccoctl 바이너리를 추출하고 준비했습니다.
  • 수동 모드에서 Cloud Credential Operator를 사용하여 AWS STS로 OpenShift Container Platform 클러스터를 구성했습니다.

프로세스

  1. 다음 명령을 실행하여 CredentialsRequest 리소스 YAML 파일을 저장할 디렉토리를 만듭니다.

    $ mkdir credentials-request
    Copy to Clipboard Toggle word wrap
  2. 다음 yaml을 적용하여 credentials-request 디렉터리 아래에 sample-credential-request.yaml 과 같은 CredentialsRequest 리소스 YAML 파일을 만듭니다.

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cert-manager
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - action:
          - "route53:GetChange"
          effect: Allow
          resource: "arn:aws:route53:::change/*"
        - action:
          - "route53:ChangeResourceRecordSets"
          - "route53:ListResourceRecordSets"
          effect: Allow
          resource: "arn:aws:route53:::hostedzone/*"
        - action:
          - "route53:ListHostedZonesByName"
          effect: Allow
          resource: "*"
      secretRef:
        name: aws-creds
        namespace: cert-manager
      serviceAccountNames:
      - cert-manager
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 ccoctl 도구를 사용하여 CredentialsRequest 객체를 처리합니다.

    $ ccoctl aws create-iam-roles \
        --name <user_defined_name> --region=<aws_region> \
        --credentials-requests-dir=<path_to_credrequests_dir> \
        --identity-provider-arn <oidc_provider_arn> --output-dir=<path_to_output_dir>
    Copy to Clipboard Toggle word wrap

    출력 예

    2023/05/15 18:10:34 Role arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds created
    2023/05/15 18:10:34 Saved credentials configuration to: <path_to_output_dir>/manifests/cert-manager-aws-creds-credentials.yaml
    2023/05/15 18:10:35 Updated Role policy for Role <user_defined_name>-cert-manager-aws-creds
    Copy to Clipboard Toggle word wrap

    다음 단계에서 사용할 수 있도록 출력에서 <aws_role_arn>을 복사합니다. For example, "arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds"

  4. 다음 명령을 실행하여 서비스 계정에 eks.amazonaws.com/role-arn="<aws_role_arn>" 주석을 추가합니다.

    $ oc -n cert-manager annotate serviceaccount cert-manager eks.amazonaws.com/role-arn="<aws_role_arn>"
    Copy to Clipboard Toggle word wrap
  5. 새로운 Pod를 생성하려면 다음 명령을 실행하여 기존 cert-manager 컨트롤러 Pod를 삭제합니다.

    $ oc delete pods -l app.kubernetes.io/name=cert-manager -n cert-manager
    Copy to Clipboard Toggle word wrap

    AWS 인증 정보는 1분 이내에 새 cert-manager 컨트롤러 Pod에 적용됩니다.

검증

  1. 다음 명령을 실행하여 업데이트된 cert-manager 컨트롤러 포드의 이름을 가져옵니다.

    $ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                          READY   STATUS    RESTARTS   AGE
    cert-manager-bd7fbb9fc-wvbbt  1/1     Running   0          39s
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 AWS 자격 증명이 업데이트되었는지 확인하세요.

    $ oc set env -n cert-manager po/<cert_manager_controller_pod_name> --list
    Copy to Clipboard Toggle word wrap

    출력 예

    # pods/cert-manager-57f9555c54-vbcpg, container cert-manager-controller
    # POD_NAMESPACE from field path metadata.namespace
    AWS_ROLE_ARN=XXXXXXXXXXXX
    AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token
    Copy to Clipboard Toggle word wrap

9.6.3. GCP에서 인증

사전 요구 사항

  • Red Hat OpenShift용 cert-manager Operator 버전 1.11.1 이상을 설치했습니다.
  • 클라우드 자격 증명 운영자가 민트 모드 또는 패스스루 모드에서 작동하도록 구성했습니다.

프로세스

  1. 다음 yaml을 적용하여 sample-credential-request.yaml 과 같은 CredentialsRequest 리소스 YAML 파일을 만듭니다.

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cert-manager
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: GCPProviderSpec
        predefinedRoles:
        - roles/dns.admin
      secretRef:
        name: gcp-credentials
        namespace: cert-manager
      serviceAccountNames:
      - cert-manager
    Copy to Clipboard Toggle word wrap
    참고

    dns.admin 역할은 Google Cloud DNS 리소스를 관리하기 위한 서비스 계정에 관리자 권한을 제공합니다. cert-manager가 최소한의 권한을 가진 서비스 계정으로 실행되도록 하려면 다음 권한이 있는 사용자 지정 역할을 만들 수 있습니다.

    • dns.resourceRecordSets.*
    • dns.changes.*
    • dns.managedZones.list
  2. 다음 명령을 실행하여 CredentialsRequest 리소스를 만듭니다.

    $ oc create -f sample-credential-request.yaml
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 Red Hat OpenShift용 cert-manager Operator에 대한 구독 객체를 업데이트합니다.

    $ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 실행하여 재배포된 cert-manager 컨트롤러 포드의 이름을 가져옵니다.

    $ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                       READY   STATUS    RESTARTS   AGE
    cert-manager-bd7fbb9fc-wvbbt               1/1     Running   0          15m39s
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 mountPath 에 지정된 경로 아래에 마운트된 GCP 자격 증명 볼륨으로 cert-manager 컨트롤러 포드가 업데이트되었는지 확인합니다.

    $ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
    Copy to Clipboard Toggle word wrap

    출력 예

    spec:
      containers:
      - args:
        ...
        volumeMounts:
        ...
        - mountPath: /.config/gcloud
          name: cloud-credentials
        ....
      volumes:
      ...
      - name: cloud-credentials
        secret:
          ...
          items:
          - key: service_account.json
            path: application_default_credentials.json
          secretName: gcp-credentials
    Copy to Clipboard Toggle word wrap

9.6.4. GCP 워크로드 ID로 인증

사전 요구 사항

  • ccoctl 바이너리를 추출하고 준비했습니다.
  • Red Hat OpenShift용 cert-manager Operator 버전 1.11.1 이상을 설치했습니다.
  • 수동 모드에서 Cloud Credential Operator를 사용하여 GCP 워크로드 ID로 OpenShift Container Platform 클러스터를 구성했습니다.

프로세스

  1. 다음 명령을 실행하여 CredentialsRequest 리소스 YAML 파일을 저장할 디렉토리를 만듭니다.

    $ mkdir credentials-request
    Copy to Clipboard Toggle word wrap
  2. credentials-request 디렉토리에서 다음 CredentialsRequest 매니페스트를 포함하는 YAML 파일을 만듭니다.

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cert-manager
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: GCPProviderSpec
        predefinedRoles:
        - roles/dns.admin
      secretRef:
        name: gcp-credentials
        namespace: cert-manager
      serviceAccountNames:
      - cert-manager
    Copy to Clipboard Toggle word wrap
    참고

    dns.admin 역할은 Google Cloud DNS 리소스를 관리하기 위한 서비스 계정에 관리자 권한을 제공합니다. cert-manager가 최소한의 권한을 가진 서비스 계정으로 실행되도록 하려면 다음 권한이 있는 사용자 지정 역할을 만들 수 있습니다.

    • dns.resourceRecordSets.*
    • dns.changes.*
    • dns.managedZones.list
  3. 다음 명령을 실행하여 ccoctl 도구를 사용하여 CredentialsRequest 객체를 처리합니다.

    $ ccoctl gcp create-service-accounts \
        --name <user_defined_name> --output-dir=<path_to_output_dir> \
        --credentials-requests-dir=<path_to_credrequests_dir> \
        --workload-identity-pool <workload_identity_pool> \
        --workload-identity-provider <workload_identity_provider> \
        --project <gcp_project_id>
    Copy to Clipboard Toggle word wrap

    명령 예

    $ ccoctl gcp create-service-accounts \
        --name abcde-20230525-4bac2781 --output-dir=/home/outputdir \
        --credentials-requests-dir=/home/credentials-requests \
        --workload-identity-pool abcde-20230525-4bac2781 \
        --workload-identity-provider abcde-20230525-4bac2781 \
        --project openshift-gcp-devel
    Copy to Clipboard Toggle word wrap

  4. 다음 명령을 실행하여 클러스터의 매니페스트 디렉토리에 생성된 비밀을 적용합니다.

    $ ls <path_to_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
    Copy to Clipboard Toggle word wrap
  5. 다음 명령을 실행하여 Red Hat OpenShift용 cert-manager Operator에 대한 구독 객체를 업데이트합니다.

    $ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 실행하여 재배포된 cert-manager 컨트롤러 포드의 이름을 가져옵니다.

    $ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                          READY   STATUS    RESTARTS   AGE
    cert-manager-bd7fbb9fc-wvbbt  1/1     Running   0          15m39s
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 mountPath 에 지정된 경로 아래에 마운트된 GCP 워크로드 ID 자격 증명 볼륨으로 cert-manager 컨트롤러 포드가 업데이트되었는지 확인합니다.

    $ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
    Copy to Clipboard Toggle word wrap

    출력 예

    spec:
      containers:
      - args:
        ...
        volumeMounts:
        - mountPath: /var/run/secrets/openshift/serviceaccount
          name: bound-sa-token
          ...
        - mountPath: /.config/gcloud
          name: cloud-credentials
      ...
      volumes:
      - name: bound-sa-token
        projected:
          ...
          sources:
          - serviceAccountToken:
              audience: openshift
              ...
              path: token
      - name: cloud-credentials
        secret:
          ...
          items:
          - key: service_account.json
            path: application_default_credentials.json
          secretName: gcp-credentials
    Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat