Umgebungsvariablen festlegen

Hier erfahren Sie, wie Sie Umgebungsvariablen in der Bereitstellung mit Knative erstellen und verwenden.

Wenn Sie Umgebungsvariablen festlegen, werden diese in den Container eingefügt und sind für Ihren Code aufrufbar. Umgebungsvariablen werden als Schlüssel/Wert-Paare festgelegt. Angenommen, Sie führen einen Dienst aus, der ein zusätzliches Logging ermöglicht, wenn LOGGING_VERBOSE: true in der Umgebung gelesen wird. In diesem Szenario legen Sie das Schlüssel/Wert-Paar für die Umgebungsvariable auf LOGGING_VERBOSE=true fest. In den folgenden Abschnitten sind die genauen Befehle oder die jeweilige UI aufgeführt.

Reservierte Namen

Die im Containerlaufzeitvertrag definierten Umgebungsvariablen sind reserviert. Sie können nicht festgelegt werden. Insbesondere wird die Umgebungsvariable PORT bei der Bereitstellung von Knative in den Container eingefügt. Sie sollten die Variable nicht selbst festlegen.

Umgebungsvariablen für einen Dienst festlegen

Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.

Sie können Umgebungsvariablen mit der Google Cloud Console, der Google Cloud CLI oder einer YAML-Datei festlegen, wenn Sie einen neuen Dienst bereitstellen oder einen vorhandenen Dienst aktualisieren und eine Überarbeitung bereitstellen:

Console

  1. Rufen Sie in der Google Cloud Console die Knative-Bereitstellung auf:

    Zur Knative-Bereitstellung

  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. Gehen Sie dazu so vor:

    • Wenn Sie eine Variable hinzufügen, klicken Sie auf Variable hinzufügen. Dann geben Sie den gewünschten Namen für die Variable und ihren Wert in den Textfeldern Name und Wert an.
    • Falls Sie einen Wert für eine Variable ändern möchten, ersetzen Sie den aktuellen Wert im Textfeld Wert durch den gewünschten neuen Wert.
    • Möchten Sie eine oder mehrere Umgebungsvariablen entfernen, bewegen Sie den Cursor links neben das Textfeld Wert der Variablen, die Sie entfernen möchten. Daraufhin wird das Papierkorbsymbol angezeigt. Klicken Sie darauf.

  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 für Knative bereitzustellen, und warten Sie, bis die Bereitstellung abgeschlossen ist.

Befehlszeile

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

  • Aktualisieren Sie bei vorhandenen Diensten die Umgebungsvariablen, indem Sie den Befehl gcloud run services update mit einem der folgenden Parameter ausführen:

    Beispiel:

    gcloud run services update SERVICE --update-env-vars 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 Umgebungsvariable. Geben Sie für KEY den Namen der Umgebungsvariablen und für VALUE den Wert dieser Umgebungsvariable an. So legen Sie mehrere Parameter fest.
    • Optionen für Befehlsparameter

      • Um eine Umgebungsvariable anzugeben, die ein Komma (,) enthält, müssen Sie jedes KEY=VALUE-Wertepaar mit einem Trennzeichen maskieren. Verwenden Sie beipielsweise @:
        --set-env-vars "^@^KEY1=value,with,commas@KEY2=anothervalue@KEY3..."
        
      • Wenn Sie mehrere Gruppen von Schlüssel/Wert-Paaren angeben möchten, können Sie mehrere Parameter angeben, um die Lesbarkeit zu verbessern. Beispiel:
        [...]
        --set-env-vars "KEY=VALUE1" \
        --set-env-vars "KEY=VALUE2" \
        --set-env-vars "KEY=VALUE3"
        
  • Legen Sie für neue Dienste die Umgebungsvariablen fest, indem Sie den Befehl gcloud run deploy mit dem Parameter --set-env-vars ausführen:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-env-vars 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 Umgebungsvariable. Geben Sie für KEY den Namen der Umgebungsvariablen und für VALUE den Wert dieser Umgebungsvariable an. So legen Sie mehrere Parameter fest.
    • Optionen für Befehlsparameter

      • Um eine Umgebungsvariable anzugeben, die ein Komma (,) enthält, müssen Sie jedes KEY=VALUE-Wertepaar mit einem Trennzeichen maskieren. Verwenden Sie beipielsweise @:
        --set-env-vars "^@^KEY1=value,with,commas@KEY2=anothervalue@KEY3..."
        
      • Wenn Sie mehrere Gruppen von Schlüssel/Wert-Paaren angeben möchten, können Sie mehrere Parameter angeben, um die Lesbarkeit zu verbessern. Beispiel:
        [...]
        --set-env-vars "KEY=VALUE1" \
        --set-env-vars "KEY=VALUE2" \
        --set-env-vars "KEY=VALUE3"
        

YAML

Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen – mit dem gcloud run services describe-Befehl mithilfe des Flags --format=export. Sie können diese YAML-Datei dann ändern und diese Änderungen mit dem Befehl gcloud run services replace bereitstellen. Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.

  1. Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen service.yaml im lokalen Arbeitsbereich herunter:

    gcloud run services describe SERVICE --format export > service.yaml

    Ersetzen Sie SERVICE durch den Namen Ihres Knative-Bereitstellungsdienstes.

  2. Aktualisieren Sie in Ihrer lokalen Datei die Attribute name und value unter dem Attribut env unterhalb von containers::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - env:
            - name: KEY-1
              value: VALUE-1
            - name: KEY-N
              value: VALUE-N

    Ersetzen Sie

    • SERVICE durch den Namen Ihres Knative-Bereitstellungsdienstes
    • KEY-1, VALUE-1 durch die Umgebungsvariable und den Wert. Fügen Sie bei Bedarf weitere Variablen und Werte hinzu.
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Standardumgebungsvariablen im Container festlegen

Sie können die ENV-Anweisung in einer Dockerfile verwenden, um Standardwerte für Umgebungsvariablen festzulegen:

ENV KEY1=VALUE1,KEY2=VALUE2

Reihenfolge der Priorität: Containervariablen vs. Dienstvariablen

Wenn Sie im Container eine Standard-Umgebungsvariable und für den Knative-Bereitstellungsdienst auch eine Umgebungsvariable mit demselben Namen festlegen, hat der für den Dienst festgelegte Wert Vorrang.

Damit Sie die Kubernetes-Dienst-Links verwenden können, müssen Sie die Unterstützung manuell aktivieren. Aufgrund der Leistungsprobleme in Namespaces mit Tausenden von Diensten und Überarbeitungen wurden Links zu Kubernetes-Diensten ab Januar 2021 standardmäßig deaktiviert.

Führen Sie zum Aktivieren von Links zu Kubernetes-Diensten den folgenden Befehl aus, um data.enable-service-links in der ConfigMap knative-serving/config-defaults auf true festzulegen:

kubectl patch cm -n knative-serving config-defaults -p '{"data":{"enable-service-links":"true"}}