2.2. 認証済みレジストリーのサポート設定
3scale 2.6 リリースの一環で、コンテナーイメージが registry.access.redhat.com
から registry.redhat.io
にある認証済みレジストリーに移行されました。次の手順に従って、既存の 3scale インフラストラクチャーを準備し、新しい認証済みレジストリーをサポートします。
registry.redhat.io
にある新しい Red Hat 認証済みレジストリーに認証情報を作成します。-
レジストリーサービスアカウントとも呼ばれるレジストリートークンを作成します。このレジストリートークンは、
registry.redhat.io
に対して認証するために 3scale プラットフォームで使用することを目的としています。 - 認証情報を作成する方法の詳細は、Red Hat Container Registry Authentication を参照してください。
-
レジストリーサービスアカウントとも呼ばれるレジストリートークンを作成します。このレジストリートークンは、
レジストリーサービスアカウントが利用可能になったら、3scale インフラストラクチャーがデプロイされている OpenShift プロジェクトで、その認証情報を含む新しいシークレットを作成します。
- Red Hat Service Accounts パネルに移動して、OpenShift シークレット定義を取得します。
- 3scale インフラストラクチャーに使用するレジストリーサービスアカウントを選択します。
- OpenShift シークレット タブを選択し、シークレットのダウンロードリンクをクリックします。
Red Hat サービスアカウントパネルから OpenShift シークレットをダウンロードした後に、YAML ファイルの metadata セクションの name フィールドを変更し、既存の名前を
threescale-registry-auth
名に置き換えます。シークレットは次のようになります。
apiVersion: v1 kind: Secret metadata: name: threescale-registry-auth data: .dockerconfigjson: a-base64-encoded-string-containing-auth-credentials type: kubernetes.io/dockerconfigjson
変更を保存し、現在 3scale 2.5 がデプロイされている OpenShift プロジェクトにシークレットを作成します。
$ oc create -f the-secret-name.yml
シークレットを作成したら、その存在を確認できます。次のコマンドを実行すると、コンテンツを含むシークレットが返されます。
$ oc get secret threescale-registry-auth
threescale-registry-auth
シークレットを使用するamp
サービスアカウントを作成します。これには、次の内容でファイルamp-sa.yml
を作成します。apiVersion: v1 kind: ServiceAccount imagePullSecrets: - name: threescale-registry-auth metadata: name: amp
amp
サービスアカウントをデプロイします。$ oc create -f amp-sa.yml
amp
サービスアカウントが正しく作成されていることを確認します。次のコマンドは、imagePullSecrets セクションの要素の 1 つとしてthreescale-registry-auth
を含む、作成されたサービスアカウントをコンテンツとともに返します。$ oc get sa amp -o yaml
既存の 3scale プロジェクトのデフォルトサービスアカウントに適用された権限が、新しい
amp
サービスアカウントにレプリケートされることを確認します。サービスアカウントの認証モードでサービスディカバリーが設定されている場合に、Configuring without OAuth server の説明に従い、cluster-role の表示権限を
system:serviceaccount:<3scale-project>:default
ユーザーに割り当て、同じ権限をsystem:serviceaccount:<3scale-project>:amp
にも適用する必要があります。$ oc adm policy add-cluster-role-to-user view system:serviceaccount:<3scale-project>:amp
既存のすべての DeploymentConfigs を更新して、新しい
amp
サービスアカウントを使用します。$ THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database" for component in ${THREESCALE_DC_NAMES}; do oc patch dc $component --patch '{"spec":{"template": {"spec": {"serviceAccountName": "amp"}}}}' ; done
コマンドの出力には、次の行が含まれます。
deploymentconfig.apps.openshift.io/apicast-production patched deploymentconfig.apps.openshift.io/apicast-staging patched deploymentconfig.apps.openshift.io/apicast-wildcard-router patched deploymentconfig.apps.openshift.io/backend-cron patched deploymentconfig.apps.openshift.io/backend-listener patched deploymentconfig.apps.openshift.io/backend-redis patched deploymentconfig.apps.openshift.io/backend-worker patched deploymentconfig.apps.openshift.io/system-app patched deploymentconfig.apps.openshift.io/system-memcache patched deploymentconfig.apps.openshift.io/system-mysql patched deploymentconfig.apps.openshift.io/system-redis patched deploymentconfig.apps.openshift.io/system-sidekiq patched deploymentconfig.apps.openshift.io/system-sphinx patched deploymentconfig.apps.openshift.io/zync patched deploymentconfig.apps.openshift.io/zync-database patched
前のコマンドは、再起動をトリガーする 3scale の既存の DeploymentConfig もすべて再デプロイします。
DeploymentConfig が再起動されている間、それらのステータスが変化する場合があります。すべての DeploymentConfig が Ready になるまで待ちます。
次のコマンドを入力し、DeploymentConfig ごとに、Desired 列と Current 列の値が同じであり、0 以外であることをチェックして、DeploymentConfig のステータスを確認できます。
$ oc get dc
また、すべての Pod が Running ステータスであり、Ready になっていることを確認します。
$ oc get pods
次のコマンドを使用して、すべての DeploymentConfig に
amp
サービスアカウントが設定されていることを確認します。$ for component in ${THREESCALE_DC_NAMES}; do oc get dc $component -o yaml | grep -i serviceAccountName; done
前のコマンドの結果として、以前に設定された THREESCALE_DC_NAMES 環境変数で定義した要素数だけ次の行が繰り返されます。
serviceAccountName: amp
- この時点で、DeploymentConfigurations は Red Hat 認証レジストリーイメージを使用する準備ができています。