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