Knative Serviceのデフォルトのドメイン名は {route}.{namespace}.{default-example.com}
形式で、{default-example.com}
はデフォルトのサフィックスです。 柔軟なルーティング設定を実現するには、このトピックを参照してカスタムドメイン名を設定します。 ACK Knative は、すべてのKnativeサービスに適用可能なConfigMapを介してグローバルカスタムドメイン名を変更する機能を提供します。 DomainMappingを使用して、ACK Knative の個々のKnativeサービスのカスタムドメイン名を指定することもできます。
前提条件
Knativeはクラスターにデプロイされています。 詳細については、「」「Knativeのデプロイ」をご参照ください。
ドメイン名が取得されていること。 詳細については、「」をご参照ください。ドメインとは何ですか?
クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続します。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」「」をご参照ください。
カスタムグローバルドメイン名の指定
各Knative Serviceのドメイン名を指定しない場合は、グローバルドメイン名を指定できます。 次の設定を完了すると、ACK Knative にデプロイされたすべてのKnativeサービスは、指定されたグローバルドメイン名を共有できます。
次のコマンドを実行して、
knative-serving
名前空間のconfig-domain
ConfigMapを変更します。kubectl edit cm config-domain --namespace knative-serving
ConfigMapを変更します。
ConfigMapのデフォルトドメイン名
example.com
をカスタムドメイン名に変更し、ConfigMapを保存します。 この例では、カスタムドメイン名mydomain
が使用されています。apiVersion: v1 kind: ConfigMap metadata: name: config-domain namespace: knative-serving data: mydomain.com: "" # Change example.com to mydomain.com. Replace the default domain name with the actual domain name that you want to use.
次のコマンドを実行してドメイン名を確認します。
# Replace helloworld-go in the command with the name of your Knative Service. kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'
期待される出力:
helloworld-go.default.mydomain.com
出力は、カスタムドメイン名が有効であることを示します。
Alibaba Cloud DNSコンソールで、KnativeゲートウェイのIPアドレスをカスタムドメイン名の解決設定に追加します。
次のコマンドを実行して、カスタムドメイン名を使用してKnativeサービスにアクセスします。
curl http://helloworld-go.default.mydomain.com
期待される出力:
Hello Knative!
出力は、Knativeサービスがリクエストに正常に応答したことを示します。
サービスのカスタムドメイン名の指定
各Knative Serviceのカスタムドメイン名を指定するには、以下の手順に従います。
ACKコンソールの使用
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[Knative] ページで、[サービス] タブをクリックし、構成するサービスの名前を見つけてクリックします。
詳細ページの右上隅にある [アクセス制御] をクリックし、プロンプトに従ってパラメーターを設定します。
kubectlの使用
Ingressコントローラーを使用して異なるKnativeサービスのルーティング構成をカスタマイズする場合は、DomainMappingsを使用して各Knativeサービスのドメイン名を指定できます。
次のコマンドを実行して、
helloworld.knative.top.yaml
という名前のファイルを作成します。vi helloworld.knative.top.yaml
viエディターを開き、次のYAMLコンテンツを追加し、コンテンツを保存してから終了します。
apiVersion: serving.knative.dev/v1beta1 kind: DomainMapping metadata: name: helloworld.knative.top.mydomain.com # The domain name of the Knative Service. Replace it with the domain name that you want to use. namespace: default # The namespace to which the Knative Service belongs. spec: ref: name: helloworld-go # The name of the Knative Service. kind: Service apiVersion: serving.knative.dev/v1
次のコマンドを実行して、
helloworld.knative.top.yaml
ファイルで定義されたリソースをクラスターにデプロイします。kubectl apply -f helloworld.knative.top.yaml
期待される出力:
domainmapping.serving.knative.dev/helloworld.knative.top created
次のコマンドを実行して、DomainMappingを確認します。
kubectl get domainmapping helloworld.knative.top
期待される出力:
NAME URL READY REASON helloworld.knative.top http://helloworld.knative.top True
出力は、カスタムドメイン名が有効であることを示します。
Alibaba Cloud DNSコンソールで、KnativeゲートウェイのIPアドレスをカスタムドメイン名の解決設定に追加します。
次のコマンドを実行して、カスタムドメイン名を使用してKnativeサービスにアクセスします。
curl http://helloworld.knative.top.mydomain.com
期待される出力:
Hello Knative!
出力は、Knativeサービスがリクエストに正常に応答したことを示します。
関連ドキュメント
カスタムドメイン名を使用してHTTPS経由でサービスにアクセスするように証明書を設定できます。 詳細については、「HTTPS経由でサービスにアクセスするための証明書の設定」をご参照ください。
KnativeにgRPCサービスをデプロイして、ネットワーク効率を向上させることができます。 詳細については、「KnativeでのgRPCサービスのデプロイ」をご参照ください。