第16章 Ingress [config.openshift.io/v1]
- 説明
-
Ingress は、ルートに使用されるデフォルトの入力ドメインを含む、入力に関するクラスター全体の情報を保持します。正規名は
cluster
です。互換性レベル 1: メジャーリリース内で最低 12 か月または 3 つのマイナーリリース (どちらか長い方) の間安定しています。 - 型
-
object
- 必須
-
spec
-
16.1. 仕様
プロパティー | 型 | 説明 |
---|---|---|
|
| APIVersion はオブジェクトのこの表現のバージョンスキーマを定義します。サーバーは認識されたスキーマを最新の内部値に変換し、認識されない値は拒否することがあります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources を参照してください。 |
|
| kind はこのオブジェクトが表す REST リソースを表す文字列の値です。サーバーはクライアントが要求を送信するエンドポイントからこれを推測できることがあります。これを更新することはできません。CamelCase を使用します。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds を参照してください。 |
| 標準オブジェクトのメタデータ。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata を参照してください。 | |
|
| spec 設定でユーザーが設定できる値を保持します。 |
|
| status クラスターから監視される値を保持します。それらはオーバーライドされない場合があります。 |
16.1.1. .spec
- 説明
- spec 設定でユーザーが設定できる値を保持します。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| appsDomain は、明示的なホストを指定せずにルートを作成するときに、ドメインフィールドで指定されたドメインの代わりに使用するオプションのドメインです。appsDomain が空でない場合、この値は Route のデフォルトのホスト値を生成するために使用されます。ドメインとは異なり、appsDomain はインストール後に変更される場合があります。これは、新しい ingresscontroller がワイルドカード証明書を使用してセットアップされていることを前提としています。 |
|
| componentRoutes は、クラスター管理者がホスト名とサービング証明書を設定できる OpenShift コンポーネントによって管理されるルートのオプションのリストです。このリストの各ルートの名前空間と名前は、status.componentRoutes リストの既存のエントリーと一致する必要があります。設定可能なルートのセットを判別するには、.status.componentRoutes リストの名前空間とエントリーの名前を確認します。ここで、参加している Operator が設定可能なルートのステータスを書き込みます。 |
|
| ComponentRouteSpec を使用すると、ルートのホスト名とサービング証明書を設定できます。 |
|
| ドメインは、ルートのホスト名が空の場合に、ルートのデフォルトのホスト名を生成するために使用されます。生成されたホスト名は、"<route-name>.<route-namespace>.<domain>" のパターンに従います。これは、入力のデフォルトのワイルドカードドメイン接尾辞としても使用されます。デフォルトの ingresscontroller ドメインは、"*.<domain>" のパターンに従います。一度設定すると、ドメインの変更は現在サポートされていません。 |
|
| loadBalancer には、現在のクラスターの基盤となるインフラストラクチャープロバイダーに固有のものだけではなく、Ingress Controller が OpenShift 上で動作するために必要となる、一般的なロードバランサーの詳細が含まれています。 |
|
| requiredHSTSPolicies は、ポリシーで指定された domainPattern/s および namespaceSelector/s に一致する新しく作成または更新されたルートに設定する必要がある HSTS ポリシーを指定します。各 requiredHSTSPolicy には、ルート HSTS ポリシールートアノテーションを検証し、ルートアドミッションに影響を与えるために、少なくとも domainPattern と maxAge が必要です。HSTS ポリシールートアノテーションが付いている場合、候補ルートは HSTS ポリシーについてチェックされます: "haproxy.router.openshift.io/hsts_header" 例:haproxy.router.openshift.io/hsts_header:max-age = 31536000; preload; includeSubDomains-For 各候補ルートは、requiredHSTSPolicy domainPattern およびオプションの namespaceSelector と一致する場合、maxAge、preloadPolicy、および includeSubdomainsPolicy が許可されるために有効である必要があります。それ以外の場合、ルートは拒否されます。- domainPattern およびオプションの namespaceSelector による、RequiredHSTSPolicies の順序での最初の一致により、ルートのアドミッションステータスが決まります。- 候補ルートが requiredHSTSPolicy の domainPattern およびオプションの namespaceSelector と一致しない場合、HSTS ポリシーアノテーションを使用できます。HSTS ポリシー設定は、ルートがすでに作成された後で変更される場合があります。更新されたルートが更新された HSTS ポリシー設定に準拠していない場合、以前に許可されたルートへの更新は失敗する可能性があります。ただし、HSTS ポリシー設定を変更しても、すでに許可されているルートが機能しなくなることはありません。RequiredHSTSPolicies がない場合、ルート上のすべての HSTS ポリシーアノテーションが有効であることに注意してください。 |
|
|
16.1.2. .spec.componentRoutes
- 説明
- componentRoutes は、クラスター管理者がホスト名とサービング証明書を設定できる OpenShift コンポーネントによって管理されるルートのオプションのリストです。このリストの各ルートの名前空間と名前は、status.componentRoutes リストの既存のエントリーと一致する必要があります。設定可能なルートのセットを判別するには、.status.componentRoutes リストの名前空間とエントリーの名前を確認します。ここで、参加している Operator が設定可能なルートのステータスを書き込みます。
- 型
-
array
16.1.3. .spec.componentRoutes[]
- 説明
- ComponentRouteSpec を使用すると、ルートのホスト名とサービング証明書を設定できます。
- 型
-
object
- 必須
-
hostname
-
name
-
namespace
-
プロパティー | 型 | 説明 |
---|---|---|
|
| hostname は、ルートで使用されるホスト名です。 |
|
| name は、カスタマイズするルートの論理名です。ルートをカスタマイズする場合は、この componentRoute の名前空間と名前が status.componentRoutes のリストの対応するエントリーと一致する必要があります。 |
|
| namespace は、カスタマイズするルートの名前空間です。ルートをカスタマイズする場合は、この componentRoute の名前空間と名前が status.componentRoutes のリストの対応するエントリーと一致する必要があります。 |
|
|
servingCertKeyPairSecret は、openshift-config 名前空間のタイプ |
16.1.4. .spec.componentRoutes[].servingCertKeyPairSecret
- 説明
-
servingCertKeyPairSecret は、openshift-config 名前空間のタイプ
kubernetes.io/tls
のシークレットへの参照です。サービング証明書/キーのペアは一致する必要があり、この名前でサービングする目的を果たすために Operator によって使用されます。カスタムホスト名がクラスターのデフォルトのルーティング接尾辞を使用する場合、サービング証明書のシークレット指定は必要ありません。 - 型
-
object
- 必須
-
name
-
プロパティー | 型 | 説明 |
---|---|---|
|
| name は、参照されるシークレットの metadata.name です。 |
16.1.5. .spec.loadBalancer
- 説明
- loadBalancer には、現在のクラスターの基盤となるインフラストラクチャープロバイダーに固有のものだけではなく、Ingress Controller が OpenShift 上で動作するために必要となる、一般的なロードバランサーの詳細が含まれています。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| platform は、Ingress ロードバランサーの基盤となるインフラストラクチャープロバイダーに固有の設定を保持します。これを省略した場合、ユーザーには選択する意図がないことを意味し、プラットフォームが適切なデフォルトを選択します。これらのデフォルトは時間の経過とともに変更される可能性があります。 |
16.1.6. .spec.loadBalancer.platform
- 説明
- platform は、Ingress ロードバランサーの基盤となるインフラストラクチャープロバイダーに固有の設定を保持します。これを省略した場合、ユーザーには選択する意図がないことを意味し、プラットフォームが適切なデフォルトを選択します。これらのデフォルトは時間の経過とともに変更される可能性があります。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| aws には、Amazon Web Services インフラストラクチャープロバイダーに固有の設定が含まれています。 |
|
| type は、クラスターの基盤となるインフラストラクチャープロバイダーです。許可される値は、"AWS"、"Azure"、"BareMetal"、"GCP"、"Libvirt"、"OpenStack"、"VSphere"、"oVirt"、"KubeVirt"、"EquinixMetal"、"PowerVS"、"AlibabaCloud"、"Nutanix"、"None" です。個々のコンポーネントはすべてのプラットフォームをサポートしているわけではなく、認識されていないプラットフォームをサポートしていない場合は、そのプラットフォームをなしとして処理する必要があります。 |
16.1.7. .spec.loadBalancer.platform.aws
- 説明
- aws には、Amazon Web Services インフラストラクチャープロバイダーに固有の設定が含まれています。
- 型
-
object
- 必須
-
type
-
プロパティー | 型 | 説明 |
---|---|---|
|
| type を使用すると、ユーザーはロードバランサーのタイプを設定できます。このフィールドが設定されている場合、指定された LBType を使用してデフォルトの ingresscontroller が作成されます。このフィールドが設定されていない場合、LBType Classic のデフォルトの ingress controller が作成されます。有効な値は次のとおりです。*"Classic": トランスポート層 (TCP/SSL) またはアプリケーション層 (HTTP/HTTPS) のいずれかでルーティングを決定するクラシックロードバランサー。詳細は、https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb を参照してください。 * "NLB": トランスポートでルーティングを決定するネットワークロードバランサーレイヤー (TCP/SSL)。詳細は、https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb を参照してください。 |
16.1.8. .spec.requiredHSTSPolicies
- 説明
- requiredHSTSPolicies は、ポリシーで指定された domainPattern/s および namespaceSelector/s に一致する新しく作成または更新されたルートに設定する必要がある HSTS ポリシーを指定します。各 requiredHSTSPolicy には、ルート HSTS ポリシールートアノテーションを検証し、ルートアドミッションに影響を与えるために、少なくとも domainPattern と maxAge が必要です。HSTS ポリシールートアノテーションが付いている場合、候補ルートは HSTS ポリシーについてチェックされます: "haproxy.router.openshift.io/hsts_header" 例:haproxy.router.openshift.io/hsts_header:max-age = 31536000; preload; includeSubDomains-For 各候補ルートは、requiredHSTSPolicy domainPattern およびオプションの namespaceSelector と一致する場合、maxAge、preloadPolicy、および includeSubdomainsPolicy が許可されるために有効である必要があります。それ以外の場合、ルートは拒否されます。- domainPattern およびオプションの namespaceSelector による、RequiredHSTSPolicies の順序での最初の一致により、ルートのアドミッションステータスが決まります。- 候補ルートが requiredHSTSPolicy の domainPattern およびオプションの namespaceSelector と一致しない場合、HSTS ポリシーアノテーションを使用できます。HSTS ポリシー設定は、ルートがすでに作成された後で変更される場合があります。更新されたルートが更新された HSTS ポリシー設定に準拠していない場合、以前に許可されたルートへの更新は失敗する可能性があります。ただし、HSTS ポリシー設定を変更しても、すでに許可されているルートが機能しなくなることはありません。RequiredHSTSPolicies がない場合、ルート上のすべての HSTS ポリシーアノテーションが有効であることに注意してください。
- 型
-
array
16.1.9. .spec.requiredHSTSPolicies[]
- 説明
- 型
-
object
- 必須
-
domainPatterns
-
プロパティー | 型 | 説明 |
---|---|---|
|
| domainPatterns は、必要な HSTS アノテーションが必要なドメインのリストです。domainPatterns が指定され、ドメインの 1 つと一致する spec.host を使用してルートが作成される場合、ルートは、一致する RequiredHSTSPolicy で説明されている HSTS ポリシーコンポーネントを指定する必要があります。ワイルドカードの使用は次のように許可され ます。.foo.com は foo.com の下のすべてに一致します。foo.com は foo.com とのみ一致するため、foo.com とその下のすべてをカバーするには、*both を指定する必要があります。 |
|
| includeSubDomainsPolicy は、HSTS ポリシーがホストのドメイン名のすべてのサブドメインに適用される必要があることを意味します。したがって、ホスト bar.foo.com の場合、includeSubDomainsPolicy が RequireIncludeSubDomains に設定されていると、次のようになります。- ホスト app.bar.foo.com は bar.foo.com の HSTS ポリシーを継承します - ホスト bar.foo.com は bar.foo.com の HSTS ポリシー - ホスト foo.com は bar.foo.com の HSTS ポリシーを継承しません - ホスト def.foo.com は bar.foo.com の HSTS ポリシーを継承しません |
|
| maxAge は、ホストが HSTS ホストと見なされる秒単位のデルタ時間範囲です。0 に設定すると、効果が無効になり、ホストは HSTS ホストとして削除されます。0 に設定し、includeSubdomains を指定すると、ホストのすべてのサブドメインも HSTS ホストとして削除されます。maxAge は存続時間の値であり、このポリシーがクライアントで更新されない場合、HSTS ポリシーは最終的にそのクライアントで期限切れになります。 |
|
| namespaceSelector は、ポリシーがセレクターと一致するラベルを持つ名前空間にあり、DomainPatterns の 1 つにあるルートにのみ適用されるようにラベルセレクターを指定します。デフォルトは空の LabelSelector で、すべてに一致します。 |
|
| preloadPolicy は、HSTS ヘッダーを取得するために初期ロードを実行する必要がないように、ホストをホストプリロードリストに含めるようにクライアントに指示します (これは RFC 6797 で定義されていないため、クライアントの実装に依存します)。 |
16.1.10. .spec.requiredHSTSPolicies[].maxAge
- 説明
- maxAge は、ホストが HSTS ホストと見なされる秒単位のデルタ時間範囲です。0 に設定すると、効果が無効になり、ホストは HSTS ホストとして削除されます。0 に設定し、includeSubdomains を指定すると、ホストのすべてのサブドメインも HSTS ホストとして削除されます。maxAge は存続時間の値であり、このポリシーがクライアントで更新されない場合、HSTS ポリシーは最終的にそのクライアントで期限切れになります。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| RequiredHSTSPolicy max-age の最大許容値 (秒単位) この値は指定しないでおくことができます。その場合、上限は適用されません。 |
|
| RequiredHSTSPolicy max-age の最小許容値 (秒単位)max-age = 0 を設定すると、ホストから既存の HSTS ヘッダーを削除できます。これは、管理者が間違いをすばやく修正するために必要なツールです。この値は指定しないでおくことができます。その場合、下限は適用されません。 |
16.1.11. .spec.requiredHSTSPolicies[].namespaceSelector
- 説明
- namespaceSelector は、ポリシーがセレクターと一致するラベルを持つ名前空間にあり、DomainPatterns の 1 つにあるルートにのみ適用されるようにラベルセレクターを指定します。デフォルトは空の LabelSelector で、すべてに一致します。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| matchExpressions はラベルセレクターの要件のリストです。要件は AND で結合されます。 |
|
| ラベルセレクター要件は、値、キー、およびキーと値を関連付ける Operator を含むセレクターです。 |
|
| matchLabels は、{key,value} ペアのマップです。matchLabels マップの 1 つの {key,value} は matchExpressions の要素と同じで、キーフィールドには "key"、演算子には "In"、値配列には "value" のみが含まれます。要件は AND で結合されます。 |
16.1.12. .spec.requiredHSTSPolicies[].namespaceSelector.matchExpressions
- 説明
- matchExpressions はラベルセレクターの要件のリストです。要件は AND で結合されます。
- 型
-
array
16.1.13. .spec.requiredHSTSPolicies[].namespaceSelector.matchExpressions[]
- 説明
- ラベルセレクター要件は、値、キー、およびキーと値を関連付ける Operator を含むセレクターです。
- 型
-
object
- 必須
-
key
-
operator
-
プロパティー | 型 | 説明 |
---|---|---|
|
| key は、セレクターの適用先のラベルキーです。 |
|
| operator はキーと値のセットの関係を表します。有効な演算子は In、NotIn、Exists、および DoesNotExist です。 |
|
| values は文字列値の配列です。operator が In または NotIn の場合には、values 配列を空白にできません。operator が Exists または DoesNotExist の場合には、values 配列は空白でなければなりません。この配列は、ストラテジーに基づいたマージパッチの適用中に置き換えられます。 |
16.1.14. .status
- 説明
- status クラスターから監視される値を保持します。それらはオーバーライドされない場合があります。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| componentRoutes は、参加している Operator が、クラスター管理者がホスト名とサービング証明書をカスタマイズできるルートの現在のルートステータスを配置する場所です。 |
|
| ComponentRouteStatus には、ルートのホスト名とサービング証明書の設定を可能にする情報が含まれています。 |
|
| defaultPlacement はインストール時に設定され、デフォルトで Ingress ルーター Pod をホストするノードを制御します。オプションは、コントロールプレーンノードまたはワーカーノードです。このフィールドは、対応するデプロイメントの作成時に、Cluster Ingress Operator が IngressController リソース内の未設定のレプリカと nodePlacement フィールドをどのように考慮するかを指示します。詳細は、IngressController レプリカおよび nodePlacement フィールドのドキュメントを参照してください。省略した場合、デフォルト値は Workers です。 |
16.1.15. .status.componentRoutes
- 説明
- componentRoutes は、参加している Operator が、クラスター管理者がホスト名とサービング証明書をカスタマイズできるルートの現在のルートステータスを配置する場所です。
- 型
-
array
16.1.16. .status.componentRoutes[]
- 説明
- ComponentRouteStatus には、ルートのホスト名とサービング証明書の設定を可能にする情報が含まれています。
- 型
-
object
- 必須
-
defaultHostname
-
name
-
namespace
-
relatedObjects
-
プロパティー | 型 | 説明 |
---|---|---|
|
| 条件は、componentRoutes エントリーの状態を伝達するために使用されます。サポートされている条件には、Available、Degraded、および Progressing が含まれます。利用可能が true の場合、ルートによって提供されるコンテンツにユーザーがアクセスできます。これには、cluster-admin によって指定されたカスタマイズされたルートが設定されている間、デフォルトがコンテンツを提供し続ける場合が含まれます。Degraded が true の場合、componentRoutes エントリーを処理しようとして問題が発生したことを意味します。currentHostnames フィールドは、有効な場合と無効な場合があります。Progressing が true の場合、コンポーネントが componentRoutes エントリーに関連するアクションを実行していることを意味します。 |
|
|
条件には、この API リソースの現在の状態の 1 つの側面の詳細が含まれています。--- この構造体は、フィールドパスの .status.conditions で配列として直接使用することを目的としています。たとえば、次のように入力します。FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition |
|
| consumingUsers は、servingCertKeyPairSecret シークレットの読み取り権限が必要な ServiceAccounts のスライスです。 |
|
| currentHostnames は、ルートで使用されている現在の名前のリストです。通常、このリストは単一のホスト名で構成されている必要がありますが、ルートで複数のホスト名がサポートされている場合、Operator はこのリストに複数のエントリーを書き込むことができます。 |
|
| defaultHostname は、カスタマイズ前のこのルートのホスト名です。 |
|
| name は、カスタマイズするルートの論理名です。ルートリソースの実際の名前である必要はありませんが、名前を変更することはできません。ルートをカスタマイズする場合、この componentRoute の名前空間と名前は、spec.componentRoutes のリスト内の対応するエントリーと一致する必要があります。 |
|
| namespace は、カスタマイズするルートの名前空間です。実際の名前空間である必要があります。実際の名前空間を使用すると、2 つのコンポーネントが競合することはなく、同じコンポーネントを複数回インストールできます。ルートをカスタマイズする場合、この componentRoute の名前空間と名前は、spec.componentRoutes のリスト内の対応するエントリーと一致する必要があります。 |
|
| relatedObjects は、spec.componentRoutes がどのように適用されるかをデバッグまたは検査するときに役立つリソースのリストです。 |
|
| ObjectReference には参照先のオブジェクトを調査または変更するのに十分な情報が含まれます。 |
16.1.17. .status.componentRoutes[].conditions
- 説明
- 条件は、componentRoutes エントリーの状態を伝達するために使用されます。サポートされている条件には、Available、Degraded、および Progressing が含まれます。利用可能が true の場合、ルートによって提供されるコンテンツにユーザーがアクセスできます。これには、cluster-admin によって指定されたカスタマイズされたルートが設定されている間、デフォルトがコンテンツを提供し続ける場合が含まれます。Degraded が true の場合、componentRoutes エントリーを処理しようとして問題が発生したことを意味します。currentHostnames フィールドは、有効な場合と無効な場合があります。Progressing が true の場合、コンポーネントが componentRoutes エントリーに関連するアクションを実行していることを意味します。
- 型
-
array
16.1.18. .status.componentRoutes[].conditions[]
- 説明
-
条件には、この API リソースの現在の状態の 1 つの側面の詳細が含まれています。--- この構造体は、フィールドパスの .status.conditions で配列として直接使用することを目的としています。たとえば、次のように入力します。FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition
json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"
// other fields } - 型
-
object
- 必須
-
lastTransitionTime
-
message
-
reason
-
status
-
type
-
プロパティー | 型 | 説明 |
---|---|---|
|
| lastTransitionTime は、ある状態から別の状態に最後に遷移した時間です。これは、基本的な条件が変更された時点となります。不明な場合には、API フィールドが変更された時点を使用することも可能です。 |
|
| message は、遷移の詳細を示す人が判読できるメッセージです。空の文字列の場合もあります。 |
|
| observedGeneration は、それをベースに条件が設定された .metadata.generation を表します。たとえば、.metadata.generation が現在 12 で、.status.conditions[x].observedGeneration が 9 の場合、インスタンスの現在の状態に対して条件が古くなっています。 |
|
| reason には、条件の最後の遷移の理由を示すプログラムによる識別子が含まれます。特定の条件タイプのプロデューサーは、このフィールドの期待値と意味、および値が保証された API と見なされるかどうかを定義できます。値は CamelCase 文字列である必要があります。このフィールドには空白を指定できません。 |
|
| 条件のステータス、True、False、Unknown のいずれか。 |
|
| CamelCase または foo.example.com/CamelCase の条件のタイプ。--- 多くの.condition.type 値は、Available などのリソース全体で一貫していますが、任意の条件が役立つ可能性があるため (.node.status.conditions を参照)、競合を解消する機能が重要です。一致する正規表現は (dns1123SubdomainFmt/)?(qualifiedNameFmt) です。 |