2.4. コンテナーレジストリー認証の設定

3scale 管理者は、3scale コンテナーイメージを OpenShift にデプロイする前に、registry.redhat.io との認証を設定します。

前提条件

  • OpenShift Container Platform クラスターへアクセスできるクラスター管理者権限。
  • OpenShift oc クライアントツールがインストール済みであること。詳細は、OpenShift CLI のドキュメント を参照してください。

手順

  1. 管理者として OpenShift クラスターにログインします。

    $ oc login -u system:admin
  2. 3scale をデプロイするプロジェクトを開きます。

    oc project your-openshift-project
  3. 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
  4. シークレットをサービスアカウントにリンクして、シークレットをイメージをプルするために使用します。サービスアカウント名は、OpenShift Pod が使用する名前と一致する必要があります。以下は、default サービスアカウントを使用する例になります。

    $ oc secrets link default threescale-registry-auth --for=pull
  5. シークレットを 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 にデプロイする場合でも、その前に以下に概略を示す手順に従う必要があります。両オプションともレジストリーの認証を使用するためです。

手順

  1. Registry Service Accounts のページに移動し、ログインします。
  2. New Service Account をクリックします。Create a New Registry Service Account のページに表示されるフォームに入力します。

    1. サービスアカウント の名前を追加します。

      注記: フォームのフィールドの前に、決められた桁数のランダムに生成された数字の文字列が表示されます。

  3. Description を入力します。
  4. Create をクリックします。
  5. Registry Service Accounts のページに戻ります。
  6. 作成した サービスアカウント をクリックします。
  7. 接頭辞の文字列を含めたユーザー名 (例: 12345678|username) およびパスワードを書き留めます。

    1. このユーザー名およびパスワードは、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 クラスターにインポートするには、以下の手順を実施します。

手順

  1. ターミナルセッションから、OpenShift にクラスター管理者としてログインします。

    oc login
  2. プロジェクトを選択するか新しいプロジェクトを作成します。

    oc project <project_name>
    oc new-project <project_name>
  3. oc new-app コマンドを入力します。

    1. --file オプションを使用して、ノードおよびエンタイトルメントの設定 でダウンロードした amp.yml ファイルへのパスを指定します。
    2. --param オプションを使用して、WILDCARD_DOMAIN パラメーターに OpenShift クラスターのドメインを設定します。

      oc new-app --file /opt/amp/templates/amp.yml --param WILDCARD_DOMAIN=<WILDCARD_DOMAIN>

      ターミナルには、マスターおよびテナント URL と、新たに作成された 3scale 管理ポータルのクレデンシャルが表示されます。この出力には以下の情報が含まれます。

      • マスター管理者のユーザー名
      • マスターのパスワード
      • マスターのトークン情報
      • テナントのユーザー名
      • テナントのパスワード
      • テナントのトークン情報
  4. 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'
  5. 後で確認できるようにするため、詳細を書き留めておきます。
  6. 以下のコマンドが返されると、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 をデプロイします。

手順

  1. amp-s3.yml ダウンロードします。
  2. ターミナルセッションから OpenShift にログインします。

    oc login
  3. プロジェクトを選択するか新しいプロジェクトを作成します。

    oc project <project_name>

    または

oc new-project <project_name>
  1. 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 管理ポータルの認証情報が表示されます。この出力には以下の情報が含まれます。

    • マスター管理者のユーザー名
    • マスターのパスワード
    • マスターのトークン情報
    • テナントのユーザー名
    • テナントのパスワード
    • テナントのトークン情報
  2. 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'
    
    ...
  3. 後で確認できるようにするため、詳細を書き留めておきます。
  4. 以下のコマンドが返されると、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 をデプロイします。

手順

  1. amp-postgresql.yml をダウンロードします。
  2. ターミナルセッションから OpenShift にログインします。

    oc login
  3. プロジェクトを選択するか新しいプロジェクトを作成します。

    oc project <project_name>

    または

oc new-project <project_name>
  1. 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 管理ポータルの認証情報が表示されます。この出力には以下の情報が含まれます。

    • マスター管理者のユーザー名
    • マスターのパスワード
    • マスターのトークン情報
    • テナントのユーザー名
    • テナントのパスワード
    • テナントのトークン情報
  2. 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'
    
    ...
  3. 後で確認できるようにするため、詳細を書き留めておきます。
  4. 以下のコマンドが返されると、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 変数を設定するには、以下の手順を実行します。

手順

  1. OpenShift にログインしていない場合はログインします。

    oc login
    1. 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>"}}'
  2. secret 変数を設定した後、system-app および system-sidekiq Pod を再デプロイします。

    oc rollout latest dc/system-app
    oc rollout latest dc/system-sidekiq
  3. ロールアウトのステータスを表示し、読み込みが完了したことを確認します。

    oc rollout status dc/system-app
    oc rollout status dc/system-sidekiq