第1章 ルート
1.1. 基本的なルートの作成 リンクのコピーリンクがクリップボードにコピーされました!
HTTP で暗号化されていない場合は、ルートオブジェクトで基本的なルートを作成できます。
1.1.1. HTTP ベースのルートの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、hello-openshift アプリケーションを例に、Web アプリケーションへの簡単な HTTP ベースのルートを作成できます。
公開 URL でアプリケーションをホストするルートを作成できます。ルートは、アプリケーションのネットワークセキュリティー設定に応じて、セキュリティーで保護される場合と保護されない場合があります。HTTP ベースのルートとは、セキュアではないルートで、基本的な HTTP ルーティングプロトコルを使用してセキュリティー保護されていないアプリケーションポートでサービスを公開します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - 管理者としてログインしている。
- あるポートを公開する Web アプリケーションと、そのポートでトラフィックをリッスンする TCP エンドポイントがあります。
手順
次のコマンドを実行して、
hello-openshiftというプロジェクトを作成します。oc new-project hello-openshift
$ oc new-project hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してプロジェクトに Pod を作成します。
oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.json
$ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
hello-openshiftというサービスを作成します。oc expose pod/hello-openshift
$ oc expose pod/hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
hello-openshiftアプリケーションに対して、セキュアではないルートを作成します。oc expose svc hello-openshift
$ oc expose svc hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
作成した
routeリソースを確認するには、次のコマンドを実行します。oc get routes -o yaml hello-openshift
$ oc get routes -o yaml hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 作成したセキュアでないルートの YAML 定義の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
host-
サービスを参照するエイリアス DNS レコードを指定します。このフィールドには、
www.example.comなどの有効な DNS 名を指定できます。DNS 名は DNS952 サブドメイン規則に従う必要があります。指定しない場合は、ルート名が自動的に生成されます。 targetPortこのルートが指すサービスによって選択される Pod のターゲットポートを指定します。
注記デフォルトの Ingress ドメインを表示するには、以下のコマンドを実行します。
oc get ingresses.config/cluster -o jsonpath={.spec.domain}$ oc get ingresses.config/cluster -o jsonpath={.spec.domain}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.2. パスベースのルート リンクのコピーリンクがクリップボードにコピーされました!
パスベースのルートは、URL に対して比較できるパスコンポーネントを指定します。この場合、ルートのトラフィックは HTTP ベースである必要があります。そのため、それぞれが異なるパスを持つ同じホスト名を使用して複数のルートを提供できます。ルーターは、最も具体的なパスの順に基づいてルートと一致する必要があります。
以下の表は、ルートのサンプルおよびそれらのアクセシビリティーを示しています。
| ルート | 比較対象 | アクセス可能 |
|---|---|---|
| www.example.com/test | www.example.com/test | はい |
| www.example.com | いいえ | |
| www.example.com/test および www.example.com | www.example.com/test | はい |
| www.example.com | はい | |
| www.example.com | www.example.com/text | Yes (ルートではなく、ホストで一致) |
| www.example.com | はい |
パスが 1 つでセキュリティー保護されていないルート
- 1
- パスは、パスベースのルートに唯一追加される属性です。
ルーターは TLS を終了させず、要求のコンテンツを読み込みことができないので、パスベースのルーティングは、passthrough TLS を使用する場合には利用できません。
1.1.3. Ingress Controller シャーディングのルート作成 リンクのコピーリンクがクリップボードにコピーされました!
ルートを使用すると、URL でアプリケーションをホストできます。Ingress Controller のシャーディングは、一連の Ingress Controller 間での着信トラフィック負荷のバランスをとるのに役立ちます。特定の Ingress Controller へのトラフィックを分離することもできます。たとえば、Company A のトラフィックをある Ingress Controller に指定し、Company B を別の Ingress Controller に指定できます。
以下の手順では、例として hello-openshift アプリケーションを使用して、Ingress Controller シャーディングのルートを作成する方法を説明します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - プロジェクト管理者としてログインしている。
- ポートを公開する Web アプリケーションと、そのポート上のトラフィックをリッスンする HTTP または TLS エンドポイントがある。
- シャーディング用に Ingress Controller を設定している。
手順
次のコマンドを実行して、
hello-openshiftというプロジェクトを作成します。oc new-project hello-openshift
$ oc new-project hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してプロジェクトに Pod を作成します。
oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.json
$ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
hello-openshiftというサービスを作成します。oc expose pod/hello-openshift
$ oc expose pod/hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow hello-openshift-route.yamlというルート定義を作成します。シャーディング用に作成したルートの YAML 定義
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行し、
hello-openshift-route.yamlを使用してhello-openshiftアプリケーションへのルートを作成します。oc -n hello-openshift create -f hello-openshift-route.yaml
$ oc -n hello-openshift create -f hello-openshift-route.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを使用して、ルートのステータスを取得します。
oc -n hello-openshift get routes/hello-openshift-edge -o yaml
$ oc -n hello-openshift get routes/hello-openshift-edge -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 結果の
Routeリソースは次のようになります。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ingress Controller またはルーターがルートを公開するために使用するホスト名。
hostフィールドの値は、Ingress Controller によって自動的に決定され、そのドメインを使用します。この例では、Ingress Controller のドメインは<apps-sharded.basedomain.example.net>です。 - 2
- Ingress Controller のホスト名。ホスト名が設定されていない場合、ルートは代わりにサブドメインを使用できます。サブドメインを指定すると、ルートを公開する Ingress Controller のドメインが自動的に使用されます。ルートが複数の Ingress Controller によって公開される場合、ルートは複数の URL でホストされます。
- 3
- Ingress Controller の名前。この例では、Ingress Controller の名前は
shardedです。
1.1.4. Ingress オブジェクトを使用したルートの作成 リンクのコピーリンクがクリップボードにコピーされました!
一部のエコシステムコンポーネントには Ingress リソースとの統合機能がありますが、ルートリソースとは統合しません。これに対応するために、OpenShift Container Platform は Ingress オブジェクトの作成時に管理されるルートオブジェクトを自動的に作成します。これらのルートオブジェクトは、対応する Ingress オブジェクトが削除されると削除されます。
手順
OpenShift Container Platform コンソールで Ingress オブジェクトを定義するか、
oc createコマンドを実行します。Ingress の YAML 定義
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
route.openshift.io/terminationアノテーションは、Routeのspec.tls.terminationフィールドを設定するために使用できます。Ingressにはこのフィールドがありません。許可される値はedge、passthrough、およびreencryptです。その他のすべての値は警告なしに無視されます。アノテーション値が設定されていない場合は、edgeがデフォルトルートになります。デフォルトの edge ルートを実装するには、TLS 証明書の詳細をテンプレートファイルで定義する必要があります。- 3
Ingressオブジェクトを操作する場合、ルートを操作する場合とは異なり、明示的なホスト名を指定する必要があります。<host_name>.<cluster_ingress_domain>構文 (apps.openshiftdemos.comなど) を使用して、*.<cluster_ingress_domain>ワイルドカード DNS レコードとクラスターのサービング証明書を利用できます。それ以外の場合は、選択したホスト名の DNS レコードがあることを確認する必要があります。route.openshift.io/terminationアノテーションでpassthroughの値を指定する場合は、仕様でpathを''に設定し、pathTypeをImplementationSpecificに設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f ingress.yaml
$ oc apply -f ingress.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 2
route.openshift.io/destination-ca-certificate-secretを Ingress オブジェクトで使用して、カスタム宛先証明書 (CA) でルートを定義できます。アノテーションは、生成されたルートに挿入される kubernetes シークレットsecret-ca-certを参照します。-
Ingress オブジェクトから宛先 CA を使用してルートオブジェクトを指定するには、シークレットの
data.tls.crt指定子に PEM エンコード形式の証明書を使用してkubernetes.io/tlsまたはOpaqueタイプのシークレットを作成する必要があります。
-
Ingress オブジェクトから宛先 CA を使用してルートオブジェクトを指定するには、シークレットの
ルートを一覧表示します。
oc get routes
$ oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 結果には、
frontend-で始まる名前の自動生成ルートが含まれます。NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD frontend-gnztq www.example.com frontend 443 reencrypt/Redirect None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD frontend-gnztq www.example.com frontend 443 reencrypt/Redirect NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow このルートを検査すると、以下のようになります。
自動生成されるルートの YAML 定義
Copy to Clipboard Copied! Toggle word wrap Toggle overflow