Questa pagina fornisce informazioni su come configurare Service Directory con Google Kubernetes Engine (GKE) e registrare automaticamente i cluster GKE con Service Directory. Puoi configurare Service Directory per GKE con cluster GKE Autopilot o cluster GKE Standard. Per informazioni sulle due modalità, consulta Scegliere una modalità operativa GKE.
Per saperne di più su Service Directory per GKE, consulta la panoramica di Service Directory per GKE.
Limitazioni
Service Directory per GKE presenta le seguenti limitazioni:
- Puoi registrare i servizi solo utilizzando l'integrazione Service Directory-GKE. Devi registrare manualmente gli ingress, i gateway e altre risorse utilizzando l'API Service Directory.
- Prima di poter sincronizzare i servizi in questi cluster con Service Directory, devi registrare i cluster GKE utilizzando i parchi risorse. Per informazioni dettagliate su come registrare i cluster GKE, consulta Registrare un cluster.
- Tutte le risorse di Service Directory vengono registrate nel progetto del parco risorse, non nel progetto del cluster.
- Non puoi modificare le entità di Service Directory registrate utilizzando questa integrazione. Devi apportare tutte le modifiche alle risorse del servizio GKE in modo che vengano propagate a Service Directory.
Prima di iniziare
- Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
- Devi registrare il cluster GKE in un parco risorse. Per registrare il cluster GKE, segui le istruzioni riportate in Registrare un cluster.
Configurare il cluster GKE
Per configurare il cluster GKE, segui questi passaggi.
- Abilita la funzionalità del parco risorse GKE di Service Directory.
- Configura la policy di registrazione di Service Directory.
- Esegui il deployment del servizio GKE.
Abilitare la funzionalità del parco risorse GKE di Service Directory
Per abilitare la funzionalità del parco risorse GKE di Service Directory, esegui
il comando gcloud container hub.
gcloud
gcloud alpha container hub service-directory enable
Configurare la policy di registrazione di Service Directory per il servizio
La policy di registrazione definisce i tipi di servizi in GKE che vengono importati automaticamente da Service Directory. L'elenco seguente mostra le opzioni configurabili per questa policy:
resources: il tipo di risorse GKE importate. Puoi specificare più tipi di risorse. Le risorse sono identificate daGroupeKind. Per impostazione predefinita,Groupècore. È disponibile soloKind: service.selector: un selettore di etichette GKE che corrisponde alle etichette key:value applicate alla risorsa GKE. Per impostazione predefinita, non vengono selezionate risorse.annotationsToSync: le chiavi di annotazione della risorsa sincronizzate con Service Directory. Se questo elenco è vuoto, le risorse vengono sincronizzate con Service Directory senza annotazioni.
Ogni spazio dei nomi deve definire una singola policy. Questa policy deve avere name:
"default". Il controller non consente né riconcilia altri nomi.
Configurare un ServiceDirectoryRegistrationPolicy.
Il seguente manifest descrive un 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
Sostituisci quanto segue:
NAMESPACE: il nome dello spazio dei nomi. In uno spazio dei nomi può esistere un soloServiceDirectoryRegistrationPolicy. Se in un singolo spazio dei nomi sono presenti più policy, GKE ne sceglie una come policy attiva e contrassegna le altre come inattive.LABELS: il selettore di etichette, ad esempiosd-import: "true". Questo valore si applica alle risorse specificate nel tipo. Per impostazione predefinita, non vengono selezionate risorse.ANNOTATIONS: un elenco di annotazioni che vengono abbinate e importate, ad esempio- cloud.google.com/load-balancer-type. Se una risorsa GKE selezionata ha una delle annotazioni nell' elenco, l'annotazione e i relativi valori vengono sincronizzati con Service Directory con la risorsa. Se questo elenco è vuoto, le risorse vengono sincronizzate con Service Directory senza annotazioni.
Salva il manifest come registration_policy.yaml.
Applicare il manifest al cluster
Per applicare il manifest al cluster, esegui il comando kubectl apply -f:
kubectl apply -f registration_policy.yaml
Eseguire il deployment del servizio GKE
Esegui il deployment del servizio e dell'applicazione del bilanciatore del carico di rete pass-through esterno regionale GKE nel cluster GKE della tua regione, ad esempio, se
la tua regione è us-central1, esegui il deployment in un cluster GKE
gke-us-central1.
In questo modo, il servizio GKE viene importato in Service Directory.
Crea un file YAML e applicalo come qualsiasi altra risorsa GKE. Ecco un manifest per un servizio di tipo 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
Ecco un manifest per un 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
Per verificare, esegui la query di Service Directory per il tuo servizio utilizzando il
gcloud service-directory services resolve
comando:
gcloud
gcloud beta service-directory services resolve SERVICE_NAME \ --location=LOCATION \ --namespace=NAMESPACE
Sostituisci quanto segue:
SERVICE_NAME: il nome o l'identificatore completo del servizio, ad esempiohello-app-serviceLOCATION: il nome della regione per il servizio, ad esempious-central1NAMESPACE: il nome dello spazio dei nomi per il servizio, ad esempiodefault
L'output mostra il tuo servizio ed è simile al seguente:
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
Fatturazione
Service Directory non addebita costi per le risorse create dall'integrazione GKE. Tuttavia, è previsto un costo per le chiamate API. Per i dettagli sui prezzi, consulta Prezzi di Service Directory.
Passaggi successivi
- Per una panoramica di Service Directory, consulta la panoramica di Service Directory.
- Per trovare soluzioni ai problemi comuni che potresti riscontrare durante l'utilizzo di Service Directory, consulta la sezione Risoluzione dei problemi.