Service Directory für GKE konfigurieren

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 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.

  • 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 durch Group und Kind identifiziert. Group ist standardmäßig auf core gesetzt. Nur Kind: service ist 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 ein ServiceDirectoryRegistrationPolicy in 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-service
  • LOCATION: Der Name der Region für den Dienst, z. B. us-central1
  • NAMESPACE: 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.