第16章 Route [route.openshift.io/v1]
- 説明
ルートを使用すると、開発者は HTTP(S) 対応の負荷分散とパブリック DNS エントリーを介したプロキシー階層を介してサービスを公開できます。ルートは、TLS オプションと証明書をさらに指定するか、ルーターが HTTP および HTTPS トラフィックに対しても受け入れる必要があるパブリック CNAME を指定する場合があります。管理者は通常、ルーターをクラスターファイアウォールの外側に表示されるように設定し、サービスコンテンツにセキュリティー、キャッシュ、またはトラフィック制御を追加する場合もあります。ルーターは通常、サービスエンドポイントと直接通信します。
ルートが作成されると、
host
フィールドは変更されない場合があります。通常、ルーターは、競合を解決するときに、特定のホストで最も古いルートを使用します。ルーターは追加のカスタマイズの対象であり、アノテーションフィールドを介して追加の制御をサポートする場合があります。
管理者は複数のルーターを設定できるため、ルートステータスフィールドは、各ルーターの下のルートの名前と状態に関する情報をクライアントに返すために使用されます。たとえば、クライアントが重複した名前を選択した場合、ルートステータス条件を使用して、ルートを選択できないことを示します。
ルートで HTTP/2 ALPN を有効にするには、カスタム (非ワイルドカード) 証明書が必要です。これにより、クライアント、特に Web ブラウザーによる接続の結合が防止されます。接続の再利用/結合のリスクがあるため、デフォルトの証明書を使用するルートでは HTTP/2ALPN をサポートしていません。そのため、独自のカスタム証明書を持たないルートは、フロントエンドまたはバックエンドのいずれかで HTTP/2 ALPN で有効にされません。
互換性レベル 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 を参照してください。 |
| ||
|
| RouteSpec は、ルートが公開するホスト名またはパス、セキュリティー情報、およびルートが指す 1 つから 4 つのバックエンド (サービス) を記述します。要求は、各バックエンドに割り当てられた重みに応じてバックエンドに分散されます。ラウンドロビンスケジューリングを使用する場合、各バックエンドに送信される要求の部分は、バックエンドの重みをすべてのバックエンドの重みの合計で割ったものです。バックエンドに複数のエンドポイントがある場合、バックエンドで終了する要求は、エンドポイント間でラウンドロビン分散されます。重みは 0〜256 で、デフォルトは 100 です。重みが 0 の場合は、バックエンドへの要求は送信されません。すべての重みがゼロの場合、ルートにはバックエンドがないと見なされ、標準の 503 応答が返されます。
|
|
| RouteStatus は、どのルーターがルートを確認するかなど、ルートのステータスの関連情報を提供します。 |
16.1.1. .spec
- 説明
RouteSpec は、ルートが公開するホスト名またはパス、セキュリティー情報、およびルートが指す 1 つから 4 つのバックエンド (サービス) を記述します。要求は、各バックエンドに割り当てられた重みに応じてバックエンドに分散されます。ラウンドロビンスケジューリングを使用する場合、各バックエンドに送信される要求の部分は、バックエンドの重みをすべてのバックエンドの重みの合計で割ったものです。バックエンドに複数のエンドポイントがある場合、バックエンドで終了する要求は、エンドポイント間でラウンドロビン分散されます。重みは 0〜256 で、デフォルトは 100 です。重みが 0 の場合は、バックエンドへの要求は送信されません。すべての重みがゼロの場合、ルートにはバックエンドがないと見なされ、標準の 503 応答が返されます。
tls
フィールドはオプションであり、ルートの特定の証明書または動作を許可します。ルーターは通常、ワイルドカードドメインでデフォルトの証明書を設定して、明示的な証明書なしでルートを終了しますが、カスタムホスト名は通常、パススルー (TLS サーバー - 名前 - 表示フィールドを介してトラフィックをバックエンドに直接送信する) を選択するか、証明書を提供する必要があります。- 型
-
object
- 必須
-
to
-
プロパティー | タイプ | 説明 |
---|---|---|
|
| AlternativeBackends を使用すると、最大 3 つの追加のバックエンドをルートに割り当てることができます。Kind は Service のみ使用でき、デフォルトは Service になります。RouteTargetReference オブジェクトの重みフィールドを使用して、相対的な優先順位を指定します。 |
|
| RouteTargetReference は、エンドポイントに解決されるターゲットを指定します。kind は 'Service' のみ使用できます。'weight' フィールドを使用して、1 つを他よりも強調します。 |
|
| ホストは、サービスを指すエイリアス/DNS です。任意。指定しない場合、ルート名は通常自動的に選択されます。DNS952 サブドメインの規則に従う必要があります。 |
|
| トラフィックをサービスにルーティングするために、ルーターが監視するパス。任意。 |
|
| RoutePort は、ルーターからサービスエンドポイントのエンドポイントへのポートマッピングを定義します。 |
|
| サブドメインは、Ingress コントローラーのドメイン内で (サブドメインとして) 要求される DNS サブドメインです。ホストが設定されている場合、このフィールドは無視されます。Ingress コントローラーは、この提案された名前を無視できます。その場合、コントローラーは、割り当てられた名前を status.ingress 配列に報告するか、ルートの許可を拒否します。この値が設定されていて、サーバーがこのフィールドをサポートしていない場合、ホストは自動的に入力されます。それ以外の場合、ホストは空のままになります。フィールドにはドットで区切られた複数の部分が含まれる場合がありますが、すべての Ingress コントローラーが要求を受け入れるとは限りません。このフィールドは、ルートの更新/カスタムホスト権限を持つユーザーを除いて、作成後に変更することはできません。
例: サブドメイン |
|
| TLSConfig は、ルートを保護し、終了を提供するために使用される設定を定義します。 |
|
| RouteTargetReference は、エンドポイントに解決されるターゲットを指定します。kind は 'Service' のみ使用できます。'weight' フィールドを使用して、1 つを他よりも強調します。 |
|
| ルートにワイルドカードポリシーがある場合。現在、'Subdomain' または 'None' のみが許可されています。 |
16.1.2. .spec.alternateBackends
- 説明
- AlternativeBackends を使用すると、最大 3 つの追加のバックエンドをルートに割り当てることができます。Kind は Service のみ使用でき、デフォルトは Service になります。RouteTargetReference オブジェクトの重みフィールドを使用して、相対的な優先順位を指定します。
- 型
-
array
16.1.3. .spec.alternateBackends[]
- 説明
- RouteTargetReference は、エンドポイントに解決されるターゲットを指定します。kind は 'Service' のみ使用できます。'weight' フィールドを使用して、1 つを他よりも強調します。
- 型
-
object
- 必須
-
kind
-
name
-
プロパティー | タイプ | 説明 |
---|---|---|
|
| ルートが参照しているターゲットの kind。現在、Service のみが許可されています。 |
|
| 参照されているサービス/ターゲットの名前。例: サービスの名前 |
|
| 0〜256 の整数としての重み (デフォルトは 100)。これは、他のターゲット参照オブジェクトに対するターゲットの相対的な重みを指定します。0 は、このバックエンドへの要求を抑制します。 |
16.1.4. .spec.port
- 説明
- RoutePort は、ルーターからサービスエンドポイントのエンドポイントへのポートマッピングを定義します。
- 型
-
object
- 必須
-
targetPort
-
プロパティー | タイプ | 説明 |
---|---|---|
| このルートが指すサービスによって選択された Pod のターゲットポート。これが文字列の場合は、ターゲットエンドポイントのポートリストで名前付きポートとして検索されます。必須 |
16.1.5. .spec.tls
- 説明
- TLSConfig は、ルートを保護し、終了を提供するために使用される設定を定義します。
- 型
-
object
- 必須
-
termination
-
プロパティー | タイプ | 説明 |
---|---|---|
|
| caCertificate は、証明書機関の証明書の内容を提供します |
|
| certificate は証明書の内容を提供します。これは、証明書チェーンではなく、単一のサービス証明書である必要があります。CA 証明書を含めないでください。 |
|
| destinationCACertificate は、最終的な宛先の CA 証明書の内容を提供します。reencrypt の停止を使用する場合は、ルーターがセキュアな接続のヘルスチェックに使用するためにこのファイルを提供する必要があります。このフィールドが指定されていない場合、ルーターは独自の宛先 CA を提供し、短いサービス名 (service.namespace.svc) を使用してホスト名の検証を実行する可能性があります。これにより、インフラストラクチャーが生成した証明書を自動的に検証できます。 |
|
| insecureEdgeTerminationPolicy は、ルートへの安全でない接続に必要な動作を示します。各ルーターは公開するポートを独自に決定することがありますが、通常はポート 80 になります。 *許可 - トラフィックは安全でないポートでサーバーに送信されます (デフォルト)。*無効 - 安全でないポートでのトラフィックは許可されません。*リダイレクト - クライアントはセキュアポートにリダイレクトされます。 |
|
| key はキーファイルの内容を提供します。 |
|
| termination はターミネーションタイプを示します。 *edge -TLS Termination はルーターによって行われ、http はバックエンドとの通信に使用されます (デフォルト)。* passthrough - トラフィックはルーターが TLS Termination を提供せずに宛先に直接送信されます。*reencrypt -TLS Termination はルーターとによって行われ、https はバックエンドとの通信に使用されます。 |
16.1.6. .spec.to
- 説明
- RouteTargetReference は、エンドポイントに解決されるターゲットを指定します。kind は 'Service' のみ使用できます。'weight' フィールドを使用して、1 つを他よりも強調します。
- 型
-
object
- 必須
-
kind
-
name
-
プロパティー | タイプ | 説明 |
---|---|---|
|
| ルートが参照しているターゲットの kind。現在、Service のみが許可されています。 |
|
| 参照されているサービス/ターゲットの名前。例: サービスの名前 |
|
| 0〜256 の整数としての重み (デフォルトは 100)。これは、他のターゲット参照オブジェクトに対するターゲットの相対的な重みを指定します。0 は、このバックエンドへの要求を抑制します。 |
16.1.7. .status
- 説明
- RouteStatus は、どのルーターがルートを確認するかなど、ルートのステータスの関連情報を提供します。
- 型
-
object
プロパティー | タイプ | 説明 |
---|---|---|
|
|
ingress は、ルートが公開する可能性のある場所を表します。Ingress ポイントのリストには、Host または RouterName の値が重複して含まれる可能性があります。 |
|
| RouteIngress は、ルートが公開されている場所に関する情報を保持します。 |
16.1.8. .status.ingress
- 説明
-
ingress は、ルートが公開する可能性のある場所を表します。Ingress ポイントのリストには、Host または RouterName の値が重複して含まれる可能性があります。
Ready
になると、ルートはライブと見なされます。 - 型
-
array
16.1.9. .status.ingress[]
- 説明
- RouteIngress は、ルートが公開されている場所に関する情報を保持します。
- 型
-
object
プロパティー | タイプ | 説明 |
---|---|---|
|
| Conditions はルートの状態であり、空の場合があります。 |
|
| RouteIngressCondition には、特定のルーターにおけるこのルートの現況に関する情報が含まれます。 |
|
| Host は、ルートが公開されるホスト文字列です。この値は必須です。 |
|
| CanonicalHostname は、このルートに要求されたホストの CNAME として使用できるルーターの外部ホスト名です。この値はオプションであり、すべての場合に設定できるとは限りません。 |
|
| 名前は、ルーターが自身を識別するために選択した名前です。この値は必須です。 |
|
| Wildcardpolicy は、このルートが公開されている場所で許可されたワイルドカードポリシーです。 |
16.1.10. .status.ingress[].conditions
- 説明
- Conditions はルートの状態であり、空の場合があります。
- 型
-
array
16.1.11. .status.ingress[].conditions[]
- 説明
- RouteIngressCondition には、特定のルーターにおけるこのルートの現況に関する情報が含まれます。
- 型
-
object
- 必須
-
type
-
status
-
プロパティー | タイプ | 説明 |
---|---|---|
| この条件が最後に遷移した RFC3339 の日付と時刻 | |
|
| 最後にある状態から別の状態に遷移した時間。 |
|
| (簡単な) 状態の最後の遷移の理由であり、通常は機械と人間が読み取れる定数です。 |
|
| ステータスは、状態のステータスです。True、False、Unknown の場合があります。 |
|
| タイプは条件のタイプです。現在のみ承認されています。 |