ConfigMaps verwenden

Erfahren Sie, wie Sie eine ConfigMap erstellen und Ihre Knative Serving-Dienste und ‑Revisionen für diese ConfigMap konfigurieren.

Ein häufiger Anwendungsfall für einen Dienst ist die Verwendung von ConfigMaps, um Anwendungscode von der Konfiguration zu trennen. ConfigMap ähnelt Secret, mit der Ausnahme, dass Sie ein Secret für vertrauliche Informationen und eine ConfigMap zum Speichern nicht vertraulicher Daten wie Verbindungsstrings, öffentlicher Anmeldedaten, Hostnamen und URLs verwenden. Weitere Informationen zur Verwendung von ConfigMaps finden Sie in der Google Kubernetes Engine-Dokumentation.

Wenn Sie Container für den Zugriff auf ConfigMaps aktivieren, können Sie eine der folgenden Optionen auswählen:

  • Stellen Sie die ConfigMap als Volume bereit, wobei ConfigMap-Einträge als Dateien im bereitgestellten Volume verfügbar sind. Dies wird empfohlen, da dadurch sichergestellt wird, dass Sie die neueste Version der ConfigMap erhalten, wenn Sie sie lesen.
  • Übergeben Sie die ConfigMap mithilfe von Umgebungsvariablen.

ConfigMap erstellen

Es gibt mehrere Möglichkeiten, eine ConfigMap zu erstellen, wie auf der Seite ConfigMaps in der GKE-Dokumentation beschrieben. Die folgende Anleitung zeigt eine einfache Möglichkeit, eine ConfigMap zu erstellen.

Wenn Sie eine ConfigMap erstellen, achten Sie darauf, dass diese im selben Namespace erstellt wird wie der Cluster, in dem der Knative Serving-Dienst ausgeführt wird. In dieser Anleitung wird der Namespace default verwendet.

Sie können eine ConfigMap über die Befehlszeile erstellen:

kubectl create configmap NAME DATA

Ersetzen Sie:

  • NAME ist der Name Ihres ConfigMap-Objekts.
  • Für DATA haben Sie folgende Möglichkeiten:

    • Das Flag --from-file und der Pfad für jedes Verzeichnis, das eine oder mehrere Konfigurationsdateien enthält.
    • Das Flag --from-literal für jedes Schlüssel/Wert-Paar, das Sie der ConfigMap hinzufügen möchten.

Beispiel:

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

Die ConfigMap wird dort erstellt und hochgeladen, wo sie für Cluster im Namespace default verfügbar ist.

ConfigMap für einen Dienst bereitstellen

Nachdem Sie eine ConfigMap erstellt haben, können Sie diese für Ihren Knative Serving-Dienst entweder als Volume oder als Umgebungsvariable mithilfe der Google Cloud Console oder der Google Cloud CLI zur Verfügung stellen, wenn Sie einen neuen Dienst bereitstellen oder einen vorhandenen Dienst aktualisieren und eine Überarbeitung bereitstellen:

Console

  1. Rufen Sie in der Google Cloud Console Knative Serving auf:

    Zu Knative Serving

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Klicken Sie unter Erweiterte Einstellungen auf Variablen und Secrets.

  4. Wählen Sie unter Referenz auf eine ConfigMap die gewünschte ConfigMap aus dem Drop-down-Menü aus.

    • Wählen Sie im Drop-down-Menü Referenzmethode aus, wie Sie Ihre ConfigMap als Volume verwenden oder als Umgebungsvariablen bereitstellen möchten.
    • Wenn Sie Mount als Volume verwenden, geben Sie den Pfad an und klicken Sie auf Fertig.
    • Wenn Sie die Bereitstellung als Umgebungsvariablen verwenden:
      1. Geben Sie den Namen der Variable an und wählen Sie im Drop-down-Menü Schlüssel den entsprechenden ConfigMap-Wert aus.
      2. Klicken Sie auf Hinzufügen, um einen weiteren ConfigMap-Wert hinzuzufügen.
      3. Geben Sie den Namen der Variable an und wählen Sie im Drop-down-Menü Schlüssel den entsprechenden ConfigMap-Wert aus.
      4. Klicken Sie auf Fertig.

  5. Klicken Sie auf Weiter, um mit dem nächsten Abschnitt fortzufahren.

  6. Wählen Sie im Abschnitt Konfigurieren, wie dieser Dienst ausgelöst wird die Verbindung aus, die Sie zum Auslösen des Dienstes verwenden möchten.

  7. Klicken Sie auf Erstellen, um das Image in Knative Serving bereitzustellen. Warten Sie, bis die Bereitstellung abgeschlossen ist.

Befehlszeile

Sie können die Google Cloud CLI verwenden, um ConfigMaps für neue Dienste festzulegen oder vorhandene Dienste zu aktualisieren:

  • Aktualisieren Sie für vorhandene Dienste eine ConfigMap, indem Sie den Befehl gcloud run services update mit einem der folgenden Parameter ausführen:

    Beispiel:

    gcloud run services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2

    Ersetzen Sie:

    • SERVICE durch den Namen des Dienstes.
    • KEY1=VALUE1,KEY2=VALUE2 durch eine durch Kommas getrennte Liste von Name und Wertpaaren für jede ConfigMap. Sie können für jeden KEY einen Bereitstellungspfad oder eine Umgebungsvariable angeben. Geben Sie einen Bereitstellungspfad an, indem Sie mit einem Schrägstrich / beginnen. Alle anderen Schlüssel entsprechen Umgebungsvariablen. Geben Sie für jeden VALUE den Namen der ConfigMap an. So legen Sie mehrere Parameter fest.
    • Optionen für Befehlsparameter

      Wenn Sie mehrere Gruppen von Schlüssel/Wert-Paaren angeben möchten, können Sie mehrere Parameter angeben, um die Lesbarkeit zu verbessern. Beispiel:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"
  • Legen Sie für neue Dienste die ConfigMap fest, indem Sie den Befehl gcloud run deploy mit dem Parameter --set-config-maps ausführen:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-config-maps KEY1=VALUE1,KEY2=VALUE2

    Ersetzen Sie:

    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. gcr.io/cloudrun/hello.
    • SERVICE durch den Namen des Dienstes.
    • KEY1=VALUE1,KEY2=VALUE2 durch eine durch Kommas getrennte Liste von Name und Wertpaaren für jede ConfigMap. Sie können für jeden KEY einen Bereitstellungspfad oder eine Umgebungsvariable angeben. Geben Sie einen Bereitstellungspfad an, indem Sie mit einem Schrägstrich / beginnen. Alle anderen Schlüssel entsprechen Umgebungsvariablen. Geben Sie für jeden VALUE den Namen der ConfigMap an. So legen Sie mehrere Parameter fest.
    • Optionen für Befehlsparameter

      Wenn Sie mehrere Gruppen von Schlüssel/Wert-Paaren angeben möchten, können Sie mehrere Parameter angeben, um die Lesbarkeit zu verbessern. Beispiel:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"