ステップ 4: GKE on-prem にハイブリッドをインストールする

構成をクラスタに適用する

Apigee ハイブリッドをクラスタにインストールするには:

  1. hybrid-base-directory/hybrid-files ディレクトリに移動します。
  2. kubectl が正しいコンテキストに設定されていることを確認します。現在のコンテキストは、デプロイ先のクラスタに設定する必要があります。
    kubectl config get-contexts
  3. init コマンドを実行します。
    $APIGEECTL_HOME/apigeectl init -f overrides/overrides.yaml

    init コマンドにより、Apigee デプロイメント サービスの Apigee Deployment Controller および Apigee Admission Webhook がインストールされ、Apigee 以外のコンポーネントである Istiocert-manager がデプロイされます。

  4. デプロイメントのステータスを確認するには、次のコマンドを使用します。
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides.yaml

    kubectl get pods -n apigee-system

    kubectl get pods -n istio-system

    ポッドの準備ができたら、次のステップに進みます。

  5. 「ドライラン」インストールを実行します。--dry-run=true フラグを指定して apply コマンドを実行します。ドライランでは、クラスタが変更される前にエラーがないかどうかを確認できます。
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --dry-run=true
  6. エラーがなければ、Apigee 固有のランタイム コンポーネントをクラスタに適用できます。
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml
  7. デプロイメントのステータスをチェックするには、次のコマンドを実行します。
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides.yaml

    ポッドの準備がすべて整うまで、このステップを繰り返します。ポッドの起動には数分かかることがあります。

Cassandra の静的ホスト名を /etc/hosts に追加する(Anthos 1.2.x のみ)

このステップでは、Cassandra に割り当てられたワーカーノードの IP とホスト名を取得し、/etc/hosts ファイルに追加します。ホスト ネットワークを使用している場合、ポッドでノードのホスト名と IP を使用します。ノードホスト名が DNS にないため、Cassandra ワーカーノードごとに /etc/hosts に静的ホスト名エントリを追加する必要があります。

  1. このコマンドを実行して、Cassandra ワーカーノードを取得します。パラメータ apigee-data は、Cassandra が割り当てられているデフォルトのノードラベルです。別のノードラベルを使用した場合は、使用したものと置き換えます。ワーカーノードにラベルを付ける方法をご覧ください。
    kubectl  get nodes -l apigee.com/apigee-nodepool=apigee-data -o wide

    出力例:

    kubectl get nodes -o wide my-cluster1-844788cc8c-2gx7d
    
    NAME                           STATUS   ROLES    AGE   VERSION          INTERNAL-IP    EXTERNAL-IP    OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
    my-cluster1-844788cc8c-2gx7d   Ready    none     19d   v1.14.7-gke.24   21.0.129.248   21.0.129.248   Ubuntu 18.04.3 LTS   4.15.0-62-generic   docker://17.3.2
  2. 各 Cassandra ワーカーノードに対する前のコマンドで返されたノード名と外部 IP を /etc/hosts ファイルに追加します。
    cat /etc/hosts
    
    127.0.0.1 localhost
    21.0.129.248   my-cluster1-844788cc8c-2gx7d
    

Synchronizer アクセスを有効にする

  1. GCP サービス アカウントを作成し、Apigee 組織管理者のロールをアカウントに追加します。このサービス アカウントは、この後のステップで行う API 呼び出しの認証に使用します。GCP Console を使用すると、サービス アカウントを簡単に作成できます。手順については、GCP ドキュメントのサービス アカウントの作成と管理をご覧ください。
  2. サービス アカウント キーをシステムにダウンロードします。GCP ドキュメントのサービス アカウント キーの作成の手順に従ってください。
  3. ダウンロードしたサービス アカウント キーをサービス アカウント ディレクトリ /hybrid-base-directory/hybrid-files/service-accounts に移動します。
  4. 次の 2 つのコマンドを実行して、トークンを取得します。
    export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    export TOKEN=$(gcloud auth application-default print-access-token)

    ここで org-admin-service-account-file は、Apigee 組織管理者のロールでダウンロードしたサービス アカウント キーへのシステム上のパスです。

  5. setSyncAuthorization API を呼び出して、Synchronizer に必要な権限を有効にします。
    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/your_org_name:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:synchronizer-manager-service-account-email"]}'
    

    ここで

    • your_org_name: ハイブリッド組織の名前。
    • synchronizer-manager-service-account-email: Apigee Synchronizer 管理者のロールを持つサービス アカウントの名前。名前の形式はメールアドレスと同様です。例: apigee-synchronizer@my-project.iam.gserviceaccount.com

    例:

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/my_org:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:apigee-synchronizer@my-project.iam.gserviceaccount.com"]}'
    
  6. サービス アカウントが設定されたことを確認するには、次の API を呼び出してサービス アカウントのリストを取得します。
    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/your_org_name:getSyncAuthorization" \
       -d ''
    

    出力は次のようになります。

    {
       "identities":[
          "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"
       ],
       "etag":"BwWJgyS8I4w="
    }
        

MART IP を組織に追加する

MART エンドポイントの IP アドレスを Apigee 組織に追加する必要があります。この値は、前にオーバーライド ファイルの mart.hostAlias プロパティの値として設定した値です。MART を介してランタイム プレーンと通信するために、管理プレーンはこのアドレスを必要とします。

MART IP を組織に追加するには、次の手順を実行します。

  1. 前にオーバーライド ファイルの mart.hostAlias プロパティに設定した値を確認します。MART が機能するためには、ホスト エイリアスに完全修飾ドメイン名を指定する必要があります。
  2. Synchronizer アクセスを有効にするセクションでダウンロードした Apigee 組織管理者のロールを持つサービス アカウント キーを確認します。
  3. 次の 2 つのコマンドを実行して、トークンを取得します。
    export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    export TOKEN=$(gcloud auth application-default print-access-token)

    ここで org-admin-service-account-file は、Apigee 組織管理者のロールでダウンロードしたサービス アカウント キーへのシステム上のパスです。

  4. 次の Management API を呼び出して、MART エンドポイントを使用する組織を更新します。
    curl -v -X PUT \
       https://apigee.googleapis.com/v1/organizations/your_org_name \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $TOKEN" \
      -d '{
      "name" : "your_org_name",
      "properties" : {
        "property" : [ {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.mart.server.endpoint",
          "value" : "https://HOST_ALIAS_DNS"
        } ]
      }
    }'

    以下に例を示します。必ず接頭辞「https://」をドメイン名に追加してください。

    curl -v -X PUT \
       https://apigee.googleapis.com/v1/organizations/my_organization \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $TOKEN" \
      -d '{
      "name" : "my_organization",
      "properties" : {
        "property" : [ {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.mart.server.endpoint",
          "value" : "https://foo-mart.example.com"
        } ]
      }
    }'

オーバーライド ファイルを保存する

オーバーライド ファイルを必ず保存するようにしてください。このファイルは、今後のアップグレード、パッチ、またはクラスタ構成のその他の変更を行うために必要です。