すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Knative でカスタムドメイン名とパスを使用する

最終更新日:Nov 09, 2025

Knative サービスのデフォルトドメイン名は {route}.{namespace}.{default-example.com} の形式です。{default-example.com} の部分はデフォルトのサフィックスで、通常は `example.com` です。より柔軟なルーティングのためにカスタムドメイン名を使用するには、このトピックの手順に従ってください。ACK Knative では、ConfigMap を使用してすべての Knative サービスのグローバルカスタムドメイン名を変更できます。また、DomainMapping を使用して、単一の Knative サービスにカスタムドメイン名を設定することもできます。

前提条件

グローバルカスタムドメイン名の設定

各サービスに個別にドメイン名を設定することなく、ACK Knative のすべての Knative サービスに同じドメイン名サフィックスを使用するには、次の手順に従います。

  1. 次のコマンドを実行して、knative-serving 名前空間にある config-domain という名前の ConfigMap オブジェクトを編集します。

    kubectl edit cm config-domain --namespace knative-serving
  2. 設定ファイルを変更します。

    デフォルトドメイン名を example.com からカスタムドメイン名に変更し、ファイルを保存します。この例では、カスタムドメイン名を mydomain に設定します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: config-domain
      namespace: knative-serving
    data:
      mydomain.com: "" # example.com を mydomain.com に置き換えます。実際のサービスドメイン名を使用してください。
  3. 次のコマンドを実行して、ドメイン名が有効になったかどうかを確認します。

    # helloworld-go を Knative サービスの名前に置き換えます。
    kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'

    予想される出力:

    helloworld-go.default.mydomain.com

    この出力は、カスタムドメイン名が有効になったことを示します。

  4. DNS レコードを追加して、カスタムドメイン名を Knative ゲートウェイの IP アドレスにマッピングします。

  5. 次のコマンドを実行して、カスタムドメイン名を使用して Knative サービスにアクセスします。

    curl http://helloworld-go.default.mydomain.com

    予想される出力:

    Hello Knative!

    この出力は、カスタムドメイン名が設定され、Knative サービスがリクエストに正常に応答したことを示します。

単一サービス用のカスタムドメイン名の設定

Knative サービスに特定のドメイン名を定義するには、次の手順に従います。

コンソール

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Knative] を選択します。

  3. [Knative] ページで、[サービス] タブをクリックし、ターゲットサービスの名前をクリックします。

  4. サービス詳細ページで、右上隅にある [アクセス設定] をクリックして、サービスのカスタムドメイン名を設定します。

kubectl

サービスに特定のドメイン名を定義し、柔軟なルーティングのために Ingress コントローラーを使用するには、DomainMapping を使用できます。

  1. 次のコマンドを実行して、helloworld.knative.top.yaml ファイルを作成します。

    vi helloworld.knative.top.yaml
  2. 次の YAML コンテンツをファイルに追加します。その後、ファイルを保存して閉じます。

    apiVersion: serving.knative.dev/v1beta1
    kind: DomainMapping
    metadata:
      name: helloworld.knative.top.mydomain.com # サービスドメイン名を設定します。実際のサービスドメイン名を使用してください。
      namespace: default # 名前空間をサービスが存在する名前空間に設定します。
    spec:
      ref:
        name: helloworld-go # ターゲットサービスの名前。
        kind: Service
        apiVersion: serving.knative.dev/v1
  3. 次のコマンドを実行して、helloworld.knative.top.yaml で定義されたリソースを Kubernetes クラスターに適用します。

    kubectl apply -f helloworld.knative.top.yaml

    予想される出力:

    domainmapping.serving.knative.dev/helloworld.knative.top created
  4. 次のコマンドを実行して DomainMapping を確認します。

    kubectl get domainmapping helloworld.knative.top

    予想される出力:

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       http://helloworld.knative.top            True

    この出力は、カスタムドメイン名が有効になったことを示します。

  5. DNS レコードを追加して、カスタムドメイン名を Knative ゲートウェイの IP アドレスにマッピングします。

  6. 次のコマンドを実行して、カスタムドメイン名を使用して Knative サービスにアクセスします。

    curl http://helloworld.knative.top.mydomain.com

    予想される出力:

    Hello Knative!

    この出力は、カスタムドメイン名が設定され、Knative サービスがリクエストに正常に応答したことを示します。

単一サービス用のカスタムパスの設定

Knative サービスに特定のパスを定義するには、knative.aliyun.com/serving-ingress アノテーションを使用してカスタムドメイン名とパスを指定できます。たとえば、knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee は、cafe.mydomain.com ドメイン名と /coffee パスを指定します。

単一パスの例:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: coffee-mydomain
  annotations:
    knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

複数パスの例:

複数のパスを区切るには、コンマ (,) を使用します。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: coffee-mydomain
  annotations:
    knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee,cafe.mydomain.com/tea
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

パスの再書き込み

Application Load Balancer (ALB) ゲートウェイはパスの再書き込みをサポートしています。Knative サービスのパスを書き換えるには、alb.ingress.kubernetes.io/rewrite-target: アノテーションを設定します。次のコードは例を示しています。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: coffee-mydomain
  annotations:
    knative.aliyun.com/serving-ingress: cafe.mydomain.com/api/coffee
    alb.ingress.kubernetes.io/rewrite-target: /coffee
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

ワイルドカードドメイン名の設定

Knative サービスにワイルドカードドメイン名を定義するには、knative.aliyun.com/serving-ingress アノテーションの値を / に設定します。たとえば、knative.aliyun.com/serving-ingress: / はワイルドカードドメイン名を指定します。次のコードは例を示しています。

ALB ゲートウェイのみがサポートされています。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: coffee-mydomain
  annotations:
    knative.aliyun.com/serving-ingress: "/"
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

関連ドキュメント