ランタイム プレーン コンポーネントを管理する

このトピックでは、Apigee Hybrid のランタイム プレーン コンポーネントの構成と管理方法について説明します。構成できるランタイム プレーン コンポーネントの一覧については、ランタイム サービスの構成の概要をご覧ください。

オーバーライド ファイルについて

Hybrid ランタイムを初めてクラスタにインストールするときに、構成のオーバーライド ファイルを作成する必要があります。このファイルにより、デフォルトの構成値を必要に応じてオーバーライドする、環境を構成する、TLS 証明書とサービス アカウント キーのパスを指定する、Kubernetes ノードプールを特定のハイブリッド コンポーネントに割り当てるなどの操作が可能になります。

ハイブリッドのインストール手順を見ると、オーバーライド ファイルを作成してクラスタに構成を適用するプロセスがわかります。後で構成を変更する場合は、作成したオーバーライド ファイルを変更して再適用します。

構成の変更

ハイブリッド ランタイム プレーン コンポーネントの構成を変更するには、オーバーライド ファイルを編集し、管理ツールに応じて Helm または apigeectl を使用して変更を適用します。

たとえば、Message Processor のレプリカ数を変更する手順は次のとおりです。

  1. OVERRIDES.yaml ファイルを開きます。必ず Hybrid ランタイムをクラスタにインストールしたときに使用したものと同じオーバーライド ファイルを使用してください。
  2. ファイル内で runtime 要素を探します。例:
    ...
    runtime:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      replicaCountMin: 1
      replicaCountMax: 2
    ...
  3. レプリカ数のプロパティを必要に応じて変更します。次に例を示します。
    runtime:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      replicaCountMin: 2
      replicaCountMax: 20
    
  4. 次のコマンドを使用して変更を適用します。

    Helm

    同時にインストールできる環境は 1 つだけです。--set env=ENV_NAME で環境を指定します。

    1. 最初にドライランを実行します。
      helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run
      
      • ENV_RELEASE_NAME は、以前に apigee-env チャートをインストールしたときに使用した名前です。ハイブリッド v1.10 では通常、apigee-env-ENV_NAME です。ハイブリッド v1.11 以降では、通常は ENV_NAME です。
      • ENV_NAME はアップグレードする環境の名前です。
      • OVERRIDES_FILE はオーバーライド ファイルのパスです。1.3.6
    2. チャートをアップグレードします。
      helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
      

    apigeectl

    apigeectl を使用して変更をクラスタに適用します。

    apigeectl apply -f OVERRIDES.yaml --org --env apigee-env
  5. それぞれの環境の状態をチェックして、稼働していることを確認します。
    kubectl -n APIGEE_NAMESPACE get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d

変更可能な構成プロパティ

構成可能なプロパティの一覧については、構成プロパティ リファレンスをご覧ください。このリファレンスに掲載されているのは変更可能なプロパティだけです。ここに掲載されていないプロパティを変更しようとしても、その変更は無視されます。

構成リファレンスの使用方法

構成プロパティ リファレンスでは、ドット表記を使用して構成要素を記述します。最初の項目は、最上位の要素名の後ろにプロパティと子プロパティが続いています。次に例を示します。

ao.image.pullPolicy

オーバーライド ファイルでは、プロパティは適切な YAML にフォーマットされます。上記の例では、最上位の ao 要素が左にインデントされ、下位要素のプロパティはその下にインデントされています。また、YAML では、各要素と下位要素の末尾にコロンを付ける必要があります。

たとえば、ao.image.pullPolicy プロパティを Always に設定するには、オーバーライド ファイル内で該当する YAML スタンザを探して次のように設定します。

ao:
  image:
    pullPolicy: Always

次の例では、プロパティ cassandra.auth.admin.password構成プロパティ リファレンスに記載されたまま)を使用して Cassandra 管理者パスワードを設定しています。これを変更するには、オーバーライド ファイル内で次の YAML を探して次のように設定します。

cassandra:
  auth:
    admin:
      password: abc123

構成プロパティ リファレンスには Hybrid ランタイム プレーン コンポーネントで設定できるすべてのプロパティが掲載されています。変更をクラスタに適用する前に、上記のパターンに従ってオーバーライド ファイルでこの要素を変更します。

