13.2. Configuring services using annotations
サイトを作成し、リンクした後に、Kubernetes アノテーションを使用して、サービスネットワークで利用可能なサービスを制御できます。
13.2.1. アノテーションを使用したサービスネットワーク上での簡単なサービスの公開
このセクションでは、skupper expose
コマンドの代替手段を説明します。これにより、既存のリソースにアノテーションを付けて、サービスネットワーク上で単純なサービスを公開できます。
前提条件
- 公開するサービスが含まれるサイト
手順
- サイトとして設定されたクラスターの namespace にログインします。
たとえば、サイトの 1 つにデプロイメント、いくつかの Pod、またはサービスを作成します。
$ kubectl create deployment hello-world-backend --image quay.io/skupper/hello-world-backend
この手順は Skupper 固有のものではありません。つまり、このプロセスはクラスターの標準プロセスから変更されていません。
kubernetes リソースにアノテーションを付け、サービスネットワーク上で通信できるサービスを作成します。以下に例を示します。
$ kubectl annotate deployment backend "skupper.io/address=backend" "skupper.io/port=8080" "skupper.io/proxy=tcp"
アノテーションには以下が含まれます。
-
skupper.io/proxy
- 使用するプロトコル (tcp
、http
、またはhttp2
)。これは、唯一必要なアノテーションです。たとえば、backend
という名前の単純なデプロイメントにskupper.io/proxy=tcp
のアノテーションを付けると、サービスはbackend
として公開され、デプロイメントのcontainerPort
値がポート番号として使用されます。 -
skupper.io/address
- サービスネットワーク上のサービスの名前。 -
skupper.io/port
- サービスネットワーク上のサービス用の 1 つ以上のポート。
注記デプロイメントなどの他のリソースではなく、サービスを公開する際には、
skupper.io/target
アノテーションを使用して、元のサービスが変更されないようにすることができます。たとえば、backend
サービスを公開する場合は、以下のコマンドを実行します。$ kubectl annotate service backend "skupper.io/address=van-backend" "skupper.io/port=8080" \ "skupper.io/proxy=tcp" "skupper.io/target=backend"
これにより、アノテーションを再度適用しなくても
backend
サービスを削除して再作成することができます。-
サービスを公開していることを確認します。
$ skupper service status -v Services exposed through Skupper: ╰─ backend:8080 (tcp) ╰─ Sites: ├─ 4d80f485-52fb-4d84-b10b-326b96e723b2(west) │ policy: disabled ╰─ 316fbe31-299b-490b-9391-7b46507d76f1(east) │ policy: disabled ╰─ Targets: ╰─ backend:8080 name=backend-9d84544df-rbzjx
注記サービスの関連ターゲットは、ターゲットが現在のクラスターで使用可能な場合にのみ表示されます。
13.2.2. Skupper アノテーションについて
アノテーションを使用すると、サービスネットワーク上でサービスを公開できます。このセクションでは、これらのアノテーション範囲の詳細を説明します。
- skupper.io/address
サービスネットワーク上のサービスの名前。以下に適用されます。
- デプロイメント
- StatefulSets
- DaemonSets
- サービス
- skupper.io/port
サービスネットワーク上のサービスのポート。以下に適用されます。
- デプロイメント
- StatefulSets
- DaemonSets
- skupper.io/proxy
使用するプロトコル (
tcp
、http
、またはhttp2
)。以下に適用されます。- デプロイメント
- StatefulSets
- DaemonSets
- サービス
- skupper.io/target
公開するターゲットサービスの名前。以下に適用されます。
- サービス
- skupper.io/service-labels
公開されるサービスのラベルキーと値のコンマ区切りリスト。このアノテーションを使用して、公開されたサービスを監視するラベルを設定できます。以下に適用されます。
- デプロイメント
- DaemonSets
- サービス