Auf dieser Seite erfahren Sie, wie Sie Service Directory mit Google Kubernetes Engine (GKE) konfigurieren und Ihre GKE-Cluster automatisch bei Service Directory registrieren. Sie können Service Directory für GKE mit Autopilot-GKE-Clustern oder Standard-GKE-Clustern konfigurieren. Informationen zu den beiden Modi finden Sie unter GKE-Betriebsmodus auswählen.
Weitere Informationen zu Service Directory für GKE finden Sie unter Service Directory für GKE.
Beschränkungen
Für Service Directory für GKE gelten die folgenden Einschränkungen:
- Sie können Dienste nur über die Service Directory-GKE-Integration registrieren. Sie müssen Ingresses, Gateways und andere Ressourcen manuell mit der Service Directory API registrieren.
- Sie müssen Ihre GKE-Cluster mit Flotten registrieren, bevor Sie Dienste in diesen Clustern mit Service Directory synchronisieren können. Weitere Informationen zum Registrieren Ihrer GKE-Cluster finden Sie unter Cluster registrieren.
- Alle Service Directory-Ressourcen werden im Flottenprojekt und nicht im Projekt des Clusters registriert.
- Sie können die mit dieser Integration registrierten Service Directory-Entitäten nicht ändern. Sie müssen alle Änderungen an den GKE-Dienstressourcen selbst vornehmen, damit sie an Service Directory weitergegeben werden.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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.
- Sie müssen Ihren GKE-Cluster in einer Flotte registrieren. Folgen Sie der Anleitung unter Cluster registrieren, um Ihren GKE-Cluster zu registrieren.
GKE-Cluster einrichten
So richten Sie den GKE-Cluster ein:
- Aktivieren Sie das Service Directory-Flottenfeature für GKE.
- Konfigurieren Sie die Service Directory-Registrierungsrichtlinie.
- GKE-Dienst bereitstellen
Service Directory-GKE-Flottenfeature aktivieren
Führen Sie den Befehl gcloud container hub aus, um die Funktion „Service Directory GKE-Flotte“ zu aktivieren.
gcloud
gcloud alpha container hub service-directory enable
Service Directory-Registrierungsrichtlinie für den Dienst konfigurieren
Die Registrierungsrichtlinie definiert, welche Arten von Diensten in GKE automatisch von Service Directory importiert werden. In der folgenden Liste sind die konfigurierbaren Optionen für diese Richtlinie aufgeführt:
resources: Der Typ der GKE-Ressourcen, die importiert werden. Sie können mehrere Ressourcentypen angeben. Ressourcen werden durchGroupundKindidentifiziert.Groupist standardmäßig aufcoregesetzt. NurKind: serviceist verfügbar.selector: Ein GKE-Labelselektor, der mit Schlüssel:Wert-Labels übereinstimmt, die auf die GKE-Ressource angewendet werden. Standardmäßig sind keine Ressourcen ausgewählt.annotationsToSync: Die Annotationsschlüssel für die Ressource, die mit Service Directory synchronisiert werden. Wenn diese Liste leer ist, werden Ressourcen ohne Anmerkungen mit Service Directory synchronisiert.
In jedem Namespace sollte eine einzelne Richtlinie definiert werden. Diese Richtlinie muss name:
"default" enthalten. Der Controller lässt keine anderen Namen zu und gleicht sie auch nicht ab.
Konfigurieren Sie eine ServiceDirectoryRegistrationPolicy.
Das folgende Manifest beschreibt eine 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
Ersetzen Sie Folgendes:
NAMESPACE: der Name des Namespace. Es kann nur einServiceDirectoryRegistrationPolicyin einem Namespace geben. Wenn es mehrere Richtlinien in einem einzelnen Namespace gibt, wählt GKE eine Richtlinie als aktive Richtlinie aus und markiert die anderen als inaktiv.LABELS: die Labelauswahl, z. B.sd-import: "true". Dieser Wert gilt für Ressourcen, die nach Art angegeben werden. Standardmäßig sind keine Ressourcen ausgewählt.ANNOTATIONS: Eine Liste der Annotationen, die abgeglichen und importiert werden, z. B.- cloud.google.com/load-balancer-type. Wenn eine ausgewählte GKE-Ressource eine der Annotationen in der Liste hat, werden die Annotation und ihre Werte mit der Ressource mit Service Directory synchronisiert. Wenn diese Liste leer ist, werden Ressourcen ohne Anmerkungen mit Service Directory synchronisiert.
Speichern Sie das Manifest als registration_policy.yaml:
Wenden Sie das Manifest auf Ihren Cluster an:
Führen Sie den Befehl kubectl apply -f aus, um das Manifest auf Ihren Cluster anzuwenden:
kubectl apply -f registration_policy.yaml
GKE-Dienst bereitstellen
Stellen Sie den GKE-Dienst für externe Passthrough-Network-Load-Balancer und die Anwendung im GKE-Cluster Ihrer Region bereit. Wenn Ihre Region beispielsweise us-central1 ist, stellen Sie sie in einem GKE-Cluster gke-us-central1 bereit.
Dadurch wird Ihr GKE-Dienst in Service Directory importiert.
Erstellen Sie eine YAML-Datei und wenden Sie sie wie jede andere GKE-Ressource an. Hier ist ein Manifest für einen Dienst vom Typ 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
Dies ist ein Manifest für einen 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
Führen Sie zur Überprüfung die Service Directory-Abfrage für Ihren Dienst mit dem Befehl gcloud service-directory services resolve aus:
gcloud
gcloud beta service-directory services resolve SERVICE_NAME \ --location=LOCATION \ --namespace=NAMESPACE
Ersetzen Sie Folgendes:
SERVICE_NAME: Der Name oder die vollständig qualifizierte Kennung für den Dienst, z. B.hello-app-serviceLOCATION: Der Name der Region für den Dienst, z. B.us-central1NAMESPACE: der Name des Namespace für den Dienst, z. B.default
Ihre Ausgabe enthält Ihren Dienst und sieht in etwa so aus:
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
Abrechnung
Für Ressourcen, die durch die GKE-Integration erstellt werden, fallen in Service Directory keine Gebühren an. Für die API-Aufrufe fallen jedoch Gebühren an. Preisinformationen finden Sie unter Service Directory – Preise.
Nächste Schritte
- Eine Übersicht über Service Directory finden Sie in der Übersicht zu Service Directory.
- Informationen zu Lösungen für häufige Probleme, die bei der Verwendung von Service Directory auftreten können, finden Sie unter Fehlerbehebung.