Destination
概要
Destination とは Istio サービスメッシュ内のトラフィックの宛先を指す.Destination はサービスメッシュ内のアドレスを持つサービスを意味する.直感的には, Kubernetes の Service 配下にある Pod をさらにラベル (このラベルは実行されているアプリケーションのバージョンなどを指す) に基づいて部分集合に分割するような使用方法をする. Destination の例
code:yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews-destination
namespace: foo
spec:
host: reviews # interpreted as reviews.foo.svc.cluster.local
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
この例では foo Namespace の reviews Service 配下にある Pod たちを, v1 と v2 という二つの subset (部分集合) に分割している. v1 subset には "v1" という Kubernetes のラベルが, v2 には "v2" がついた Pod をそれぞれ含めている.
Destination を定義しない場合の挙動
Destination を定義しなければ Kubernetes の Service 配下にある Pod が暗黙的に Destination として使用される.つまり, myservice.mynamespace.svc.cluster.local というドメインに向けたサービスメッシュ内のトラフィックは, mynamespace Namespace 内の myservice Service の配下にある Pod に暗黙的に向けられる.言い換えると, Service 配下の Pod は部分集合に分割されない.
参考