Menentukan Layanan Kanonis

Catatan: Layanan Kanonis didukung secara otomatis di Cloud Service Mesh versi 1.6.8 dan yang lebih baru.

Layanan Kanonis adalah grup workload yang menerapkan layanan dan API yang sama. Untuk jenis workload yang didukung, Cloud Service Mesh otomatis membuat resource Layanan Kanonis berdasarkan informasi yang ada dari Server API Kubernetes. Halaman ini menjelaskan label yang secara otomatis menentukan Layanan Kanonis dan cara menyesuaikan batas layanan secara manual.

Jenis instance workload yang didukung adalah:

  • Pod Kubernetes (termasuk melalui Deployment Kubernetes, Layanan Kube Run, dll.)
  • Layanan eksternal mesh (khususnya, resource ServiceEntry dengan lokasi MESH_EXTERNAL)

Yang menentukan Layanan Kanonis

Cloud Service Mesh menentukan keanggotaan Layanan Kanonis dengan membaca service.istio.io/canonical-name label pada resource konfigurasi Kubernetes yang terkait dengan setiap instance workload:

  • Untuk Pod, labelnya ada di resource Pod Kubernetes
  • Untuk layanan eksternal, labelnya ada di resource Istio ServiceEntry

Layanan Kanonis memiliki namespace Kubernetes yang sama dengan instance workload terkait dan tidak dapat mencakup namespace.

Aturan pemberian label otomatis

Cloud Service Mesh otomatis mengelompokkan workload Anda ke dalam Layanan Kanonis tanpa tindakan apa pun dari Anda. Anda hanya perlu mengambil tindakan untuk:

  • Menyesuaikan label untuk kejelasan pengguna atau pembaca
  • Mengganti perilaku default.

Pemberian label otomatis di Pod Kubernetes

Layanan Kanonis berfokus pada label app.kubernetes.io/name dan app Kubernetes. Perhatikan bahwa label sebelumnya diutamakan. Jika Anda menggunakan salah satu dari dua label ini pada workload, tidak ada pekerjaan lebih lanjut yang diperlukan.

Pemberian label secara manual

Untuk menerapkan atau mengganti label Layanan Kanonis secara manual, terapkan label service.istio.io/canonical-name ke konfigurasi resource workload yang didukung. Agar layanan eksternal dikenali sebagai Layanan Kanonis, Anda harus memberi label ServiceEntry yang berlaku secara manual.

Pemberian label manual di Pod Kubernetes

Untuk men-deploy banyak Pod sekaligus menggunakan Deployment, tetapkan label service.istio.io/canonical-name di PodTemplateSpec:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  namespace: my-namespace
spec:
  replicas: 3
  template:
    metadata:
      labels:
        service.istio.io/canonical-name: my-service
    spec:
      containers:
        ...

Untuk memberi label Layanan Kanonis dari satu Pod, tambahkan label service.istio.io/canonical-name ke bagian labels konfigurasi Pod Anda:

apiVersion: v1
kind: Pod
metadata:
  name: my-test-pod
  namespace: my-namespace
  labels:
    service.istio.io/canonical-name: my-service
spec:
  ...

Memberi label layanan eksternal secara manual

Untuk memberi label Layanan Kanonis dari satu layanan eksternal/ServiceEntry, tambahkan label service.istio.io/canonical-name ke bagian "labels" konfigurasi ServiceEntry Anda:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: example-com
  namespace: my-namespace
  labels:
    service.istio.io/canonical-name: an-external-service
spec:
   location: MESH_EXTERNAL
  ...

Langkah berikutnya