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.
- Das Flag
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
Rufen Sie in der Google Cloud Console Knative Serving auf:
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.
Klicken Sie unter Erweiterte Einstellungen auf Variablen und Secrets.
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:
- Geben Sie den Namen der Variable an und wählen Sie im Drop-down-Menü Schlüssel den entsprechenden ConfigMap-Wert aus.
- Klicken Sie auf Hinzufügen, um einen weiteren ConfigMap-Wert hinzuzufügen.
- Geben Sie den Namen der Variable an und wählen Sie im Drop-down-Menü Schlüssel den entsprechenden ConfigMap-Wert aus.
- Klicken Sie auf Fertig.
Klicken Sie auf Weiter, um mit dem nächsten Abschnitt fortzufahren.
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.
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"
- IMAGE_URL durch einen Verweis auf das Container-Image, z. B.