事前定義されたサンプル オーバーライド ファイルの使用

Hybrid ランタイムの初回インストール時には、いずれかの事前定義されたサンプル オーバーライド ファイルを使用することをおすすめします。 これらのサンプル ファイルには、本番環境やテスト環境のセットアップなど、具体的なインストール シナリオに合わせてすべての構成プロパティがあらかじめ記述されています。ユーザーが行うことは、プロパティに適切な値を設定してオーバーライド ファイルをクラスタに適用することだけです。詳細については、ステップ 6: クラスタを構成するをご覧ください。

構成のデフォルトについて

デフォルトのコンポーネント構成は HYBRID_ROOT_DIR/config/values.yaml というファイルに保持されています。オーバーライド ファイルは values.yaml と同じ YAML 構造です。

通常、オーバーライド ファイルには values.yaml に記述された構成プロパティの一部だけが含まれます。すべてのプロパティが編集可能なわけではないのでご注意ください。構成をクラスタに適用すると、オーバーライドがデフォルトと結合されて完全な Kubernetes クラスタ構成が作成されます。結合された構成をテストするもご覧ください。

次のコードは、values.yaml に含まれる mart コンポーネントのデフォルト構成を示します。デフォルト値が設定されているものもあれば、されていないものもあります(sslCertPathsslKeyPath など)。インストール手順で説明されているように、その値がないプロパティに値を設定する必要があります。デフォルト値を変更する場合は、構成プロパティ リファレンスを参照してそのプロパティが編集可能であることを確認してください。

...
mart:
  replicaCountMin: 2
  replicaCountMax: 4
  targetCPUUtilizationPercentage: 75
  terminationGracePeriodSeconds: 30
  sslCertPath:
  sslKeyPath:
  hostAlias:
  nodeSelector:
    key:
    value:
  revision: blue
  image:
    url: "gcr.io/apigee-release/hybrid/apigee-mart-server"
    tag: "1.3.6"
    pullPolicy: IfNotPresent
  resources:
    requests:
      cpu: 500m
      memory: 512Mi
  initCheckCF:
    resources:
      requests:
        cpu: 10m
  livenessProbe:
    timeoutSeconds: 1
    failureThreshold: 12
    periodSeconds: 5
    initialDelaySeconds: 15
  readinessProbe:
    timeoutSeconds: 1
    successThreshold: 1
    failureThreshold: 2
    periodSeconds: 5
    initialDelaySeconds: 15
  metricsURL: "/v1/server/metrics"
  cwcAppend: |
...

コンポーネントのデフォルトを変更する場合に、そのコンポーネントがオーバーライド ファイルに含まれていない場合は、values.yaml から該当する YAML をオーバーライド ファイルにコピーし、オーバーライド ファイルでプロパティを変更します。

サンプル オーバーライド ファイル

Apigee Hybrid には、Hybrid デプロイメントのセットアップに役立つサンプル オーバーライド ファイルがいくつか用意されています。インストール要件に最も近いオーバーライド ファイルをコピーして、そのファイルを変更することをおすすめします。

次のサンプル ファイルが HYBRID_ROOT_DIR/examples ディレクトリにあります。

サンプル オーバーライド ファイル 説明
overrides-small.yaml このサンプルはすぐに使い始める場合に適しています。推奨される最小限のフットプリントで Hybrid ランタイム コンポーネントが起動するようになっています。このサンプル構成は、デフォルトの設定と値に可能な限り従っています。レプリカの最小数はすべて 1 に設定されています。
overrides-medium.yaml このサンプルは、テスト環境や QA 環境の出発点として適しています。追加のトラフィックを扱えるように、個々のコンポーネントにはより高レベルのリソースが与えられています。パフォーマンスを考慮して、Cassandra では SSD が使用されます。この環境では、ステートフル コンポーネントとステートレス コンポーネントを別々のノードにインストールすることをおすすめします。専用ノードを構成するをご覧ください。
overrides-large.yaml このサンプルは、本番前環境や本番環境などの高パフォーマンス環境の出発点として適しています。このサンプルには、暗号鍵やパスワードなどを設定するためのプロパティが含まれています。個々のコンポーネントには、少なくとも 2 つのレプリカがあります。

