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à, vedi 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 ingress, gateway e altre risorse manualmente 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 Registrazione di un cluster.
- Tutte le risorse Service Directory sono registrate nel progetto del parco risorse, non nel progetto del cluster.
- Non puoi modificare le entità 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 account Google Cloud . 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 workload.
-
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 Registrazione di un cluster.
Configura il cluster GKE
Per configurare il cluster GKE:
- Abilita la funzionalità del parco risorse GKE di Service Directory.
- Configura il criterio di registrazione di Service Directory.
- Esegui il deployment del servizio GKE.
Abilita la funzionalità del parco risorse GKE di Service Directory
Per attivare la funzionalità Service Directory GKE fleet, esegui il comando gcloud container hub.
gcloud
gcloud alpha container hub service-directory enable
Configura la policy di registrazione di Service Directory per il servizio
Il criterio di registrazione definisce i tipi di servizi all'interno di GKE che vengono importati automaticamente da Service Directory. Il seguente elenco mostra le opzioni configurabili per queste norme:
resources: il tipo di risorse GKE importate. Puoi specificare più tipi di risorse. Le risorse sono identificate daGroupeKind. Per impostazione predefinita, il valore diGroupècore. È disponibile soloKind: service.selector: un selettore di etichette GKE che corrisponde alle etichette chiave:valore applicate alla risorsa GKE. Per impostazione predefinita, non vengono selezionate risorse.annotationsToSync: le chiavi di annotazione nella risorsa che vengono 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. Questo criterio deve avere name:
"default". Il Controllore non consente né riconcilia altri nomi.
Configura 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. Può esserci un soloServiceDirectoryRegistrationPolicyin uno spazio dei nomi. Se in un singolo spazio dei nomi sono presenti più criteri, GKE ne sceglie uno da attivare e contrassegna gli altri come inattivi.LABELS: il selettore di etichette, ad esempiosd-import: "true". Questo valore si applica alle risorse specificate in tipo. Per impostazione predefinita, non vengono selezionate risorse.ANNOTATIONS: un elenco di annotazioni corrispondenti 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.
Applica il manifest al cluster
Per applicare il manifest al cluster, esegui il comando kubectl apply -f:
kubectl apply -f registration_policy.yaml
Esegui il deployment del servizio GKE
Esegui il deployment del servizio di bilanciamento del carico di rete passthrough esterno GKE e dell'applicazione 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 Service Directory per il tuo servizio utilizzando il comando
gcloud service-directory services resolve:
gcloud
gcloud beta service-directory services resolve SERVICE_NAME \ --location=LOCATION \ --namespace=NAMESPACE
Sostituisci quanto segue:
SERVICE_NAME: il nome o l'identificatore completo per il 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 alcun costo per le risorse create dall'integrazione di GKE. Tuttavia, le chiamate API sono a pagamento. Per informazioni dettagliate sui prezzi, consulta la sezione 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 pagina Risoluzione dei problemi.