Kubernetes-Anwendungen in Nicht-Google Kubernetes Engine-Clustern (GKE) bereitstellen

Wenn Sie eine Kubernetes-Anwendung für Clusterkonfigurationen bereitstellen möchten, die nicht von Google Kubernetes Engine (GKE) sind, z. B. einen Anthos-Cluster, auf dem Anthos clusters on VMware ausgeführt wird, oder einen Cluster, der Istio ausführt, müssen Sie gegebenenfalls wie in diesem Abschnitt beschrieben vorgehen.

Abhängig von der Anwendung, die Sie bereitstellen, sind möglicherweise weitere Schritte erforderlich, um die Anwendung in Ihrem Cluster auszuführen. Informationen zum Konfigurieren der Anwendung finden Sie in der Dokumentation des Anwendungsanbieters.

Zu Anthos-Anwendungen im Cloud Marketplace

Deployment für Cluster, auf denen Istio ausgeführt wird

In Clustern, auf denen Istio ausgeführt wird, werden externe Verbindungen zu Drittanbieterdiensten (z. B. Repositories für Betriebssystempakete) standardmäßig blockiert. Sie müssen den ausgehenden Traffic von Istio konfigurieren, um den Zugriff auf externe Dienste zu ermöglichen.

In Anthos clusters on VMware bereitstellen

Sie können Anthos clusters on VMware-Cluster nur in Cloud Marketplace-Anwendungen bereitstellen, die diese Konfiguration unterstützen. Wenn Sie prüfen möchten, ob eine Anwendung Anthos clusters on VMware unterstützt, öffnen Sie die Cloud Marketplace-Liste der Anwendung und suchen Sie die folgende Anweisung in der Übersicht: „Die Anwendung unterstützt die GKE On-Prem-Bereitstellung“.

Wenn die Anwendung Anthos-Cluster auf VMware unterstützt, führen Sie die folgenden Aufgaben aus, bevor Sie die Anwendung bereitstellen:

Wenn Sie diese Aufgaben abgeschlossen haben, öffnen Sie den Cloud Marketplace-Eintrag der Anwendung und führen die Schritte zum Bereitstellen der Anwendung aus.

Netzwerkzugriff auf die Container Registry einrichten

Damit die Container-Images für die Anwendung heruntergeladen werden können, muss Ihr Cluster Netzwerkzugriff auf die Container Registry haben. Ihr Cluster-Host muss in der Lage sein, marketplace.gcr.io zu pingen. Für die Aktivierung des Zugriffs müssen Sie möglicherweise einen oder mehrere dieser Schritte ausführen:

Docker-Authentifizierung für den Zugriff auf die Container Registry einrichten

Damit Ihre Anthos clusters on VMware-Cluster Zugriff auf Anwendungs-Images in Container Registry erhalten, müssen Sie einen Google Cloud-Dienstkontoschlüssel erstellen und den Namespace der Anwendung mit dem Schlüssel annotieren. Der Schlüssel wird dann beim Deployment der Anwendung als imagePullSecretauf das standardmäßige Kubernetes-Dienstkonto (KSA) des Namespaces gepatcht.

Wenn Sie zum ersten Mal eine Anwendung in einem Anthos clusters on VMware-Cluster bereitstellen, müssen Sie auch einen Namespace mit dem Namen application-system für Cloud Marketplace-Komponenten erstellen und ein imagePullSecret auf das Standarddienstkonto für den Namespace anwenden.

Zum Einrichten der Authentifizierung für die Container Registry führen Sie folgende Schritte aus:

  1. Erstellen Sie ein neues Google Cloud-Dienstkonto. Sie müssen dem Dienstkonto keine Rollen zuweisen.

    Eine schrittweise Anleitung zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen und verwalten.

  2. Erstellen Sie einen Schlüssel für das Dienstkonto und laden Sie ihn als JSON-Datei herunter. Eine schrittweise Anleitung zum Erstellen und Herunterladen des Schlüssels finden Sie unter Dienstkontoschlüssel erstellen.

  3. Laden Sie ggf. den JSON-Schlüssel auf die Workstation hoch, mit der Sie eine Verbindung zu Ihrem Anthos clusters on VMware-Cluster herstellen.

  4. Wenn Sie zum ersten Mal eine Anwendung aus Cloud Marketplace bereitstellen, führen Sie die folgenden Schritte aus, um Ihren Namespace application-system mit einem Secret für den Zugriff auf die Container Registry einzurichten. Wenn Sie den Namespace bereits eingerichtet haben, überspringen Sie diesen Schritt.

    1. Erstellen Sie einen application-system-Namespace in Ihrem Cluster.

    2. Erstellen Sie mit dem folgenden Befehl das Secret, das eine imagePullSecret für application-system enthält:

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace="application-system" \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat $JSON_KEY_FILENAME)"
      
    3. Wenden Sie dieses imagePullSecret mit dem folgenden Befehl auf das Standard-ServiceAccount im Namespace application-system an:

      kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
      
  5. Für jeden Namespace, für den Sie eine Anwendung bereitstellen möchten, müssen Sie ein neues Kubernetes-Secret erstellen und den Namespace mit dem Secret versehen. Ein Secret aus einem anderen Namespace kann nicht wiederverwendet werden.

    1. Erstellen Sie ein Kubernetes-Secret, um mit dem Google Cloud-Dienstkontoschlüssel auf die Container Registry zuzugreifen:

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace=$NAMESPACE_NAME \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat ~/$JSON_KEY_FILENAME)"
      

      Dabei ist $NAMESPACE_NAME der Namespace, den Sie für die Anwendung verwenden möchten.

    2. Annotieren Sie den Namespace der Anwendung mit diesem Befehl:

      kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
      

      Verwenden Sie diesen Namespace, wenn Sie die Anwendung über den Cloud Marketplace bereitstellen. Dies wird unter Kubernetes-Anwendung bereitstellen beschrieben.