Mendefinisikan Layanan Kanonis

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

Layanan Kanonis adalah grup beban kerja yang mengimplementasikan layanan dan API yang sama. Untuk jenis workload yang didukung, Cloud Service Mesh secara otomatis membuat resource Layanan Kanonis berdasarkan informasi yang ada dari Server Kubernetes API. Halaman ini menjelaskan label apa saja yang secara otomatis menentukan Layanan Kanonis dan cara menyesuaikan batas layanan Anda secara manual. Jenis instance beban kerja 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 MESH_EXTERNAL)

Apa yang mendefinisikan Layanan Kanonis

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

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

Layanan Kanonis memiliki namespace Kubernetes yang sama dengan instance workload terkaitnya dan tidak dapat menjangkau namespace.

Aturan pelabelan otomatis

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

  • Menyesuaikan label agar jelas bagi pengguna/pembaca
  • Ganti perilaku default.

Pelabelan otomatis di Pod Kubernetes

Layanan Kanonis berfokus pada label app.kubernetes.io/name dan app Kubernetes. Perlu diketahui bahwa label pertama lebih diprioritaskan. Jika menggunakan salah satu dari dua label ini pada beban kerja, Anda tidak perlu melakukan pekerjaan lebih lanjut.

Pelabelan otomatis di Mesin Virtual

Untuk membangun Layanan Kanonis di VM, Anda harus menambahkan VM ke mesh layanan dengan mengonfigurasi resource WorkloadEntry di server Kubernetes API.

Pelabelan 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.

Pelabelan manual di Pod Kubernetes

Untuk men-deploy banyak Pod sekaligus menggunakan Deployment, tetapkan 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 pada Layanan Kanonis dari satu Pod, tambahkan label service.istio.io/canonical-name ke bagian labels dalam 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 virtual machine secara manual

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

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 pada layanan eksternal secara manual

Untuk memberi label pada Layanan Kanonis dari satu layanan eksternal/ServiceEntry, tambahkan label service.istio.io/canonical-name ke bagian "label" dalam 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 selanjutnya