Halaman ini memberikan informasi tentang cara mengonfigurasi Direktori Layanan dengan Google Kubernetes Engine (GKE) dan otomatis mendaftarkan cluster GKE Anda ke Direktori Layanan. Anda dapat mengonfigurasi Direktori Layanan untuk GKE dengan Autopilot cluster GKE atau cluster GKE Standar. Untuk mengetahui informasi tentang kedua mode tersebut, lihat Memilih mode operasi GKE.
Untuk mempelajari Direktori Layanan untuk GKE lebih lanjut, lihat Ringkasan Direktori Layanan untuk GKE.
Batasan
Direktori Layanan untuk GKE memiliki batasan berikut:
- Anda hanya dapat mendaftarkan layanan menggunakan integrasi Direktori Layanan-GKE. Anda harus mendaftarkan ingress, gateway, dan resource lainnya secara manual menggunakan Service Directory API.
- Anda harus mendaftarkan cluster GKE menggunakan Fleet sebelum Anda dapat menyinkronkan layanan di cluster tersebut ke Direktori Layanan. Untuk mengetahui detail cara mendaftarkan cluster GKE, lihat Mendaftarkan a cluster.
- Semua resource Direktori Layanan terdaftar di project fleet, bukan project cluster.
- Anda tidak dapat mengubah entity Direktori Layanan yang terdaftar menggunakan integrasi ini. Anda harus melakukan semua perubahan pada resource layanan GKE itu sendiri agar perubahan tersebut diterapkan ke Direktori Layanan.
Sebelum memulai
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
- Anda harus mendaftarkan cluster GKE ke fleet. Untuk mendaftarkan cluster GKE, ikuti petunjuk di Mendaftarkan cluster.
Menyiapkan cluster GKE
Untuk menyiapkan cluster GKE, ikuti langkah-langkah berikut.
- Aktifkan fitur fleet GKE Direktori Layanan.
- Konfigurasi kebijakan pendaftaran Direktori Layanan.
- Deploy layanan GKE.
Mengaktifkan fitur fleet GKE Direktori Layanan
Untuk mengaktifkan fitur fleet GKE Direktori Layanan, jalankan
perintah gcloud container hub.
gcloud
gcloud alpha container hub service-directory enable
Mengonfigurasi kebijakan pendaftaran Direktori Layanan untuk layanan
Kebijakan pendaftaran menentukan jenis layanan dalam GKE yang diimpor secara otomatis oleh Direktori Layanan. Daftar berikut menunjukkan opsi yang dapat dikonfigurasi untuk kebijakan ini:
resources: jenis resource GKE yang diimpor. Anda dapat menentukan beberapa jenis resource. Resource diidentifikasi berdasarkanGroupdanKind. Secara default,Groupadalahcore. HanyaKind: serviceyang tersedia.selector: pemilih label GKE yang cocok dengan label key:value yang diterapkan pada resource GKE. Secara default, tidak ada resource yang dipilih.annotationsToSync: kunci anotasi pada resource yang disinkronkan ke Direktori Layanan. Jika daftar ini kosong, resource akan disinkronkan ke Direktori Layanan tanpa anotasi.
Setiap namespace harus menentukan satu kebijakan. Kebijakan ini harus memiliki name:
"default". Pengontrol tidak mengizinkan atau merekonsiliasi nama lain.
Mengonfigurasi ServiceDirectoryRegistrationPolicy.
Manifes berikut menjelaskan ServiceDirectoryRegistrationPolicy:
apiVersion: networking.gke.io/v1alpha1 kind: ServiceDirectoryRegistrationPolicy metadata: # Only the name "default" is allowed. name: default # The ServiceDirectoryRegistrationPolicy is a namespaced resource namespace: NAMESPACE spec: resources: # Kind specifies the types of Kubernetes resources that can be synced into Service Directory. - kind: Service # Selector is a label selector for the resource types specified in Kind. selector: matchLabels: LABELS # annotationsToSync specifies the annotations that are matched and imported. # Any annotations that do not match this set of keys will not be imported into Service Directory. annotationsToSync: - ANNOTATIONS
Ganti kode berikut:
NAMESPACE: nama namespace. Hanya boleh ada satuServiceDirectoryRegistrationPolicydalam namespace. Jika ada beberapa kebijakan dalam satu namespace, GKE akan memilih satu kebijakan untuk menjadi kebijakan aktif dan menandai kebijakan lainnya sebagai tidak aktif.LABELS: pemilih label, sepertisd-import: "true". Nilai ini berlaku untuk resource yang ditentukan dalam jenis. Secara default, tidak ada resource yang dipilih.ANNOTATIONS: daftar anotasi yang cocok dan diimpor, seperti- cloud.google.com/load-balancer-typeJika resource GKE yang dipilih memiliki salah satu anotasi dalam daftar, anotasi dan nilainya akan disinkronkan ke Direktori Layanan dengan resource. Jika daftar ini kosong, resource akan disinkronkan ke Direktori Layanan tanpa anotasi.
Simpan manifes sebagai registration_policy.yaml.
Menerapkan manifes ke cluster Anda
Untuk menerapkan manifes ke cluster Anda, jalankan perintah kubectl apply -f:
kubectl apply -f registration_policy.yaml
Men-deploy layanan GKE
Deploy layanan dan aplikasi Load Balancer Jaringan passthrough eksternal regional GKE di cluster GKE region Anda, misalnya, jika
region Anda adalah us-central1, deploy di cluster GKE
gke-us-central1.
Tindakan ini akan mengimpor layanan GKE Anda ke Direktori Layanan.
Buat file YAML dan terapkan seperti resource GKE lainnya. Berikut manifes untuk layanan jenis LoadBalancer:
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
labels:
sd-import: "true"
annotations:
cloud.google.com/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: hello
ports:
- name: tcp-port
protocol: TCP
port: 80
targetPort: 8080
Berikut manifes untuk Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: hello
name: hello-app
spec:
replicas: 2
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: hello
ports:
- containerPort: 8080
protocol: TCP
Untuk memverifikasi, jalankan kueri Direktori Layanan untuk layanan Anda menggunakan perintah
gcloud service-directory services resolve:
gcloud
gcloud beta service-directory services resolve SERVICE_NAME \ --location=LOCATION \ --namespace=NAMESPACE
Ganti kode berikut:
SERVICE_NAME: nama atau ID yang sepenuhnya memenuhi syarat untuk layanan, misalnyahello-app-serviceLOCATION: nama region untuk layanan, misalnya,us-central1NAMESPACE: nama namespace untuk layanan, misalnya,default
Output Anda akan menampilkan layanan Anda dan mirip dengan hal berikut:
service:
endpoints:
- address: 10.140.0.5
metadata:
cloud.google.com/load-balancer-type: "Internal"
name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app-service/endpoints/my-cluster-12345
port: 80
network: projects/123456789/locations/global/networks/default
name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app-service
Penagihan
Direktori Layanan tidak mengenakan biaya untuk resource yang dibuat oleh integrasi GKE. Namun, ada biaya untuk panggilan API. Untuk mengetahui detail harga, lihat Harga Direktori Layanan.
Langkah berikutnya
- Untuk mendapatkan ringkasan Direktori Layanan, lihat Ringkasan Direktori Layanan.
- Untuk menemukan solusi atas masalah umum yang mungkin Anda alami saat menggunakan Direktori Layanan, lihat Pemecahan masalah.