Menentukan Layanan Kanonis

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

Layanan Kanonik adalah grup beban kerja yang menerapkan layanan dan API yang sama. Untuk jenis workload yang didukung, Cloud Service Mesh akan otomatis membuat resource Layanan Kanonik berdasarkan informasi yang ada dari Server Kubernetes API. Halaman ini menjelaskan label apa saja yang secara otomatis menentukan Layanan Kanonik dan cara menyesuaikan batas layanan secara manual. Jenis instance workload yang saat ini didukung adalah:

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

Yang menentukan Layanan Kanonis

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

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

Layanan Kanonik memiliki namespace Kubernetes yang sama dengan instance workload terkait dan tidak dapat menjangkau namespace.

Aturan pelabelan otomatis

Cloud Service Mesh otomatis mengelompokkan beban kerja berbasis Pod dan VM ke dalam Layanan Kanonik tanpa tindakan apa pun dari Anda. Anda hanya perlu melakukan tindakan untuk:

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

Pemberian label otomatis di Pod Kubernetes

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

Pelabelan otomatis di Virtual Machine

Untuk mem-build Layanan Canonical di VM, Anda harus menambahkan VM ke service mesh dengan mengonfigurasi resource WorkloadEntry di server Kubernetes API.

Memberi label secara manual

Untuk menerapkan atau mengganti label Layanan Kanonik secara manual, terapkan label service.istio.io/canonical-name ke konfigurasi resource workload yang didukung. Agar layanan eksternal dapat dikenali sebagai Layanan Kanonik, Anda harus memberi label pada 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 pada Layanan Kanonik 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 Kanonik dari satu VM/WorkloadEntry, tambahkan label service.istio.io/canonical-name ke bagian "label" pada 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 Kanonik dari satu layanan eksternal/ServiceEntry, tambahkan label service.istio.io/canonical-name ke bagian "labels" pada 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