Kubernetes-Anwendungen in Nicht-GKE-Clustern bereitstellen

Wenn Sie eine Kubernetes-Anwendung für Nicht-GKE-Clusterkonfigurationen bereitstellen möchten, z. B. einen Anthos-Cluster, auf dem GKE On-Prem ausgeführt wird, oder wenn ein Cluster Istio ausführt, müssen Sie gegebenenfalls die Schritte in diesem Abschnitt ausführen.

Abhängig von der Anwendung, die Sie errichten, 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.

Deployment für GKE On-Prem

Sie können GKE On-Prem-Cluster nur in Cloud Marketplace-Anwendungen bereitstellen, die diese Konfiguration unterstützen. Wenn Sie prüfen möchten, ob eine Anwendung GKE On-Prem 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".

Nachdem Sie sichergestellt haben, dass die Anwendung GKE On-Prem unterstützt, müssen Sie die folgenden Aufgaben ausführen, 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 Ihr GKE On-Prem-Cluster Zugriff auf Anwendungsimages in Container Registry hat, müssen Sie einen Google Cloud-Dienstkontoschlüssel erstellen und den Namespace der Anwendung mit dem Schlüssel annotieren. Der Schlüssel wird dann bei der Bereitstellung der Anwendung als imagePullSecret auf das standardmäßige Kubernetes-Dienstkonto (KSA) des Namespaces gepatcht.

Wenn Sie zum ersten Mal eine Anwendung in einem GKE On-Prem-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 anwenden für Namespace.

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 GKE On-Prem-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.