Configura Service Directory per GKE

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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • 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 da Group e Kind. Per impostazione predefinita, il valore di Group è core. È disponibile solo Kind: 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 solo ServiceDirectoryRegistrationPolicy in 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 esempio sd-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 esempio hello-app-service
  • LOCATION: il nome della regione per il servizio, ad esempio us-central1
  • NAMESPACE: il nome dello spazio dei nomi per il servizio, ad esempio default

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