Secrets verwenden

Erfahren Sie, wie Sie ein Secret erstellen und Ihre Knative-Bereitstellungsdienste und -Überarbeitungen so konfigurieren, dass sie dieses Secret verwenden.

Ein häufiger Anwendungsfall für einen Dienst ist der Zugriff auf Anwendungen von Drittanbietern über Nutzernamen und Passwörter. Für Google Kubernetes Engine empfiehlt es sich, diese vertraulichen Informationen in einem Secret-Objekt von Kubernetes zu speichern.

Um Ihren Containern Zugriff auf Secrets zu gewähren, können Sie jedes Secret als Volume bereitstellen. Dadurch werden die Einträge im Secret als Dateien für den Container verfügbar. Sie sollten Ihr Secret bereitstellen, um dafür zu sorgen, dass Sie beim Lesen die neueste Version jedes Secrets erhalten.

Sie können ein Secret auch mit Umgebungsvariablen übergeben.

Secret erstellen

Die folgenden Schritte zeigen lediglich, wie ein Secret erstellt wird, aber es gibt mehrere Möglichkeiten, ein Secret zu erstellen. Dies wird im Thema Secret erläutert.

Achten Sie beim Erstellen eines Secret darauf, dass Sie es im selben Namespace erstellen wie den Cluster, auf dem Ihr Knative Serving-Dienst ausgeführt wird. In dieser Anleitung wird der Namespace default verwendet.

So erstellen Sie ein Secret im Namespace default Ihres Clusters:

  • Erstellen Sie mithilfe einer Datei ein Secret:

    echo -n 'devuser' > ./username.txt
    echo -n 'S!B\*d$zDsb' > ./password.txt
    kubectl create secret generic user-creds --from-file=./username.txt --from-file=./password.txt
    
  • Erstellen Sie ein Secret nur mit einem kubectl-Befehl:

    kubectl create secret generic user-creds --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb'
    

Secret für einen Dienst bereitstellen

Sie können Secrets mit der Google Cloud Console oder mit Befehlszeilentools zuordnen, wenn Sie einen neuen Dienst bereitstellen oder einen vorhandenen Dienst aktualisieren und die Ü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 Secret-Referenz das gewünschte Secret aus dem Drop-down-Menü aus.

    • Wählen Sie im Drop-down-Menü Referenzmethode aus, wie Sie Ihr Secret verwenden möchten: als Volume oder als Umgebungsvariablen bereitstellen.
    • Wenn Sie die Bereitstellung als Volume verwenden, geben Sie den Pfad an und klicken Sie auf Fertig.
    • Wenn Sie das Secret als Umgebungsvariable bereitstellen:
      1. Geben Sie den Namen der Variable an und wählen Sie im Drop-down-Menü Schlüssel den entsprechenden Secret-Wert aus.
      2. Klicken Sie auf Hinzufügen, um einen weiteren Secret-Wert hinzuzufügen.
      3. Geben Sie den Namen der Variable an und wählen Sie im Drop-down-Menü Schlüssel den entsprechenden Secret-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.

gcloud

Über die Google Cloud CLI können Sie Secrets mit neuen Diensten verknüpfen oder vorhandene Dienste aktualisieren:

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

    Beispiel:

    gcloud run services update SERVICE --update-secrets 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 jedes Secret. Geben Sie für jeden KEY einen Pfad beginnend mit einem Schrägstrich / an, um ein Secret als Datei bereitzustellen. Optional können Sie den Schrägstrich ausschließen, um das Secret als Umgebungsvariable bereitzustellen. Geben Sie für jeden VALUE den Secret-Namen 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-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
      
  • Neuen Diensten ordnen Sie ein Secret mit dem Befehl gcloud run deploy und dem Parameter --set-secrets zu:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-secrets 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 jedes Secret. Geben Sie für jeden KEY einen Pfad beginnend mit einem Schrägstrich / an, um ein Secret als Datei bereitzustellen. Optional können Sie den Schrägstrich ausschließen, um das Secret als Umgebungsvariable bereitzustellen. Geben Sie für jeden VALUE den Secret-Namen 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-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"