This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.10.3. Knative サービスのカスタムドメインの設定
				Knative サービスには、クラスターの設定に基づいてデフォルトのドメイン名が自動的に割り当てられます。例: <service_name>-<namespace>.example.com.所有するカスタムドメイン名を Knative サービスにマッピングすることで、Knative サービスのドメインをカスタマイズできます。
			
				これを行うには、サービスの DomainMapping リソースを作成します。複数の DomainMapping を作成して、複数のドメインおよびサブドメインを単一サービスにマップすることもできます。
			
10.3.1. カスタムドメインマッピングの作成 リンクのコピーリンクがクリップボードにコピーされました!
					所有するカスタムドメイン名を Knative サービスにマッピングすることで、Knative サービスのドメインをカスタマイズできます。カスタムドメイン名をカスタムリソース (CR) にマッピングするには、Knative サービスまたは Knative ルートなどのアドレス指定可能なターゲット CR にマッピングする DomainMapping CR を作成する必要があります。
				
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
 - 
							OpenShift CLI (
oc) をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
 Knative サービスを作成し、そのサービスにマップするカスタムドメインを制御できる。
注記カスタムドメインは OpenShift Container Platform クラスターの IP アドレスを参照する必要があります。
手順
マップ先となるターゲット CR と同じ namespace に
DomainMappingCR が含まれる YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスドメインマッピングの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートドメインマッピングの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DomainMappingCR を YAML ファイルとして適用します。oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
10.3.2. Knative CLI を使用したカスタムドメインマッピングの作成 リンクのコピーリンクがクリップボードにコピーされました!
					所有するカスタムドメイン名を Knative サービスにマッピングすることで、Knative サービスのドメインをカスタマイズできます。Knative (kn) CLI を使用して、Knative サービスまたは Knative ルートなどのアドレス指定可能なターゲット CR にマップする DomainMapping カスタムリソース (CR) を作成できます。
				
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
 Knative サービスまたはルートを作成し、その CR にマップするカスタムドメインを制御している。
注記カスタムドメインは OpenShift Container Platform クラスターの DNS を参照する必要があります。
- 
							Knative (
kn) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
 
手順
ドメインを現在の namespace の CR にマップします。
kn domain create <domain_mapping_name> --ref <target_name>
$ kn domain create <domain_mapping_name> --ref <target_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
kn domain create example.com --ref example-service
$ kn domain create example.com --ref example-serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow --refフラグは、ドメインマッピング用のアドレス指定可能なターゲット CR を指定します。--refフラグの使用時に接頭辞が指定されていない場合、ターゲットが現在の namespace の Knative サービスであることを前提としています。ドメインを指定された namespace の Knative サービスにマップします。
kn domain create <domain_mapping_name> --ref <ksvc:service_name:service_namespace>
$ kn domain create <domain_mapping_name> --ref <ksvc:service_name:service_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
kn domain create example.com --ref ksvc:example-service:example-namespace
$ kn domain create example.com --ref ksvc:example-service:example-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow ドメインを Knative ルートにマップします。
kn domain create <domain_mapping_name> --ref <kroute:route_name>
$ kn domain create <domain_mapping_name> --ref <kroute:route_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
kn domain create example.com --ref kroute:example-route
$ kn domain create example.com --ref kroute:example-routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
10.3.3. TLS 証明書を使用してカスタムドメインでサービスを保護する リンクのコピーリンクがクリップボードにコピーされました!
					Knative サービスのカスタムドメインを設定したら、TLS 証明書を使用して、マップされたサービスを保護できます。これを行うには、Kubernetes TLS シークレットを作成してから、作成した TLS シークレットを使用するように DomainMapping CR を更新する必要があります。
				
						Ingress に net-istio を使用し、security.dataPlane.mtls: true を使用して SMCP 経由で mTLS を有効にする場合、Service Mesh は *.local ホストの DestinationRules をデプロイしますが、これは OpenShift Serverless の DomainMapping を許可しません。
					
						この問題を回避するには、security.dataPlane.mtls: true を使用する代わりに PeerAuthentication をデプロイして mTLS を有効にします。
					
前提条件
- 
							Knative サービスのカスタムドメインを設定し、有効な 
DomainMappingCR がある。 - 認証局プロバイダーからの TLS 証明書または自己署名証明書がある。
 - 
							認証局プロバイダーまたは自己署名証明書から 
certファイルおよびkeyファイルを取得している。 - 
							OpenShift CLI (
oc) をインストールしている。 
手順
Kubernetes TLS シークレットを作成します。
oc create secret tls <tls_secret_name> --cert=<path_to_certificate_file> --key=<path_to_key_file>
$ oc create secret tls <tls_secret_name> --cert=<path_to_certificate_file> --key=<path_to_key_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenShift Service Mesh を OpenShift Serverless インストールのイングレスとして使用している場合は、Kubernetes TLS シークレットに次のラベルを付けます。
“networking.internal.knative.dev/certificate-uid": “<value>”
“networking.internal.knative.dev/certificate-uid": “<value>”Copy to Clipboard Copied! Toggle word wrap Toggle overflow cert-manager などのサードパーティーのシークレットプロバイダーを使用している場合は、Kubernetes TLS シークレットに自動的にラベルを付けるようにシークレットマネージャーを設定できます。Cert-manager ユーザーは、提供されたシークレットテンプレートを使用して、正しいラベルを持つシークレットを自動的に生成できます。この場合、シークレットのフィルターリングはキーのみに基づいて行われますが、この値には、シークレットに含まれる証明書 ID などの有用な情報が含まれている可能性があります。
注記{cert-manager-operator} はテクノロジープレビュー機能です。詳細は、{cert-manager-operator} のインストール に関するドキュメントを参照してください。
作成した TLS シークレットを使用するように
DomainMappingCR を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
検証
DomainMappingCR のステータスがTrueであることを確認し、出力のURL列に、マップされたドメインをスキームのhttpsで表示していることを確認します。oc get domainmapping <domain_name>
$ oc get domainmapping <domain_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME URL READY REASON example.com https://example.com True
NAME URL READY REASON example.com https://example.com TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: サービスが公開されている場合は、以下のコマンドを実行してこれが利用可能であることを確認します。
curl https://<domain_name>
$ curl https://<domain_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書が自己署名されている場合は、
curlコマンドに-kフラグを追加して検証を省略します。