Knative サービスのデフォルトのドメイン名は、{route}.{namespace}.{default-example.com} 形式です。 {default-example.com} はデフォルトのサフィックスです。ほとんどの場合、サフィックスは example.com です。このトピックでは、トラフィックを柔軟にルーティングするためにカスタムドメイン名を構成する方法について説明します。 ACS Knative の ConfigMap を変更して、すべての Knative サービスに影響するグローバルドメイン名を変更できます。また、DomainMapping を追加して、単一の Knative サービスのカスタムドメイン名を指定することもできます。
前提条件
Knative が ACS クラスタにデプロイされていること。詳細については、Knative をデプロイする を参照してください。
ドメイン名が登録されていること。詳細については、Alibaba Cloud ドメイン を参照してください。
kubectl クライアントがクラスタに接続されていること。詳細については、クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する を参照してください。
グローバルドメイン名を変更する
ACS Knative にデプロイされたすべての Knative サービスで同じドメイン名サフィックスを共有する場合は、次の手順を実行します。
次のコマンドを実行して、
knative-serving名前空間のconfig-domainConfigMap を変更します。kubectl edit cm config-domain --namespace knative-servingConfigMap を変更します。
ConfigMap のデフォルトのドメイン名
example.comをカスタムドメイン名に変更し、ConfigMap を保存します。この例では、カスタムドメイン名mydomainを使用します。apiVersion: v1 kind: ConfigMap metadata: name: config-domain namespace: knative-serving data: mydomain.com: "" # example.com を mydomain.com に変更します。デフォルトのドメイン名を、実際に使用するドメイン名に置き換えます。次のコマンドを実行して、ドメイン名を確認します。
# コマンドの helloworld-go を Knative サービスの名前に置き換えます。 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 サービスのドメイン名を指定する
単一の Knative サービスのドメイン名を指定するには、次の手順を実行します。
コンソールを使用する
ACS コンソールにログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけて、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、 を選択します。
Knative ページで、サービスタブをクリックし、構成するサービスの名前を見つけてクリックします。
詳細ページの右上隅にあるアクセス制御をクリックし、プロンプトに従ってパラメータを設定します。
kubectl
単一の Knative サービスのドメイン名を指定し、Ingress コントローラを使用して Ingress を管理する場合は、DomainMapping を追加します。
次のコマンドを実行して、
helloworld.knative.top.yamlという名前のファイルを作成します。vi helloworld.knative.top.yamlvi エディタを開き、次の YAML コンテンツを追加して保存し、終了します。
apiVersion: serving.knative.dev/v1beta1 kind: DomainMapping metadata: name: helloworld.knative.top.mydomain.com # Knative サービスのドメイン名。使用するドメイン名に置き換えます。 namespace: default # Knative サービスが属する名前空間。 spec: ref: name: helloworld-go # Knative サービスの名前。 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 サービスにアクセスする を参照してください。
ネットワーク効率を向上させるために、Knative に gRPC サービスをデプロイできます。詳細については、Knative に gRPC サービスをデプロイする を参照してください。