8.11. AWS でのRed Hat OpenShift の cert-manager Operator 認証

AWS クラスターで、cert-manager Operator for Red Hat OpenShift のクラウド認証情報を設定できます。クラウド認証情報は Cloud Credential Operator によって生成されます。

8.11.1. AWS での the cert-manager Operator for Red Hat OpenShift クラウド認証情報の設定

AWS クラスターで Red Hat OpenShift の cert-manager Operator のクラウド認証情報を設定するには、CredentialsRequest オブジェクトを作成してクラウド認証情報シークレットを生成し、Cloud Credential Operator を許可する必要があります。

前提条件

  • Red Hat OpenShift 1.11.1 以降の cert-manager Operator がインストールされている。
  • mint モードまたは passthrough モードで動作するように Cloud Credential Operator を設定している。

手順

  1. 以下のように CredentialsRequest リソース YAML ファイル (例: sample-credential-request.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
  2. 次のコマンドを実行して、CredentialsRequest リソースを作成します。

    $ oc create -f sample-credential-request.yaml
  3. 次のコマンドを実行して、cert-manager Operator for Red Hat OpenShift のサブスクリプションオブジェクトを更新します。

    $ 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"}]}}}'

検証

  1. 次のコマンドを実行して、再デプロイされた cert-manager コントローラー Pod の名前を取得します。

    $ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager

    出力例

    NAME                          READY   STATUS    RESTARTS   AGE
    cert-manager-bd7fbb9fc-wvbbt  1/1     Running   0          15m39s

  2. 次のコマンドを実行して、cert-manager コントローラー Pod が、mountPath で指定されたパスの下にマウントされている AWS 認証情報ボリュームで更新されていることを確認します。

    $ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml

    出力例

    ...
    spec:
      containers:
      - args:
        ...
        - mountPath: /.aws
          name: cloud-credentials
      ...
      volumes:
      ...
      - name: cloud-credentials
        secret:
          ...
          secretName: aws-creds