プライベートサービスの設定¶
デフォルトでは、Knativeを通じてデプロイされたサービスは.svc.cluster.local
ドメインを使用します。これは、それらがプライベートであり、したがってパブリックIPアドレスまたはパブリックURLを持たないことを意味します。
Knativeサービスをデフォルトでパブリック(パブリックIPアドレスとパブリックURLを持つ)にするには、サービスのドメイン名を構成します。これは、単一のサービスまたはクラスター上のすべてのサービスに対して行うことができます。
個々のサービスをプライベートにする¶
個々のサービスをプライベートにするには、サービスまたはルートにnetworking.knative.dev/visibility=cluster-local
というラベルを付けると、外部ゲートウェイに公開されなくなります。
-
Knativeサービスにラベルを付けるには
kubectl label kservice ${KSVC_NAME} networking.knative.dev/visibility=cluster-local
Kubernetesサービスにラベルを付けることで、よりきめ細かい方法で可視性を制限できます。タグ付きルートについては、トラフィック管理を参照してください。
-
ルートがKnativeサービスなしで直接使用される場合に、ルートにラベルを付けるには
kubectl label route ${ROUTE_NAME} networking.knative.dev/visibility=cluster-local
-
Kubernetesサービスにラベルを付けるには
kubectl label service ${SERVICE_NAME} networking.knative.dev/visibility=cluster-local
例¶
Hello Worldサンプルをデプロイし、サービスにラベルを付けることでクラスターローカルサービスに変換できます。
kubectl label kservice helloworld-go networking.knative.dev/visibility=cluster-local
次に、helloworld-go
サービスのURLを確認することで、変更が加えられたことを確認できます。
kubectl get kservice helloworld-go
NAME URL LATESTCREATED LATESTREADY READY REASON
helloworld-go http://helloworld-go.default.svc.cluster.local helloworld-go-2bz5l helloworld-go-2bz5l True
サービスは、svc.cluster.local
ドメインを持つURLを返し、サービスがクラスタローカルネットワークでのみ利用可能であることを示します。