Menentukan Layanan Kanonis

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

Layanan Kanonis adalah grup workload yang mengimplementasikan layanan dan API yang sama. Untuk jenis workload yang didukung, Cloud Service Mesh otomatis membuat resource Layanan Kanonis berdasarkan informasi dari Server Kubernetes API. Halaman ini menjelaskan label apa otomatis menentukan Layanan Kanonis dan bagaimana Anda dapat menyesuaikan batas layanan Anda. Jenis instance workload yang saat ini didukung adalah:

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

Yang mendefinisikan Layanan Kanonis

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

  • Untuk Pod, label ini berada di resource Pod Kubernetes
  • Untuk VM, label dalam resource Istio WorkloadEntry
  • Untuk layanan eksternal, label ini berada di resource ServiceEntry Istio

Layanan Kanonis memiliki Namespace Kubernetes sebagai instance workload terkait dan tidak dapat mencakup namespace.

Aturan pelabelan otomatis

Cloud Service Mesh secara otomatis mengelompokkan workload berbasis Pod dan VM Anda ke dalam Layanan Kanonis tanpa perlu melakukan tindakan apa pun. Anda hanya perlu mengambil tindakan untuk:

  • Sesuaikan label untuk kejelasan pengguna/pembaca
  • Ganti perilaku default.

Pelabelan otomatis di Pod Kubernetes

Layanan Kanonis berfokus pada app.kubernetes.io/name Kubernetes dan app label. Perlu diperhatikan bahwa label sebelumnya lebih diprioritaskan. Jika Anda menggunakan salah satu dari dua label ini pada beban kerja Anda, tidak ada pekerjaan lebih lanjut tidak diperlukan.

Pelabelan otomatis di Mesin Virtual

Untuk mem-build Layanan Kanonis di VM, Anda harus menambahkan VM ke mesh layanan dengan mengonfigurasi Resource WorkloadEntry di server Kubernetes API Anda.

Pelabelan secara manual

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

Pelabelan manual di Pod Kubernetes

Untuk men-deploy banyak Pod sekaligus menggunakan Deployment, menetapkan label service.istio.io/canonical-name pada 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 satu Pod, tambahkan Label service.istio.io/canonical-name ke bagian labels Pod Anda konfigurasi:

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

Memberi label virtual machine secara manual

Untuk memberi label pada Layanan Kanonis satu VM/WorkloadEntry, tambahkan service.istio.io/canonical-name label ke "label" bagian dari Konfigurasi WorkloadEntry:

apiVersion: networking.istio.io/v1alpha3
kind: WorkloadEntry
metadata:
  name: my-vm-123
  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 elemen service.istio.io/canonical-name label ke "label" bagian dari Konfigurasi ServiceEntry:

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 selanjutnya