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 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 otomatis menentukan Layanan Kanonis dan cara menyesuaikan batas layanan secara manual.
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
MESH_EXTERNAL
)
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 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 yang sama dengan instance workload terkaitnya dan tidak dapat mencakup namespace.
Aturan pelabelan otomatis
Cloud Service Mesh secara otomatis mengelompokkan workload berbasis Pod dan VM 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 label app.kubernetes.io/name
dan
app
Kubernetes. Perlu diperhatikan bahwa label sebelumnya lebih diprioritaskan.
Jika Anda menggunakan salah satu dari dua label ini pada beban kerja, Anda tidak perlu melakukan pekerjaan lebih lanjut.
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.
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
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 Kanonis satu Pod, tambahkan label service.istio.io/canonical-name
ke bagian labels
pada 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 Layanan Kanonis dari satu VM/WorkloadEntry, tambahkan label service.istio.io/canonical-name
ke bagian "label" di 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 layanan eksternal secara manual
Untuk memberi label Layanan Kanonis dari satu layanan/ServiceEntry eksternal, tambahkan label service.istio.io/canonical-name
ke bagian "label" 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
...