環境は、API プロキシを実行するための分離されたコンテキスト、すなわち「サンドボックス」を提供します。単一の組織で複数の環境を作成できます。
次のコードは、複数の環境が定義されている構成をオーバーライドする例を示しています。
namespace: my-namespace org: my-organization ... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json - name: prod serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json ...
ベースパス /foo1
のプロキシが環境 test にデプロイされているとします。このプロキシは、次のように呼び出すことができます。
curl -k https://api.example.com/foo1
この呼び出しが Ingress に到着すると、Ingress は呼び出しリクエストを処理する test
環境の Message Processor に呼び出しを送信します。
同様に、foo1
が prod
環境にもデプロイされている場合は、ホスト エイリアス apiprod.mydomain.net
に次のようなプロキシ リクエストを発行できます。
curl -k https://apiprod.example.com/foo1
この呼び出しは、Ingress によってそのホストに関連付けられている MP にルーティングされます。
アンチパターン: すべてのプロキシを 1 つのハイブリッド環境にデプロイする。
ベスト プラクティス: 複数の環境を作成し、各環境に限られた数のプロキシをデプロイする。
デプロイするプロキシの数を制限する
ハイブリッドの場合、多くの環境で環境グループ内で定義されている仮想ホストを共有できます。これは、特定の環境へのプロキシ デプロイの管理方法を慎重に検討する必要があることを意味します。ハイブリッドでは、複数の環境を作成して、それぞれの環境に限られた数のプロキシをデプロイすることをおすすめします。
環境にはプロキシをいくつデプロイすべきでしょうか。この質問に対する決まった答えはありませんが、次の表に、各環境にデプロイするプロキシの数を制限することが推奨される理由と、プロキシ デプロイを管理する際に考慮すべき事項に関する一般的なガイダンスを示します。
考慮すべき課題 | 説明 |
---|---|
Message Processor の起動時間 | Message Processor(MP)が起動するまでの時間とその MP にデプロイされるプロキシの数には直接的な相関関係があります。自動スケーリングの Kubernetes 環境では、起動時間の増加が問題になることがあります。MP にデプロイされるプロキシが多いほど、その MP のスケーリングや再作成が必要な場合に MP の起動時間が長くなります。 |
スケーリングのパフォーマンス | 1 つの環境に複数のプロキシがデプロイされ、プロキシの 1 つが大量のトラフィックを受信するために頻繁に自動スケーリングする場合、その環境内のすべてのプロキシがスケーリングされます。複数のプロキシをスケーリングする際、トラフィック量の多いプロキシが 1 つでもあると、パフォーマンスが低下することがあります。 |
ノイジー ネイバー | 同じ環境に複数のプロキシがデプロイされた状態で、プロキシが 1 つでもクラッシュすると、MP の再起動中にその環境内のすべてのプロキシが停止します。1 つの環境にデプロイされるプロキシの数を制限することで、単一のプロキシがクラッシュする影響を最小限にできます。 |
環境グループと仮想ホスト
環境グループを使用すると、環境をグループ化できます。各グループ内の環境は、同じホスト名を共有します。関数別やホスト名アドレス別、またはマルチリージョン ハイブリッド インストールを行う場合にはリージョン別、または選択したその他の指標別に環境をグループ化できます。
ルーティングは、環境グループのホスト名、API プロキシのベースパス、環境の組み合わせによって管理されるため、各仮想ホストは、環境グループの名前と該当する証明書を一覧表示するだけで済みます。
次のコードは、複数の VirtualHost が定義されている構成をオーバーライドする例を示しています。VirtualHost の名前は環境グループの名前にする必要があります。
gcp: region: us-central1 projectID: hybrid-example k8sCluster: name: apigee-hybrid region: us-central1 org: hybrid-example instanceID: "my_hybrid_example" virtualhosts: - name: group-1 # the name of an environment group sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key virtualhosts: - name: group-2 sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key ...