カスタム アノテーション

Annotations は、Apigee ハイブリッド Kubernetes Pod にメタデータを追加するために使用する Key-Value マップです。構成プロパティのリファレンスに記載されている次のプロパティについては、カスタム アノテーションを作成できます。

カスタム アノテーションを追加するには、それぞれのコンポーネントの OVERRIDES.yaml ファイルにスタンザを追加します。

次の例は、runtime Pod でアノテーションを指定する方法を示しています。

runtime:
  annotations:
    businessunit: "bu1"

結合された構成をテストする

--dry-run フラグを使用すると、結合された構成ファイルを、実際にクラスタに適用せずにテストできます。この方法を使用すると、何がクラスタに適用されるかが正確に示されるため、インストールに関する問題のデバッグに役立ちます。また、構成をテストしてソース管理システムに保存しておくと、クラスタ内にインストールされて構成されているリソースを後で参照できるので便利です。

Helm

kubectl apply -k  apigee-operator/etc/crds/default/
      
helm upgrade operator apigee-operator/ \
  --install \
  --namespace apigee-system \
  --atomic \
  -f OVERRIDES_FILE.yaml \
  --dry-run
helm upgrade ingress-manager apigee-ingress-manager/ /
  --install \
  --namespace apigee \
  --atomic \
  -f OVERRIDES_FILE.yaml \
  --dry-run

apigeectl

APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES.yaml --dry-run=client

詳細については、apigeectl をご覧ください。

必要に応じて複数のオーバーライド ファイルを作成する

オーバーライド ファイルは、用途に合わせていくつでも作成できます。たとえば、本番環境クラスタを調整するためのオーバーライド ファイルと、テストクラスタを作成するためのオーバーライド ファイルを別々に用意できます。これらのファイルをソース管理システム内に保持できます。

次に例を示します。

Helm

helm upgrade test-1-env apigee-env/ \
  --namespace apigee \
  --atomic \
  --set env=test-1-env \
  -f test-1-env-overrides.yaml

apigeectl

$APIGEECTL_HOME/apigeectl apply -f test-1-env-overrides.yaml --env test-1-env

ハイブリッド固有のランタイム プレーン コンポーネントを削除する

ランタイム プレーン コンポーネントは、synchronizermartruntimecassandraudca などがあります。

ハイブリッド固有のランタイム プレーン コンポーネントをクラスタから削除するには、helm delete コマンドまたは apigeectl delete コマンドを使用します。そのランタイム コンポーネントのインストールに使用したのと同じオーバーライド ファイルを指定してください。

次に例を示します。

Helm

Helm を使用するときは、各コンポーネントを個別に削除する必要があります。たとえば、cassandra コンポーネントを削除するには、次のコマンドを使用します。
helm -n apigee delete datastore

上記の例では、データストア コンポーネントは「datastore」という名前でインストールされています。別の名前でインストールした場合は、その名前を指定してコンポーネントを削除します。たとえば、helm install my-cassandra-storage apigee-datastore/ を使用して apigee-datastore チャートをインストールした場合は、削除には次のコマンドを使用します。

helm delete -n apigee my-cassandra-storage

apigeectl

apigeectl では、すべてのランタイム コンポーネントを一度に削除することも、範囲を制限して一度に 1 つのコンポーネントを削除することもできます。たとえば、すべてのコンポーネントを一度に削除するには、次のようにします。
$APIGEECTL_HOME/apigeectl delete -f OVERRIDES_FILE.yaml

cassandra コンポーネントを削除するには:

$APIGEECTL_HOME/apigeectl delete -f OVERRIDES_FILE.yaml --datastore

特定のコンポーネント(この例では環境グループ)を再作成するには:

Helm

helm upgrade ENV_GROUP apigee-virtualhost/ \
  --install \
  --namespace apigee \
  --atomic \
  --set envgroup=ENV_GROUP_NAME \
  -f OVERRIDES_FILE.yaml

apigeectl

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --env ENV_NAME --settings virtualhosts