Service Directory per Google Kubernetes Engine (GKE) fornisce una singola visualizzazione di tutti i servizi in tutti i tuoi deployment GKE e non solo. Puoi aggiungere vari tipi di servizi GKE, annotarli e poi visualizzarli in Service Directory.
Service Directory per GKE offre le seguenti funzionalità:
- Consente di scoprire i servizi tramite gRPC e HTTP e di risolverli tramite DNS utilizzando le zone DNS di Service Directory. L'integrazione di Service Directory e Cloud DNS ti consente di configurare una zona DNS di Service Directory.
- Service Directory registra i servizi al di fuori di GKE, consentendo ai servizi GKE e non GKE di scoprirsi facilmente a vicenda.
- Service Directory applica i controlli delle autorizzazioni IAM e dei Controlli di servizio VPC per garantire la corretta sicurezza e privacy dei dati dei clienti.
- 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 scoprire come configurare Service Directory per registrare automaticamente i tuoi servizi GKE con Service Directory, consulta Configurazione di Service Directory per GKE.
Mappatura dei servizi
Quando registri un servizio con Service Directory, viene creato un servizio nel progetto Google Cloud fleet utilizzando il nome dello spazio dei nomi Kubernetes e la regione del cluster GKE. La tabella seguente descrive come vengono mappate le proprietà del servizio GKE alle proprietà del servizio creato in Service Directory per tutti i tipi di servizio GKE.
Proprietà di primo livello
| Proprietà Service Directory | Proprietà GKE |
| Progetto | Progetto del parco risorse |
| Regione | Regione del cluster |
| Spazio dei nomi | Spazio dei nomi Kubernetes |
LoadBalancer tipo di servizio
Il seguente esempio mostra come un servizio GKE LoadBalancer viene mappato a Service Directory. Il servizio Service Directory esiste in uno
spazio dei nomi con lo stesso nome dello spazio dei nomi Kubernetes nel
progetto fleet e nella regione del cluster GKE.
| Proprietà Service Directory | Proprietà GKE |
| Nome servizio | Nome servizio |
| Nome endpoint | Generato automaticamente dal controller Service Directory |
| Indirizzo IP endpoint | Ingress LoadBalancer |
| Porta endpoint | Porta di servizio LoadBalancer |
| Rete di endpoint | Rete VPC del cluster |
Di seguito è riportato un esempio di servizio LoadBalancer GKE:
apiVersion: v1 kind: Service metadata: name: hello-app annotations: cloud.google.com/load-balancer-type: "Internal" labels: app: hello-app sd-import: "true" spec: ports: - port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: LoadBalancer status: loadBalancer: ingress: - ip: 10.140.0.5
Di seguito è riportato un esempio di servizio Service Directory:
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/endpoints/gke-hello-cluster-12345 port: 80 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
NodePort tipo di servizio
L'esempio seguente mostra come un servizio NodePort GKE viene mappato a Service Directory. Il servizio Service Directory esiste in uno spazio dei nomi con lo stesso nome dello spazio dei nomi Kubernetes nel progetto dell'hub e nella regione del cluster GKE.
| Proprietà Service Directory | Proprietà GKE |
| Nome servizio | Nome servizio |
| Nome endpoint | Generato automaticamente dal controller Service Directory |
| Indirizzo IP endpoint | Indirizzo IP interno del nodo per ogni nodo che esegue un pod per il servizio |
| Porta endpoint | Porta nodo statico |
| Rete di endpoint | Rete VPC del cluster |
Di seguito è riportato un esempio di servizio NodePort GKE:
apiVersion: v1 kind: Service metadata: name: hello-app annotations: key1: "value1" spec: ports: - nodePort: 30007 port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: NodePort
Di seguito è riportato un esempio di nodi GKE:
apiVersion: v1 items: - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-d2rr status: addresses: - address: 10.142.0.27 type: InternalIP - address: 34.73.248.170 - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-kb38 status: addresses: - address: 10.142.0.29 type: InternalIP - address: 35.196.219.215 type: ExternalIP - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-x34q status: addresses: - address: 10.142.0.28 type: InternalIP - address: 34.75.202.26 type: ExternalIP
Di seguito è riportato un esempio di servizio Service Directory:
service: endpoints: - address: 10.142.0.27 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345 port: 30007 network: projects/my-project/locations/global/networks/default - address: 10.142.0.28 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-23456 port: 30007 network: projects/my-project/locations/global/networks/default - address: 10.142.0.29 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-34567 port: 30007 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
Servizio ClusterIP
Il seguente esempio mostra come un servizio GKE ClusterIP viene mappato a Service Directory. Il servizio Service Directory esiste in uno spazio dei nomi con lo stesso nome dello spazio dei nomi Kubernetes nel progetto fleet e nella regione del cluster GKE.
| Proprietà Service Directory | Proprietà GKE |
| Nome servizio | Nome servizio |
| Nome endpoint | Generato automaticamente dal controller Service Directory |
| Indirizzo IP endpoint | ClusterIP |
| Porta endpoint | Porta di servizio |
| Rete di endpoint | Rete VPC del cluster |
Di seguito è riportato un esempio di servizio ClusterIP GKE:
apiVersion: v1 kind: Service metadata: name: hello-app annotations: key1: "value1" labels: app: hello-app sd-import: "true" spec: clusterIP: 10.15.254.17 ports: - port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: ClusterIP
Di seguito è riportato un esempio di servizio Service Directory:
service: endpoints: - address: 10.15.254.17 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345 port: 80 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
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.