2.4. コンテナーレジストリー認証の設定
3scale 管理者は、3scale コンテナーイメージを OpenShift にデプロイする前に、registry.redhat.io
との認証を設定します。
前提条件
- OpenShift Container Platform クラスターへアクセスできるクラスター管理者権限。
-
OpenShift
oc
クライアントツールがインストール済みであること。詳細は、OpenShift CLI のドキュメント を参照してください。
手順
管理者として OpenShift クラスターにログインします。
$ oc login -u system:admin
3scale をデプロイするプロジェクトを開きます。
oc project your-openshift-project
Red Hat カスタマーポータルアカウントを使用して
docker-registry
シークレットを作成します。threescale-registry-auth
は作成するシークレットに置き換えます。$ oc create secret docker-registry threescale-registry-auth \ --docker-server=registry.redhat.io \ --docker-username=CUSTOMER_PORTAL_USERNAME \ --docker-password=CUSTOMER_PORTAL_PASSWORD \ --docker-email=EMAIL_ADDRESS
以下の出力が表示されるはずです。
secret/threescale-registry-auth created
シークレットをサービスアカウントにリンクして、シークレットをイメージをプルするために使用します。サービスアカウント名は、OpenShift Pod が使用する名前と一致する必要があります。以下は、
default
サービスアカウントを使用する例になります。$ oc secrets link default threescale-registry-auth --for=pull
シークレットを
builder
サービスアカウントにリンクし、ビルドイメージをプッシュおよびプルするためにシークレットを使用します。$ oc secrets link builder threescale-registry-auth
関連情報
コンテナーイメージに対する Red Hat の認証に関する詳細は、以下を参照してください。
2.4.1. レジストリーサービスアカウントの作成
OpenShift 上にデプロイされた 3scale 2.11 と共に共有環境で registry.redhat.io
からのコンテナーイメージを使用するには、個々のユーザーの カスタマーポータル のクレデンシャルではなく、レジストリーサービスアカウント を使用する必要があります。
テンプレートまたは operator のどちらを使用して 3scale 2.8 を OpenShift にデプロイする場合でも、その前に以下に概略を示す手順に従う必要があります。両オプションともレジストリーの認証を使用するためです。
手順
- Registry Service Accounts のページに移動し、ログインします。
New Service Account をクリックします。Create a New Registry Service Account のページに表示されるフォームに入力します。
サービスアカウント の名前を追加します。
注記: フォームのフィールドの前に、決められた桁数のランダムに生成された数字の文字列が表示されます。
- Description を入力します。
- Create をクリックします。
- Registry Service Accounts のページに戻ります。
- 作成した サービスアカウント をクリックします。
接頭辞の文字列を含めたユーザー名 (例: 12345678|username) およびパスワードを書き留めます。
このユーザー名およびパスワードは、
registry.redhat.io
にログインするのに使用されます。注記Token Information のページには、認証トークンの使用方法を説明したタブがあります。たとえば、Token Information タブには、12345678|username フォーマットのユーザー名およびその下にパスワードの文字列が表示されます。
2.4.2. レジストリーサービスアカウントの変更
サービスアカウントを変更または削除することができます。Registry Service Account ページの表中の各認証トークン右側のポップアップメニューを使用して、その操作を行うことができます。
トークンを再生成したりサービスアカウントを削除したりすると、そのトークンを用いて認証および registry.redhat.io
からコンテンツを取得しているシステムに影響を及ぼします。
各機能の説明は以下のとおりです。
Regenerate Token: 許可されたユーザーは、サービスアカウント に関連付けられたパスワードをリセットすることができます。
注記: サービスアカウント のユーザー名を変更することはできません。
- Update Description: 許可されたユーザーは、サービスアカウント の説明を更新することができます。
- Delete Account: 許可されたユーザーは、サービスアカウント を削除することができます。
2.4.3. 3scale テンプレートのインポート
ワイルドカードルートは、3scale 2.6 の時点で 廃止されています。
- この機能は、バックグラウンドで Zync により処理されます。
- API プロバイダーが作成、更新、または削除されると、これらの変更が自動的にルートに反映されます。
3scale テンプレートを OpenShift クラスターにインポートするには、以下の手順を実施します。
手順
ターミナルセッションから、OpenShift にクラスター管理者としてログインします。
oc login
プロジェクトを選択するか新しいプロジェクトを作成します。
oc project <project_name>
oc new-project <project_name>
oc new-app
コマンドを入力します。-
--file
オプションを使用して、ノードおよびエンタイトルメントの設定 でダウンロードした amp.yml ファイルへのパスを指定します。 --param
オプションを使用して、WILDCARD_DOMAIN
パラメーターに OpenShift クラスターのドメインを設定します。oc new-app --file /opt/amp/templates/amp.yml --param WILDCARD_DOMAIN=<WILDCARD_DOMAIN>
ターミナルには、マスターおよびテナント URL と、新たに作成された 3scale 管理ポータルのクレデンシャルが表示されます。この出力には以下の情報が含まれます。
- マスター管理者のユーザー名
- マスターのパスワード
- マスターのトークン情報
- テナントのユーザー名
- テナントのパスワード
- テナントのトークン情報
-
https://user-admin.3scale-project.example.com に admin/xXxXyz123 としてログインします。
* With parameters: * ADMIN_PASSWORD=xXxXyz123 # generated * ADMIN_USERNAME=admin * TENANT_NAME=user * MASTER_NAME=master * MASTER_USER=master * MASTER_PASSWORD=xXxXyz123 # generated --> Success Access your application via route 'user-admin.3scale-project.example.com' Access your application via route 'master-admin.3scale-project.example.com' Access your application via route 'backend-user.3scale-project.example.com' Access your application via route 'user.3scale-project.example.com' Access your application via route 'api-user-apicast-staging.3scale-project.example.com' Access your application via route 'api-user-apicast-production.3scale-project.example.com'
- 後で確認できるようにするため、詳細を書き留めておきます。
以下のコマンドが返されると、OpenShift での 3scale デプロイメントが成功しています。
oc wait --for=condition=available --timeout=-1s $(oc get dc --output=name)
注記OpenShift への 3scale のデプロイメントに成功すると、ログインクレデンシャルが機能します。
2.4.4. 管理ポータルの URL の取得
テンプレートを使用して 3scale をデプロイすると、固定 URL (3scale-admin.${wildcardDomain}
) のデフォルトテナントが作成されます。
3scale の Dashboard には、テナントの新しいポータル URL が表示されます。たとえば、<wildCardDomain> が 3scale-project.example.com
の場合、管理ポータル URL は https://3scale-admin.3scale-project.example.com
となります。
wildcardDomain
は、インストール中に指定した <wildCardDomain> パラメーターです。以下のコマンドを使用し、ブラウザーでこの一意の URL を開きます。
xdg-open https://3scale-admin.3scale-project.example.com
オプションとして、マスターポータル URL (master.${wildcardDomain}
) に新しいテナントを作成できます。
2.4.5. Amazon Simple Storage Service を使用した 3scale のデプロイ
Amazon Simple Storage Service (Amazon S3) を使用した 3scale のデプロイは任意の手順です。以下の手順を使用して、Amazon S3 で 3scale をデプロイします。
手順
- amp-s3.yml ダウンロードします。
ターミナルセッションから OpenShift にログインします。
oc login
プロジェクトを選択するか新しいプロジェクトを作成します。
oc project <project_name>
または
oc new-project <project_name>
oc new-app コマンドを入力します。
-
--file
オプションを使用して、amp-s3.yml ファイルへのパスを指定します。 --param
オプションを以下の値を指定します。-
WILDCARD_DOMAIN
: パラメーターは OpenShift クラスターのドメインに設定されます。 -
AWS_BUCKET
: ターゲットバケット名に置き換えます。 -
AWS_ACCESS_KEY_ID
: AWS 認証情報 ID に置き換えます。 -
AWS_SECRET_ACCESS_KEY
: AWS 認証情報 KEY に置き換えます。 -
AWS_REGION: with the AWS
: リージョンに置き換えます。 -
AWS_HOSTNAME
: Amazon エンドポイント: AWS S3 と互換性のあるプロバイダーエンドポイントのホスト名。 -
AWS_PROTOCOL
: デフォルト: HTTPS - AWS S3 と互換性のあるプロバイダーエンドポイントプロトコル。 -
AWS_PATH_STYLE
: デフォルト:false
-true
に設定すると、バケット名は常にリクエスト URI に残り、サブドメインとしてホストに移動されません。
-
管理ポータルでカスタム名を設定するには
--param
オプションを指定してTENANT_NAME
パラメーターを指定します。省略した場合、デフォルトは 3scale に設定されます。oc new-app --file /path/to/amp-s3.yml \ --param WILDCARD_DOMAIN=<a-domain-that-resolves-to-your-ocp-cluster.com> \ --param TENANT_NAME=3scale \ --param AWS_ACCESS_KEY_ID=<your-aws-access-key-id> \ --param AWS_SECRET_ACCESS_KEY=<your-aws-access-key-secret> \ --param AWS_BUCKET=<your-target-bucket-name> \ --param AWS_REGION=<your-aws-bucket-region> \ --param FILE_UPLOAD_STORAGE=s3
ターミナルには、マスターおよびテナント URL と、新たに作成された 3scale 管理ポータルの認証情報が表示されます。この出力には以下の情報が含まれます。
- マスター管理者のユーザー名
- マスターのパスワード
- マスターのトークン情報
- テナントのユーザー名
- テナントのパスワード
- テナントのトークン情報
-
https://user-admin.3scale-project.example.com に admin/xXxXyz123 としてログインします。
... * With parameters: * ADMIN_PASSWORD=xXxXyz123 # generated * ADMIN_USERNAME=admin * TENANT_NAME=user ... * MASTER_NAME=master * MASTER_USER=master * MASTER_PASSWORD=xXxXyz123 # generated ... --> Success Access your application via route 'user-admin.3scale-project.example.com' Access your application via route 'master-admin.3scale-project.example.com' Access your application via route 'backend-user.3scale-project.example.com' Access your application via route 'user.3scale-project.example.com' Access your application via route 'api-user-apicast-staging.3scale-project.example.com' Access your application via route 'api-user-apicast-production.3scale-project.example.com' Access your application via route 'apicast-wildcard.3scale-project.example.com' ...
- 後で確認できるようにするため、詳細を書き留めておきます。
以下のコマンドが返されると、OpenShift での 3scale デプロイメントが成功しています。
oc wait --for=condition=available --timeout=-1s $(oc get dc --output=name)
注記OpenShift への 3scale のデプロイメントに成功すると、ログインクレデンシャルが機能します。
2.4.6. PostgreSQL を使用した 3scale のデプロイ
PostgreSQL を使用した 3scale のデプロイは、任意の手順です。以下の手順を使用して、PostgreSQL で 3scale をデプロイします。
手順
- amp-postgresql.yml をダウンロードします。
ターミナルセッションから OpenShift にログインします。
oc login
プロジェクトを選択するか新しいプロジェクトを作成します。
oc project <project_name>
または
oc new-project <project_name>
oc new-app コマンドを入力します。
-
--file
オプションを使用して、amp-postgresql.yml ファイルへのパスを指定します。 -
--param
オプションを以下の値を指定します。 -
WILDCARD_DOMAIN
: パラメーターは OpenShift クラスターのドメインに設定されます。 管理ポータルでカスタム名を設定するには
--param
オプションを指定してTENANT_NAME
パラメーターを指定します。省略した場合、デフォルトは 3scale に設定されます。oc new-app --file /path/to/amp-postgresql.yml \ --param WILDCARD_DOMAIN=<a-domain-that-resolves-to-your-ocp-cluster.com> \ --param TENANT_NAME=3scale \
ターミナルには、マスターおよびテナント URL と、新たに作成された 3scale 管理ポータルの認証情報が表示されます。この出力には以下の情報が含まれます。
- マスター管理者のユーザー名
- マスターのパスワード
- マスターのトークン情報
- テナントのユーザー名
- テナントのパスワード
- テナントのトークン情報
-
https://user-admin.3scale-project.example.com に admin/xXxXyz123 としてログインします。
... * With parameters: * ADMIN_PASSWORD=xXxXyz123 # generated * ADMIN_USERNAME=admin * TENANT_NAME=user ... * MASTER_NAME=master * MASTER_USER=master * MASTER_PASSWORD=xXxXyz123 # generated ... --> Success Access your application via route 'user-admin.3scale-project.example.com' Access your application via route 'master-admin.3scale-project.example.com' Access your application via route 'backend-user.3scale-project.example.com' Access your application via route 'user.3scale-project.example.com' Access your application via route 'api-user-apicast-staging.3scale-project.example.com' Access your application via route 'api-user-apicast-production.3scale-project.example.com' Access your application via route 'apicast-wildcard.3scale-project.example.com' ...
- 後で確認できるようにするため、詳細を書き留めておきます。
以下のコマンドが返されると、OpenShift での 3scale デプロイメントが成功しています。
oc wait --for=condition=available --timeout=-1s $(oc get dc --output=name)
注記OpenShift への 3scale のデプロイメントに成功すると、ログインとクレデンシャルが機能します。
2.4.7. SMTP 変数の設定 (任意)
OpenShift は 通知の送信 および 新規ユーザーの招待 に電子メールを使用します。この機能を使用する場合は、独自の SMTP サーバーを提供し、system-smtp
シークレットで SMTP 変数を設定する必要があります。
system-smtp
シークレットで SMTP 変数を設定するには、以下の手順を実行します。
手順
OpenShift にログインしていない場合はログインします。
oc login
oc patch
コマンドを使用してsecret
タイプを指定し (system-smtp
はシークレット名)、続いて-p
オプションを指定し、以下の変数に対して JSON 形式で新しい値を指定します。変数 説明 address
リモートメールサーバーをリレーとして指定できます。
username
メールサーバーのユーザー名を指定します。
password
メールサーバーのパスワードを指定します。
domain
HELO ドメインを指定します。
port
メールサーバーが新しい接続をリッスンするポートを指定します。
authentication
メールサーバーの認証タイプを指定します。指定できる値は
plain
(パスワードをクリアテキストで送信)、login
(パスワードを Base64 エンコードで送信)、またはcram_md5
(ハッシュ関数に Message Digest 5 アルゴリズムを使用し認証情報を交換) です。openssl.verify.mode
TLS の使用時に OpenSSL が証明書をチェックする方法を指定します。使用できる値は
none
またはpeer
です。例
oc patch secret system-smtp -p '{"stringData":{"address":"<your_address>"}}' oc patch secret system-smtp -p '{"stringData":{"username":"<your_username>"}}' oc patch secret system-smtp -p '{"stringData":{"password":"<your_password>"}}'
secret 変数を設定した後、
system-app
およびsystem-sidekiq
Pod を再デプロイします。oc rollout latest dc/system-app oc rollout latest dc/system-sidekiq
ロールアウトのステータスを表示し、読み込みが完了したことを確認します。
oc rollout status dc/system-app oc rollout status dc/system-sidekiq