1.5. Operator を使用した OpenShift での 3scale API Management のデプロイメント設定オプション
この注記に含まれる外部の Web サイトへのリンクは、お客様の利便性のみを目的として提供しています。Red Hat はリンクの内容を確認しておらず、コンテンツまたは可用性に責任を負わないものとします。外部 Web サイトへのリンクが含まれていても、Red Hat が Web サイトまたはその組織、製品、もしくはサービスを保証することを意味するものではありません。お客様は、外部サイトまたはコンテンツの使用 (または信頼) によって生じる損失または費用について、Red Hat が責任を負わないことに同意するものとします。
このセクションでは、Operator を使用した OpenShift への Red Hat 3scale API Management のデプロイメント設定オプションを説明します。
前提条件
- Operator を使用して 3scale API Management をデプロイするには、まず OpenShift への 3scale API Management オペレーターのインストール の手順に従う必要があります。
OpenShift Container Platform 4.x
- OpenShift クラスターの管理者権限を持つユーザーアカウント。
1.5.1. Embedded APIcast のプロキシーパラメーターの設定 リンクのコピーリンクがクリップボードにコピーされました!
3scale の管理者は、Embedded APIcast ステージングおよび実稼働環境用のプロキシーパラメーターを設定することができます。このセクションでは、APIManager カスタムリソース (CR) でプロキシーパラメーターを指定するための参照情報を提供します。つまり、3scale Operator (APIManager CR) を使用して 3scale を OpenShift にデプロイします。
これらのパラメーターは、APIManager CR を初めてデプロイするときに指定できます。または、デプロイされた APIManager CR を更新すると、Operator が更新を調整します。APIManager カスタムリソースのデプロイ を参照してください。
Embedded APIcast には、プロキシー関連の 4 つの設定パラメーターがあります。
-
allProxy -
httpProxy -
httpsProxy -
noProxy
allProxy
allProxy パラメーターは、要求でプロトコル固有のプロキシーが指定されていない場合にサービスに接続するために使用される HTTP または HTTPS プロキシーを指定します。
プロキシーを設定したら、allProxy パラメーターをプロキシーのアドレスに設定して APIcast を設定します。プロキシーでは認証機能はサポートされていません。つまり、APIcast では認証された要求はプロキシーには送信されません。
allProxy パラメーターの値は文字列で、デフォルトはなく、パラメーターは必須ではありません。この形式を使用して、spec.apicast.productionSpec.allProxy パラメーターまたは spec.apicast.stagingSpec.allProxy パラメーターを設定します。
<scheme>://<host>:<port>
以下に例を示します。
httpProxy
httpProxy パラメーターは、HTTP サービスへの接続に使用される HTTP プロキシーを指定します。
プロキシーを設定したら、httpProxy パラメーターをプロキシーのアドレスに設定して APIcast を設定します。プロキシーでは認証機能はサポートされていません。つまり、APIcast では認証された要求はプロキシーには送信されません。
httpProxy パラメーターの値は文字列で、デフォルトはなく、パラメーターは必須ではありません。この形式を使用して、spec.apicast.productionSpec.httpProxy パラメーターまたは spec.apicast.stagingSpec.httpProxy パラメーターを設定します。
http://<host>:<port>
以下に例を示します。
httpsProxy
httpsProxy パラメーターは、サービスへの接続に使用される HTTPS プロキシーを指定します。
プロキシーを設定したら、httpsProxy パラメーターをプロキシーのアドレスに設定して APIcast を設定します。プロキシーでは認証機能はサポートされていません。つまり、APIcast では認証された要求はプロキシーには送信されません。
httpsProxy パラメーターの値は文字列で、デフォルトはなく、パラメーターは必須ではありません。この形式を使用して、spec.apicast.productionSpec.httpsProxy パラメーターまたは spec.apicast.stagingSpec.httpsProxy パラメーターを設定します。
https://<host>:<port>
以下に例を示します。
noProxy
noProxy パラメーターは、ホスト名とドメイン名のコンマ区切りリストを指定します。要求にこれらの名前のいずれかが含まれる場合、APIcast は要求をプロキシーしません。
たとえば、メンテナンス操作中にプロキシーへのアクセスを停止する必要がある場合は、noProxy パラメーターをアスタリスク (*) に設定します。これは、すべての要求で指定されたすべてのホストに一致し、プロキシーを実質的に無効にします。
noProxy パラメーターの値は文字列で、デフォルトはなく、パラメーターは必須ではありません。spec.apicast.productionSpec.noProxy パラメーターまたは spec.apicast.stagingSpec.noProxy パラメーターを設定するには、コンマ区切りの文字列を指定します。以下に例を示します。
1.5.2. 3scale API Management Operator を使用したカスタム環境の挿入 リンクのコピーリンクがクリップボードにコピーされました!
Embedded APIcast を使用する 3scale インストールでは、3scale Operator を使用してカスタム環境を注入できます。Embedded APIcast は、Managed APIcast または Hosted APIcast とも呼ばれます。カスタム環境は、ゲートウェイが提供するすべてのアップストリーム API に APIcast が適用する動作を定義します。カスタム環境を作成するには、Lua コードでグローバル設定を定義します。
3scale のインストールの前または後にカスタム環境を注入できます。カスタム環境を注入した後、および 3scale をインストールした後、カスタム環境を削除できます。3scale Operator は変更を調整します。
前提条件
- 3scale Operator がインストールされている。
手順
注入するカスタム環境を定義する Lua コードを記述します。たとえば、次の
env1.luaファイルは、3scale Operator がすべてのサービスに対してロードするカスタムログポリシーを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム環境を定義する Lua ファイルからシークレットを作成します。以下に例を示します。
oc create secret generic custom-env-1 --from-file=./env1.lua
$ oc create secret generic custom-env-1 --from-file=./env1.luaCopy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットには複数のカスタム環境を含めることができます。カスタム環境を定義する各ファイルの
-from-fileオプションを指定します。Operator は各カスタム環境をロードします。作成したシークレットを参照する APIManager カスタムリソース (CR) を定義します。以下の例は、カスタム環境を定義するシークレットの参照に関連するコンテンツのみを示しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow APIManager CR は、カスタム環境を定義する複数のシークレットを参照できます。Operator は各カスタム環境をロードします。
カスタム環境を追加する APIManager CR を作成します。以下に例を示します。
oc apply -f apimanager.yaml
$ oc apply -f apimanager.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
カスタム環境を定義するシークレットのコンテンツを更新することはできません。カスタム環境を更新する必要がある場合は、以下のいずれかを実行できます。
-
推奨されるオプションは、別の名前でシークレットを作成し、APIManager CR フィールドの
customEnvironments[].secretRef.nameを更新することです。Operator はローリング更新をトリガーし、更新されたカスタム環境をロードします。 -
あるいは、
spec.apicast.productionSpec.replicasまたはspec.apicast.stagingSpec.replicasを 0 に設定して既存のシークレットを更新してから、spec.apicast.productionSpec.replicasまたはspec.apicast.stagingSpec.replicasを以前の値に設定して APIcast を再デプロイし直します。
1.5.3. 3scale API Management Operator を使用したカスタムポリシーの挿入 リンクのコピーリンクがクリップボードにコピーされました!
Embedded APIcast を使用する 3scale インストールでは、3scale Operator を使用してカスタムポリシーを注入できます。Embedded APIcast は、Managed APIcast または Hosted APIcast とも呼ばれます。カスタムポリシーを注入すると、ポリシーコードが APIcast に追加されます。次に、以下のいずれかを使用して、カスタムポリシーを API 製品のポリシーチェーンに追加できます。
- 3scale API
-
Productカスタムリソース (CR)
3scale 管理ポータルを使用してカスタムポリシーを製品のポリシーチェーンに追加するには、カスタムポリシーのスキーマを CustomPolicyDefinition CR に登録する必要もあります。カスタムポリシー登録は、管理ポータルを使用して製品のポリシーチェーンを設定する場合にのみ必要です。
3scale インストールの一部として、またはインストール後にカスタムポリシーを挿入できます。カスタムポリシーを注入し、3scale をインストールした後、APIManager CR から指定内容を削除することにより、カスタムポリシーを削除できます。3scale Operator は変更を調整します。
前提条件
- 3scale Operator をインストールしているか、以前にインストールしている。
-
Write your own policy で説明されているように、カスタムポリシーを定義している。つまり、カスタムポリシーを定義する
my-policy.lua、apicast-policy.json、およびinit.luaファイルなどをすでに作成している。
手順
1 つのカスタムポリシーを定義するファイルからシークレットを作成します。以下に例を示します。
oc create secret generic my-first-custom-policy-secret \ --from-file=./apicast-policy.json \ --from-file=./init.lua \ --from-file=./my-first-custom-policy.lua
$ oc create secret generic my-first-custom-policy-secret \ --from-file=./apicast-policy.json \ --from-file=./init.lua \ --from-file=./my-first-custom-policy.luaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 複数のカスタムポリシーがある場合は、カスタムポリシーごとにシークレットを作成します。シークレットには、カスタムポリシーを 1 つだけ含めることができます。
3scale Operator を使用してシークレットの変更を監視します。
apimanager.apps.3scale.net/watched-by=apimanagerラベルを追加して、3scale Operator シークレットの変更の監視を開始します。oc label secret my-first-custom-policy-secret apimanager.apps.3scale.net/watched-by=apimanager
$ oc label secret my-first-custom-policy-secret apimanager.apps.3scale.net/watched-by=apimanagerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトでは、シークレットへの変更は 3scale Operator によって追跡されません。ラベルを設定すると、シークレットに変更を加えるたびに 3scale Operator が APIcast デプロイメントを自動的に更新します。これは、シークレットが使用されているステージング環境と実稼働環境の両方で発生します。3scale Operator は、いかなる形でもシークレットの所有権を取得しません。
カスタムポリシーが含まれる各シークレットを参照する APIManager CR を定義します。APIcast ステージングと APIcast 実稼働環境に同じシークレットを指定できます。次の例は、カスタムポリシーを含む参照シークレットに関連するコンテンツのみを示しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow APIManager CR は、異なるカスタムポリシーを定義する複数のシークレットを参照できます。Operator は各カスタムポリシーをロードします。
カスタムポリシーが含まれるシークレットを参照する APIManager CR を作成します。以下に例を示します。
oc apply -f apimanager.yaml
$ oc apply -f apimanager.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
apimanager.apps.3scale.net/watched-by=apimanager ラベルを適用すると、3scale Operator はシークレットの変更の監視を開始します。これで、シークレット内のカスタムポリシーを変更できるようになり、Operator がローリング更新を開始して、更新されたカスタム環境をロードします。
-
あるいは、
spec.apicast.productionSpec.replicasまたはspec.apicast.stagingSpec.replicasを 0 に設定して既存のシークレットを更新してから、spec.apicast.productionSpec.replicasまたはspec.apicast.stagingSpec.replicasを以前の値に設定して APIcast を再デプロイし直します。
1.5.4. 3scale API Management Operator を使用した OpenTracing の設定 リンクのコピーリンクがクリップボードにコピーされました!
Embedded APIcast を使用する 3scale インストールでは、3scale Operator を使用して OpenTracing を設定できます。OpenTracing は、ステージング環境または実稼働環境用または両方の環境で設定することができます。OpenTracing を有効にすると、APIcast インスタンスに関してより多くの洞察を得て、可観測性を向上できます。
前提条件
- 3scale Operator がインストールされているか、インストール中である。
手順
stringData.configに OpenTracing 設定の詳細を含めて、シークレットを定義します。これは、OpenTracing 設定の詳細が含まれる属性の唯一有効な値です。その他の仕様では、APIcast が OpenTracing 設定の詳細を受け取れないようにします。以下の例は、有効なシークレット定義を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットを作成します。たとえば、以前のシークレット定義を
myjaeger.yamlファイルに保存した場合は、以下のコマンドを実行します。oc create -f myjaeger.yaml
$ oc create -f myjaeger.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenTracing属性を指定する APIManager カスタムリソース (CR) を定義します。CR 定義で、openTracing.tracingConfigSecretRef.name属性を OpenTracing 設定の詳細が含まれるシークレットの名前に設定します。以下の例は、OpenTracing の設定に関するコンテンツのみを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenTracing を設定する APIManager CR を作成します。たとえば、APIManager CR を
apimanager1.yamlファイルに保存した場合は、以下のコマンドを実行します。oc apply -f apimanager1.yaml
$ oc apply -f apimanager1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
OpenTracing のインストール方法に応じて、Jaeger サービスユーザーインターフェイスでトレースが表示されるはずです。
1.5.5. 3scale API Management Operator を使用して Pod レベルで TLS を有効にする リンクのコピーリンクがクリップボードにコピーされました!
3scale では、実稼働環境用とステージング環境用の 2 つの APIcast インスタンスをデプロイします。TLS は、実稼働用またはステージングのみ、または両方のインスタンスに対して有効にできます。
前提条件
- TLS を有効にするための有効な証明書がある。
手順
以下のように、有効な証明書からシークレットを作成します。
oc create secret tls mycertsecret --cert=server.crt --key=server.key
$ oc create secret tls mycertsecret --cert=server.crt --key=server.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow この設定により、APIManager カスタムリソース (CR) 内のシークレット参照が公開されます。シークレットを作成してから、以下のように APIManager CR でシークレットの名前を参照します。
-
実稼働: APIManager CR は
.spec.apicast.productionSpec.httpsCertificateSecretRefフィールドの証明書を公開します。 ステージング: APIManager CR は
.spec.apicast.stagingSpec.httpsCertificateSecretRefフィールドの証明書を公開します。必要に応じて、以下を設定できます。
-
httpsPortは、APIcast が HTTPS 接続に対してリッスンを開始するポートを示します。これが HTTP ポートと競合する場合には、APIcast はこのポートを HTTPS にのみ使用します。 httpsVerifyDepthは、クライアント証明書チェーンの最大長を定義します。注記APIManager CR から有効な証明書および参照を指定します。設定で
httpsPortにアクセスでき、httpsCertificateSecretRefではない場合、APIcast は組み込まれた自己署名証明書を使用します。これは、推奨されません。
-
実稼働: APIManager CR は
- Operators > Installed Operators の順にクリックします。
- Installed Operators のリストで、3scale Operator をクリックします。
- API Manager タブをクリックします。
- Create APIManager をクリックします。
以下の YAML 定義をエディターに追加します。
実稼働 環境で有効にする場合は、次の YAML 定義を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow staging で有効にする場合は、以下の YAML 定義を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Create をクリックします。
1.5.6. 評価用デプロイメントの概念実証 リンクのコピーリンクがクリップボードにコピーされました!
以降のセクションで、3scale の評価用デプロイメントの概念実証に適用される設定オプションを説明します。このデプロイメントでは、デフォルトとして内部データベースが使用されます。
外部データベースの設定は、実稼働環境向けの標準デプロイメントオプションです。
1.5.6.1. デフォルトのデプロイメント設定 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーには、Kubernetes によるリソースの制限およびリクエスト が適用されます。
- これにより、最低限のパフォーマンスレベルが確保されます。
- また、外部サービスおよびソリューションの割り当てを可能にするために、リソースを制限します。
- 内部データベースのデプロイメント
ファイルストレージは、永続ボリューム (PV) がベースになります。
- ボリュームの 1 つには、読み取り、書き込み、実行 (RWX) アクセスモードが必要です。
- OpenShift は、リクエストに応じてこれらを提供するように設定されている必要があります。
- MySQL を内部リレーショナルデータベースとしてデプロイします。
デフォルトの設定オプションは、お客様による概念実証 (PoC) または評価用途に適しています。
デフォルト設定オプションの 1 つ、複数、またはすべてを、APIManager カスタムリソース (CR) の特定のフィールド値でオーバーライドできます。3scale 演算子では、利用可能なすべての組み合わせが可能です。たとえば、3scale Operator を使用すると、評価モードおよび外部データベースモードで 3scale をデプロイすることができます。
1.5.6.2. 評価モードでのインストール リンクのコピーリンクがクリップボードにコピーされました!
評価モードでのインストールの場合、コンテナーには Kubernetes によるリソースの制限およびリクエスト が適用されません。以下に例を示します。
- メモリーのフットプリントが小さい。
- 起動が高速である。
- ノートパソコンで実行可能である。
- プリセールス/セールスでのデモに適する。
関連情報
1.5.7. 外部データベースモードでのインストール リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat 3scale API Management デプロイメントからデータベースを外部化すると、アプリケーションからの分離とデータベースレベルでのサービス中断に対する回復力が提供されることになります。サービス中断に対する復元力は、データベースをホストするインフラストラクチャーまたはプラットフォームプロバイダーが提供するサービスレベルアグリーメント (SLA) によって異なります。これは 3scale では提供されていません。選択したデプロイメントによって提供されるデータベースの外部化の詳細は、関連ドキュメントを参照してください。
- 免責事項: ここに記載されている外部 Web サイトへのリンクは、お客様の利便性のみを目的として提供されています。Red Hat はリンクの内容を確認しておらず、コンテンツまたは可用性に責任を負わないものとします。外部 Web サイトへのリンクが含まれていても、Red Hat が Web サイトまたはその組織、製品、もしくはサービスを保証することを意味するものではありません。お客様は、外部サイトまたはコンテンツの使用 (または信頼) によって生じる損失または費用について、Red Hat が責任を負わないことに同意するものとします。
外部データベースのインストールは、中断のない稼働時間を提供したい場合、または独自のデータベースを再利用する予定がある運用環境に適しています。
3scale の外部データベースインストールモードを有効にすると、以下のデータベースの 1 つまたな複数を 3scale の外部として設定できます。
-
backend-redis -
system-redis -
system-database(mysql、postgresql、またはoracle) -
zync-database
3scale をデプロイするために APIManager CR を作成する前に、OpenShift シークレットを使用して以下に示す外部データベースの接続設定を提供する必要があります。
1.5.7.1. バックエンド Redis シークレット リンクのコピーリンクがクリップボードにコピーされました!
3scale バックエンドは、ストレージ用とキュー用の 2 つの Redis データベースを使用します。ストレージデータベースには、API サービス、アプリケーションキー、メトリクス、制限、使用状況データ (現在の使用状況や履歴分析を含む) に関する情報が保存されます。使用率データは Redis ストレージデータベースに固有ですが、システムコンポーネントのデータベースはその他のデータの主なソースであり、必要に応じて再作成できます。
キューデータベースは、API の使用状況をレポートするために、Resque に基づいてバックグラウンドジョブキューを一時的に保存します。バックエンドリスナーがこれらのジョブを作成し、バックエンドワーカーがそれらを処理します。
2 つの外部 Redis インスタンスをデプロイし、以下の例に示すように接続設定を入力します。
シークレット 名は backend-redis にする必要があります。
| フィールド | 説明 | デフォルト値 |
|---|---|---|
| REDIS_STORAGE_URL | バックエンド Redis ストレージデータベースの URL。 |
インスタンスが外部で管理される場合は必須です。それ以外の場合、デフォルト値は |
| REDIS_STORAGE_SENTINEL_ROLE |
バックエンド Redis Storage Sentinel Role 名 ( |
|
| REDIS_STORAGE_SENTINEL_HOSTS | バックエンド Redis Storage Sentinel Hosts 名。Redis データベースで Redis Sentinel が設定されている場合にのみ使用します。 |
|
| REDIS_QUEUES_URL | バックエンド Redis Queues データベース URL。 |
インスタンスが外部で管理される場合は必須です。それ以外の場合、デフォルト値は |
| REDIS_QUEUES_SENTINEL_ROLE |
バックエンド Redis Queues Sentinel Role 名 ( |
|
| REDIS_QUEUES_SENTINEL_HOSTS | バックエンド Redis Queues Sentinel Hosts 名。Redis データベースで Redis Sentinel が設定されている場合にのみ使用します。 |
|
1.5.7.2. システム Redis シークレット リンクのコピーリンクがクリップボードにコピーされました!
2 つの外部 Redis インスタンスをデプロイし、以下の例に示すように接続設定を入力します。
シークレット 名は system-redis にする必要があります。
| フィールド | 説明 | デフォルト値 |
|---|---|---|
| URL | システム Redis データベース URL。 |
インスタンスが外部で管理される場合は必須です。それ以外の場合、デフォルト値は |
| SENTINEL_HOSTS | システム Redis Sentinel ホスト。Redis Sentinel が設定されている場合にのみ使用します。 |
|
| SENTINEL_ROLE |
システム Redis Sentinel ロール名 ( |
|
1.5.7.3. システムデータベースシークレット リンクのコピーリンクがクリップボードにコピーされました!
-
シークレット 名は
system-databaseにする必要があります。
3scale をデプロイする場合には、システムデータベースに 3 つの代替手段があります。代替手段に関連のシークレットごとに、異なる属性と値を設定します。
- MySQL
- PostgreSQL
- Oracle データベース
MySQL、PostgreSQL、または Oracle Database のシステムデータベースシークレットをデプロイするには、以下の例のように接続設定を入力します。
MySQL システムデータベースシークレット
3scale 2.15 で MySQL 8.0 を使用する場合は、認証プラグインを mysql_native_password に設定する必要があります。MySQL 設定ファイルに以下を追加します。
[mysqld] default_authentication_plugin=mysql_native_password
[mysqld]
default_authentication_plugin=mysql_native_password
PostgreSQL システムデータベースシークレット
Oracle システムデータベースシークレット
-
{DB_USER}および{DB_PASSWORD}は、通常の非システムユーザーのユーザー名およびパスワードです。 -
{DB_NAME}は Oracle Database の サービス名 です。 -
ORACLE_SYSTEM_PASSWORDはオプションです。データベースユーザーの設定 を参照してください。
1.5.7.4. Zync データベースシークレット リンクのコピーリンクがクリップボードにコピーされました!
zync データベースの設定では、spec.externalComponents.zync.database フィールドが true に設定されている場合、3scale をデプロイする前に zync という名前のシークレットを作成する必要があります。このシークレットでは、DATABASE_URL および DATABASE_PASSWORD フィールドを外部の zync データベースを参照する値に設定します。以下に例を示します。
zync データベースは高可用性モードである必要があります。
1.5.7.5. 3scale API Management をデプロイするための APIManager カスタムリソース リンクのコピーリンクがクリップボードにコピーされました!
-
外部コンポーネントを有効にする場合は、3scale をデプロイする前に、外部コンポーネント (
backend-redis、system-redis、system-database、zync) ごとにシークレットを作成する必要があります。 -
外部の
system-databaseの場合は、外部化するデータベースのタイプを 1 つだけ選択します。
APIManager カスタムリソース (CR) の設定は、選択したデータベースが 3scale デプロイメントの外部にあるかどうかによって異なります。
backend-redis、system-redis、または system-database が 3scale の外部にある場合は、次の例に示すように APIManager CR externalComponents オブジェクトを設定します。
1.5.8. 3scale API Management Operator での Pod アフィニティーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
すべてのコンポーネントの 3scale Operator で Pod アフィニティーを有効にすることができます。これにより、各 deploymentConfig からの Pod レプリカがクラスターの異なるノードに確実に分散され、異なるアベイラビリティーゾーン (AZ) 間で均等に分散されるようになります。
1.5.8.1. コンポーネントレベルでのノードのアフィニティーおよび容認のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
APIManager CR 属性を使用して、3scale ソリューションの Kubernetes の アフィニティー と 容認 をカスタマイズします。これを行うと、さまざまな 3scale コンポーネントを Kubernetes ノードにスケジュールするようにカスタマイズできます。
たとえば、backend-listener のカスタムノードアフィニティーと system-memcached のカスタム容認を設定するには、次の手順を実行します。
カスタムのアフィニティーと容認
次のアフィニティーブロックを apicastProductionSpec またはデータベース以外の deploymentConfig に追加します。これにより、preferredDuringSchedulingIgnoredDuringExecution を使用したソフト podAntiAffinity 設定が追加されます。スケジューラーは、この apicast-production Pod のセットを、異なる AZ の別々のホストで実行しようとします。それが不可能な場合は、別の場所で実行できるようにします。
ソフト podAntiAffinity
次の例では、requiredDuringSchedulingIgnoredDuringExecution を使用してハード podAntiAffinity 設定を指定します。Pod をノードにスケジュールするには、条件が満たされる必要があります。空きリソースが少ないクラスターでは、新しい Pod をスケジュールできなくなるなどのリスクが存在します。
ハード podAntiAffinity
1.5.9. 複数のアベイラビリティーゾーン内の複数のクラスター リンクのコピーリンクがクリップボードにコピーされました!
障害が発生した場合、パッシブクラスターをアクティブモードにすると、手順が完了するまでサービスのプロビジョニングが中断されます。このサービス中断が生じるため、メンテナンス期間を設けるようにしてください。
このドキュメントでは、Amazon Web Services (AWS) を使用したデプロイメントに焦点を当てています。他のパブリッククラウドベンダーにも、同じ設定オプションが適用されます。このようなプロバイダーのマネージドデータベースサービスでは、複数のアベイラビリティーゾーンや複数のリージョンがサポートされてします。
3scale を複数の OpenShift クラスターおよび高可用性 (HA) ゾーンにインストールする場合は、ここで紹介するオプションを利用できます。
複数クラスターのインストールオプションでは、クラスターはアクティブ/パッシブ設定で動作し、フェイルオーバー手順にいくつかの手動手順が含まれます。
1.5.9.1. 複数クラスターのインストールの前提条件 リンクのコピーリンクがクリップボードにコピーされました!
複数の OpenShift クラスターを使用する 3scale インストールでは、以下を使用します。
-
APIManager カスタムリソース (CR) の
kubernetes.io/hostnameルールとtopology.kubernetes.io/zoneルールの両方で Pod アフィニティーを使用します。 -
APIManager カスタムリソース (CR) の
kubernetes.io/hostnameルールとtopology.kubernetes.io/zoneルールの両方で Pod アフィニティーを使用します。 - APIManager CR で Pod の Disruption Budget を使用します。
- 複数のクラスターにわたる 3scale インストールでは APIManager CR で、同じ共有の wildcardDomain 属性仕様を使用する必要があります。データベースに保存されている情報が競合するため、このインストールモードではクラスターごとに異なるドメインを使用することはできません。
トークンやパスワードなどの認証情報を含むシークレットを、同じ値を使用してすべてのクラスターに手動でデプロイする必要があります。3scale Operator は、クラスターごとにセキュアなランダム値を使用してシークレットを作成します。この場合、両方のクラスターで同じ認証情報が必要です。シークレットのリストとその設定方法は、3scale Operator のドキュメントに記載されています。以下は、両方のクラスターでミラーリングする必要があるシークレットのリストです。
-
backend-internal-api -
system-app -
system-events-hook -
system-master-apicast system-seedbackend-redis、system-redis、system-database、およびzyncのデータベース接続文字列を使用してシークレットを手動でデプロイする必要があります。外部データベースモードでのインストール を参照してください。- クラスター間で共有されるデータベースは、すべてのクラスターで同じ値を使用する必要があります。
- 各クラスターに独自のデータベースがある場合は、クラスターごとに異なる値を使用する必要があります。
-
1.5.9.5. 同期データベースを使用した異なるリージョン上のアクティブ/パッシブクラスター リンクのコピーリンクがクリップボードにコピーされました!
このセットアップでは、異なるリージョンに 2 つ以上のクラスターを配置し、アクティブ/パッシブモードで 3scale をデプロイします。1 つのクラスターはアクティブでトラフィックを受信します。他のクラスターはスタンバイモードでトラフィックを受信しないためパッシブですが、アクティブクラスターに障害が発生した際にアクティブロールを引き受けることができるよう準備されています。
適切なデータベースアクセスレイテンシーを実現するために、各クラスターに独自のデータベースインスタンスがあります。アクティブな 3scale インストールのデータベースが 3scale パッシブインストールの読み取りレプリカデータベースにレプリケートされるため、すべてのリージョンでデータが利用可能で最新の状態になり、フェイルオーバーが可能になります。
1.5.9.6. 同期データベースの設定とインストール リンクのコピーリンクがクリップボードにコピーされました!
手順
- 異なるアベイラビリティーゾーンを使用して、異なるリージョンに 2 つ以上の OpenShift クラスターを作成します。3 つ以上のゾーンを使用することを推奨します。
すべてのリージョンで Amazon RDS Multi-AZ を有効にして、必要なすべての AWS ElastiCache インスタンスを作成します。
- Backend Redis データベース用の AWS EC を 2 つ: リージョンごとに 1 つ。
- System Redis データベース用の AWS EC を 2 つ: リージョンごとに 1 つ。
- グローバルデータストア機能を有効にしてクロスリージョンレプリケーションを使用します。これにより、パッシブリージョンのデータベースがアクティブリージョンのマスターデータベースからの読み取りレプリカになります。
すべてのリージョンで Amazon RDS Multi-AZ を有効にして、必要なすべての AWS RDS インスタンスを作成します。
- System データベース用の AWS RDS を 2 つ。
- Zync データベース用の AWS RDS を 2 つ
- クロスリージョンレプリケーションを使用します。これにより、パッシブリージョンのデータベースがアクティブリージョンのマスターデータベースからの読み取りレプリカになります。
- クロスリージョンレプリケーションを使用して、各リージョンのシステムアセット用の AWS S3 バケットを設定します。
- AWS Route53 またはお使いの DNS プロバイダーでカスタムドメインを作成し、アクティブなクラスターの OpenShift ルーターを参照するようにします。これは、APIManager CR の wildcardDomain 属性と一致する必要があります。
3scale をパッシブクラスターにインストールします。APIManager CR は、前のステップで使用したものと同一である必要があります。すべての Pod が実行されたら、すべての
backend、system、zync、およびAPIcastPod に 0 個のレプリカをデプロイするように APIManager を変更します。- アクティブなデータベースからのジョブの消費を避けるために、レプリカを 0 に設定します。最初に各レプリカが 0 に設定されていると、Pod の依存関係によりデプロイメントが失敗します。たとえば、Pod は他の Pod が実行されているかどうかを確認します。まず通常どおりにデプロイしてから、レプリカを 0 に設定します。
1.5.9.7. 同期データベースの手動フェイルオーバー リンクのコピーリンクがクリップボードにコピーされました!
手順
共有データベースの手動フェイルオーバー の手順 1、2、および 3 を実行します。
- すべてのクラスターに、独自の独立したデータベース、つまりアクティブリージョンのマスターからの読み取りレプリカがあります。
- すべてのデータベースでフェイルオーバーを手動で実行して、パッシブリージョンで新しいマスターを選択する必要があります。選択すると、そのマスターがアクティブリージョンになります。
実行する必要があるデータベースの手動フェイルオーバーは次のとおりです。
- AWS RDS: System と Zync。
- AWS ElastiCaches: Backend と System。
- 共有データベースの手動フェイルオーバー の手順 4 を実行します。
1.5.10. Amazon Simple Storage Service 3scale API Management fileStorage のインストール リンクのコピーリンクがクリップボードにコピーされました!
3scale をデプロイするための APIManager カスタムリソース (CR) を作成する前に、OpenShift シークレットを使用して Amazon Simple Storage Service (Amazon S3) サービスの接続設定を提供します。
- ローカルファイルシステムストレージで 3scale をデプロイする場合は、このセクションを飛ばして次に進んでください。
- シークレットに選択する名前は、既存のシークレット名ではなく、APIManager CR で参照される限り、任意の名前にすることができます。
-
S3 互換ストレージに
AWS_REGIONが提供されていない場合は、defaultを使用してください。そうしないと、デプロイメントが失敗します。 - 免責事項: ここに記載されている外部 Web サイトへのリンクは、お客様の利便性のみを目的として提供されています。Red Hat はリンクの内容を確認しておらず、コンテンツまたは可用性に責任を負わないものとします。外部 Web サイトへのリンクが含まれていても、Red Hat が Web サイトまたはその組織、製品、もしくはサービスを保証することを意味するものではありません。お客様は、外部サイトまたはコンテンツの使用 (または信頼) によって生じる損失または費用について、Red Hat が責任を負わないことに同意するものとします。
1.5.10.1. Amazon S3 バケットの作成 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Amazon Web Services (AWS) アカウントを作成している。
手順
- システム資産を保存するためのバケットを作成します。
- 開発者ポータルのロゴ機能を使用する場合は、S3 のパブリックアクセスブロッカーを無効にします。
以下の最低限のパーミッションで Identity and Access Management (IAM) ポリシーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のルールで CORS 設定 を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.10.2. OpenShift シークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、永続ボリューム要求 (PVC) の代わりに Amazon S3 を使用する 3scale fileStorage を示しています。
AWS S3 互換プロバイダーは、AWS_HOSTNAME、AWS_PATH_STYLE、および AWS_PROTOCOL オプションキーを使用して S3 シークレットで設定できます。詳細は、fileStorage S3 認証情報のシークレットフィールド の表を参照してください。
以下の例では、任意の シークレット 名を指定することができます。シークレット名が APIManager CR で参照されるためです。
最後に、3scale をデプロイするための APIManager CR を作成します。
APIManager SystemS3Spec を確認してください。
次の表は、Identity and Access Management (IAM) および Security Token Service (STS) 設定の fileStorage Amazon S3 認証情報シークレットフィールドの要件を示しています。
- Secure Token Service (STS) を使用する S3 認証方法は、権限が制限された短期間のセキュリティー認証情報で使用します。
- S3 Identity and Access Management (IAM) は、長期的な権限セキュリティー認証情報で使用します。
| フィールド | 説明 | IAM に必要 | STS に必要 |
|---|---|---|---|
| AWS_ACCESS_KEY_ID |
システムの | はい | いいえ |
| AWS_SECRET_ACCESS_KEY |
システムの | はい | いいえ |
| AWS_BUCKET |
アセット用のシステムの | はい | はい |
| AWS_REGION |
アセット用のシステムの | はい | はい |
| AWS_HOSTNAME | デフォルト: Amazon エンドポイント - AWS S3 互換プロバイダーエンドポイントのホスト名 | いいえ | いいえ |
| AWS_PROTOCOL |
デフォルト: | いいえ | いいえ |
| AWS_PATH_STYLE |
デフォルト: | いいえ | いいえ |
| AWS_ROLE_ARN | AWS STS を使用して認証するためのポリシーがアタッチされているロールの ARN | いいえ | はい |
| AWS_WEB_IDENTITY_TOKEN_FILE |
マウントされたトークンファイルの場所へのパス。例: | いいえ | はい |
1.5.10.3. STS を使用した手動モード リンクのコピーリンクがクリップボードにコピーされました!
APIManager CR から STS 認証モードを有効にする必要があります。オーディエンスを定義できますが、デフォルト値は openshift です。
前提条件
- AWS Security Token Service (STS) でさまざまなコンポーネントに一時的な認証情報を使用するように OpenShift を設定します。詳細は、Amazon Web Services Secure Token Service での手動モードの使用 を参照してください。
クラウド認証情報ツールによって生成されたシークレットは、IAM シークレットとは異なるように見えます。AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY の代わりに、AWS_ROLE_ARN および AWS_WEB_IDENTITY_TOKEN_FILE の 2 つの新しいフィールドがあります。
STS シークレットの例
STS では、3scale Operator は予測されたボリュームを追加してトークンを要求します。次の Pod には、予測されたボリュームがあります。
-
system-app -
system-app hook pre -
system-sidekiq
STS の Pod の例
1.5.11. PostgreSQL のインストール リンクのコピーリンクがクリップボードにコピーされました!
MySQL 内部リレーショナルデータベースがデフォルトのデプロイメントです。このデプロイメント設定をオーバーライドして、代わりに PostgreSQL を使用することができます。
1.5.12. SMTP 変数の設定 (任意) リンクのコピーリンクがクリップボードにコピーされました!
3scale は、メールを使用して、通知を送信 し、新しいユーザーを招待 します。この機能を使用する場合は、独自の SMTP サーバーを提供し、system-smtp シークレットで SMTP 変数を設定する必要があります。
手順
まだログインしていない場合は、OpenShift にログインし、
ocコマンドを使用して 3scale オンプレミスインスタンスがインストールされているプロジェクトを選択します。oc login -u <user> <url> oc project <3scale-project>
$ oc login -u <user> <url> $ oc project <3scale-project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc patchコマンドを使用して、シークレットsystem-smtpを更新します。次の JSON でオプション-pを使用します:{"stringData":{"<field>":"<value>"}}。ここで、<field>はシークレットのフィールド、<value>は設定したい値です。利用可能なフィールドの完全なリストは以下の表に記載されています。Expand 表1.4 system-smtp フィールド 説明 シークレットのデフォルト値 アプリケーションメーラーのデフォルト値 addressリモートメールサーバーのアドレス。
""nilport使用するリモートメールサーバーのポート。
""0
usernameメールサーバーが認証を必要とし、認証タイプがそれを必要とする場合のユーザー名。
""nilpasswordメールサーバーが認証を必要とし、認証タイプがそれを必要とする場合のパスワード。
""nil認証メールサーバーで認証が必要な場合に使用します。認証タイプを設定します。plain はパスワードを
plainで送信し、loginは Base64 エンコードされたパスワードを送信します。cram_md5は HMAC-MD5 アルゴリズムに基づくチャレンジ/レスポンスメカニズムを組み合わせます。""nilopenssl.verify.modeTLS を使用する場合、OpenSSL が証明書をチェックする方法を設定できます。これは、自己署名証明書やワイルドカード証明書を検証する必要がある場合に役立ちます。OpenSSL 検証定数の名前
noneまたはpeerを使用できます。""nilfrom_address無返信メールの
fromアドレス値。"""no-reply@{wildcardDomain}"注記-
メールサーバーの設定に使用される
HELOドメインは{wildcardDomain}の値です。 -
{wildcardDomain}は、APIManager CR のspec.wildcardDomainに設定された値のプレースホルダーです。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
メールサーバーの設定に使用される
secret 変数を設定した後、
system-appおよびsystem-sidekiqPod を再デプロイします。oc rollout restart deployment/system-app oc rollout restart deployment/system-sidekiq
$ oc rollout restart deployment/system-app $ oc rollout restart deployment/system-sidekiqCopy to Clipboard Copied! Toggle word wrap Toggle overflow ロールアウトのステータスを表示し、読み込みが完了したことを確認します。
oc rollout status deployment/system-app oc rollout status deployment/system-sidekiq
$ oc rollout status deployment/system-app $ oc rollout status deployment/system-sidekiqCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.13. コンポーネントレベルでのコンピュートリソース要件のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
APIManager カスタムリソース (CR) 属性を使用して、3scale ソリューションの Kubernetes コンピュートリソース要件 をカスタマイズします。この操作により、特定の APIManager コンポーネントに割り当てられるコンピュートリソース (CPU およびメモリー) の要件をカスタマイズします。
以下の例で、backend-listener および zync-database の system-master の system-provider コンテナーに対するコンピュートリソース要件をカスタマイズする方法の概要を説明します。
1.5.13.1. APIManager コンポーネントのデフォルトコンピュートリソース リンクのコピーリンクがクリップボードにコピーされました!
APIManager の spec.resourceRequirementsEnabled 属性を true に設定すると、デフォルトのコンピュートリソースが APIManager コンポーネントに設定されます。
以下の表に、APIManager コンポーネントに設定された特定のコンピュートリソースのデフォルト値をまとめます。
1.5.13.1.1. CPU およびメモリーの単位 リンクのコピーリンクがクリップボードにコピーされました!
コンピュートリソースのデフォルト値の表に使用される単位について、以下のリストにまとめます。CPU およびメモリーの単位の詳細は、Managing Resources for Containers を参照してください。
リソースの単位について
- m - ミリ CPU またはミリコア
- Mi - メビバイト
- Gi - ギビバイト
- G - ギガバイト
| コンポーネント | CPU 要求 | CPU 上限 | メモリー要求 | メモリー上限 |
|---|---|---|---|---|
| system-app の system-master | 50 m | 1000 m | 600 Mi | 800 Mi |
| system-app の system-provider | 50 m | 1000 m | 600 Mi | 800 Mi |
| system-app の system-developer | 50 m | 1000 m | 600 Mi | 800 Mi |
| system-sidekiq | 100 m | 1000 m | 500 Mi | 2 Gi |
| system-searchd | 80 m | 1000 m | 250 Mi | 512 Mi |
| system-redis | 150 m | 500 m | 256 Mi | 32 Gi |
| system-mysql | 250 m | 制限なし | 512 Mi | 2 Gi |
| system-postgresql | 250 m | 制限なし | 512 Mi | 2 Gi |
| backend-listener | 500 m | 1000 m | 550 Mi | 700 Mi |
| backend-worker | 150 m | 1000 m | 50 Mi | 300 Mi |
| backend-cron | 100 m | 500 m | 100Mi | 500 Mi |
| backend-redis | 1000 m | 2000 m | 1024 Mi | 32 Gi |
| apicast-production | 500 m | 1000 m | 64 Mi | 128 Mi |
| apicast-staging | 50 m | 100 m | 64 Mi | 128 Mi |
| zync | 150 m | 1 | 250 M | 512 Mi |
| zync-que | 250 m | 1 | 250 M | 512 Mi |
| zync-database | 50 m | 250 m | 250 M | 2 G |
1.5.14. 3scale API Management コンポーネントの Pod の優先順位 リンクのコピーリンクがクリップボードにコピーされました!
3scale 管理者は、APIManager カスタムリソース (CR) を変更することで、3scale がインストールているさまざまなコンポーネントの Pod の優先度 をセットアップできます。以下のコンポーネントで利用可能なオプションの priorityClassName を使用します。
-
apicast-production -
apicast-staging -
backend-cron -
backend-listener -
backend-worker -
backend-redis -
system-app -
system-sidekiq -
system-searchd -
system-memcache -
system-mysql -
system-postgresql -
system-redis -
zync -
zync-database -
zync-que
以下に例を示します。
1.5.15. カスタムラベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
それぞれの Pod に適用される各 DeploymentConfig (DC) の APIManager CR labels 属性を使用してラベルをカスタマイズできます。
カスタムリソース (CR) で定義されたラベルを削除しても、関連付けられた DeploymentConfig (DC) からは自動的に削除されません。DC からラベルを手動で削除する必要があります。
apicast-staging および backend-listener の例:
1.5.16. 証明書の検証をスキップするようにバックエンドクライアントを設定する リンクのコピーリンクがクリップボードにコピーされました!
コントローラーがオブジェクトを処理するとき、API 呼び出しを行うための新しいバックエンドクライアントを生成します。デフォルトでは、このクライアントはサーバーの証明書チェーンを確認するためにセットアップされています。ただし、開発およびテスト中に、オブジェクトの処理時にクライアントが証明書の検証をスキップする必要がある場合があります。スキップできるようにするには、以下のオブジェクトにアノテーション "insecure_skip_verify": "true" を追加します。
- ActiveDoc
- Application
- バックエンド
- CustomPolicyDefinition
- DeveloperAccount
- DeveloperUser
- OpenAPI - バックエンドと製品
- Product
- ProxyConfigPromote
- テナント
OpenAPI CR の例:
1.5.17. カスタムアノテーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
3scale では、コンポーネントの Pod にアノテーションが付いています。これらは、設定に使用されるキーと値のペアです。APIManager CR を使用して、任意の 3scale コンポーネントのこれらのアノテーションを変更できます。
カスタムリソース (CR) で定義されたアノテーションを削除しても、関連付けられた DeploymentConfig (DC) からは自動的に削除されません。アノテーションは DC から手動で削除する必要があります。
apicast-staging および backend-listener の APIManager アノテーション
1.5.18. 調整 リンクのコピーリンクがクリップボードにコピーされました!
3scale をインストールしたら、3scale Operator により、カスタムリソース (CR) からの特定パラメーターセットを更新してシステム設定オプションを変更することができます。変更は ホットスワップ により行われます。つまり、システムの停止やシャットダウンは発生しません。
3scale Operator と APIcast Operator で調整イベントが発生した場合、以下の 2 つのシナリオが考えられます。
-
deploymentconfigがなく、CR にレプリカがある場合、deploymentconfigの値はそれらのレプリカと一致します。CR にレプリカが含まれていない場合、deploymentconfigレプリカ値は1に設定されます。 -
deploymentconfigがあり、CR にレプリカがある場合、deploymentconfigの値は、0であってもそれらのレプリカと一致します。CR にレプリカが含まれていない場合、deploymentconfigの値は同じままになります。
APIManager CR 定義 (CRD) のすべてのパラメーターが調整可能である訳ではありません。
調整可能なパラメーターのリストを以下に示します。
1.5.18.1. リソース リンクのコピーリンクがクリップボードにコピーされました!
すべての 3scale コンポーネントに対するリソースの制限およびリクエスト
1.5.18.2. Backend レプリカ リンクのコピーリンクがクリップボードにコピーされました!
バックエンド コンポーネントの Pod 数
replica フィールドが設定されていない場合、Operator はレプリカを調整しません。これにより、HorizontalPodAutoscaler コントローラーなどのサードパーティーコントローラーがレプリカを管理できるようになります。また、デプロイメントオブジェクト上で手動で更新することもできます。
1.5.18.3. APIcast レプリカ リンクのコピーリンクがクリップボードにコピーされました!
APIcast ステージングおよび実稼働環境コンポーネントの Pod 数
replica フィールドが設定されていない場合、Operator はレプリカを調整しません。これにより、HorizontalPodAutoscaler コントローラーなどのサードパーティーコントローラーがレプリカを管理できるようになります。また、デプロイメントオブジェクト上で手動で更新することもできます。
1.5.18.4. System レプリカ リンクのコピーリンクがクリップボードにコピーされました!
システム アプリケーションおよびシステム sidekiq コンポーネントの Pod 数
replica フィールドが設定されていない場合、Operator はレプリカを調整しません。これにより、HorizontalPodAutoscaler コントローラーなどのサードパーティーコントローラーがレプリカを管理できるようになります。また、デプロイメントオブジェクト上で手動で更新することもできます。
1.5.18.5. Zync レプリカ リンクのコピーリンクがクリップボードにコピーされました!
Zync アプリケーションと que コンポーネントの Pod 数
replica フィールドが設定されていない場合、Operator はレプリカを調整しません。これにより、HorizontalPodAutoscaler コントローラーなどのサードパーティーコントローラーがレプリカを管理できるようになります。また、デプロイメントオブジェクト上で手動で更新することもできます。
1.5.19. APICAST_SERVICE_CACHE_SIZE 環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
APIManager カスタムリソース定義 (CRD) にオプションのフィールドを追加することで、APIcast が内部キャッシュに保存するサービスの数を指定できます。
前提条件
-
APIcastOperator がインストールされているか、インストール中である。
手順
-
specの production セクションと staging セクションに、serviceCacheSizeオプションフィールドを追加します。
apicast:
productionSpec:
serviceCacheSize: 20
stagingSpec:
serviceCacheSize: 10
apicast:
productionSpec:
serviceCacheSize: 20
stagingSpec:
serviceCacheSize: 10
検証
以下のコマンドを入力してデプロイメントを確認します。
oc get dc/apicast-staging -o yaml
$ oc get dc/apicast-staging -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get dc/apicast-production -o yaml
$ oc get dc/apicast-production -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 環境変数が含まれていることを確認します。
apicast-staging
# apicast-staging - name: APICAST_SERVICE_CACHE_SIZE value: '10'Copy to Clipboard Copied! Toggle word wrap Toggle overflow apicast-production
# apicast-production - name: APICAST_SERVICE_CACHE_SIZE value: '20'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
APIManager カスタムリソース定義 (CRD) にオプションのフィールドを追加することで、APIcast が内部キャッシュに保存するサービスの数を指定できます。replica フィールドが設定されていない場合、Operator はレプリカを調整しません。これにより、HorizontalPodAutoscaler コントローラーなどのサードパーティーコントローラーがレプリカを管理できるようになります。また、デプロイメントオブジェクト上で手動で更新することもできます。