Selbst gehostet mit Helm
Dieser Artikel führt Sie durch das Verfahren zur Installation und Bereitstellung von Bitwarden in verschiedenen Kubernetes-Bereitstellungen mit Hilfe eines Helm-Diagramms.
Dieser Artikel wird die allgemeinen Schritte zur Bereitstellung von Bitwarden auf Kubernetes beschreiben. Anbieterspezifische Leitfäden stehen zur Verfügung, um zu erläutern, wie Sie eine Bereitstellung basierend auf den spezifischen Angeboten jedes Anbieters ändern könnten:
Bevor Sie mit der Installation fortfahren, stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind:
kubectl ist installiert.
Helm 3 ist installiert.
Sie haben ein SSL-Zertifikat und Schlüssel oder Zugang zur Erstellung eines solchen über einen Zertifikatsanbieter.
Sie haben einen SMTP-Server oder Zugang zu einem Cloud-SMTP-Anbieter.
Eine Speicherklasse, die ReadWriteMany unterstützt.
Sie haben eine Installations-ID und einen Schlüssel von https://bitwarden.com/host abgerufen.
Fügen Sie das Repo zu Helm hinzu, indem Sie die folgenden Befehle verwenden:
Bashhelm repo add bitwarden https://charts.bitwarden.com/ helm repo update
Erstellen Sie einen Namespace, um Bitwarden zu implementieren. Unsere Dokumentation geht von einem Namespace namens Bitwarden
aus, stellen Sie also sicher, dass Sie die Befehle ändern, wenn Sie einen anderen Namen wählen.
Bashkubectl create namespace bitwarden
Erstellen Sie eine my-values.yaml
Konfigurationsdatei, die Sie zur Anpassung Ihrer Bereitstellung verwenden werden, mit dem folgenden Befehl:
Bashhelm show values bitwarden/self-host > my-values.yaml
Mindestens müssen Sie die folgenden Werte in Ihrer my-values.yaml
Datei konfigurieren:
Wert | Beschreibung |
---|---|
| Die Domain, die auf die öffentliche IP-Adresse Ihres Clusters verweisen wird. |
| Ob der in der Tabelle definierte nginx Ingress Controller verwendet werden soll (siehe ein Beispiel mit einem nicht enthaltenen Ingress Controller). |
| Zum Beispiel, |
| Anmerkungen, die zum Ingress-Controller hinzugefügt werden sollen. Wenn Sie den mitgelieferten nginx-Controller verwenden, werden Standardwerte bereitgestellt, die Sie auskommentieren müssen und nach Bedarf anpassen können. |
| Wenn Sie den Standard-Nginx-Controller verwenden, werden Standardwerte bereitgestellt, die Sie nach Bedarf anpassen können. |
| Der Name Ihres TLS-Zertifikats. Wir werden später ein Beispiel durchgehen. Geben Sie es also jetzt ein, wenn Sie es haben, oder kehren Sie später noch einmal zurück. |
| Der Name Ihres TLS-Zertifikatausstellers. Wir werden später durch ein Beispiel gehen, also geben Sie es jetzt ein, wenn Sie es haben, oder kommen Sie später darauf zurück. |
| E-Mail-Adresse, die normalerweise für Einladungen verwendet wird, typischerweise |
| Ihr SMTP-Server-Hostname oder IP-Adresse. |
| Der vom SMTP-Server verwendete SMTP-Port. |
| Ob Ihr SMTP-Server ein Verschlüsselungsprotokoll verwendet ( |
| Setzen Sie auf |
| Standardmäßig, |
| Der Name der gemeinsamen Speicherklasse, die Sie bereitstellen müssen und die ReadWriteMany unterstützen muss (siehe ein Beispiel mit Azure File Storage), es sei denn, es handelt sich um ein Einzelknoten-Cluster. |
| Der Name Ihres Kubernetes Secret Objekts. Sie werden dieses Objekt im nächsten Schritt erstellen, also entscheiden Sie sich jetzt für einen Namen oder kehren Sie später zu diesem Wert zurück. |
| Ob der im Diagramm enthaltene SQL-Pod verwendet werden soll. Setzen Sie nur auf |
| Der SCIM-Pod ist standardmäßig deaktiviert. Um den SCIM-Pod zu aktivieren, setzen Sie den Wert |
| Obwohl nicht erforderlich, empfehlen wir für Fehlerbehebungszwecke, auf |
Erstellen Sie ein Kubernetes Secret-Objekt, um mindestens die folgenden Werte festzulegen:
Wert | Beschreibung |
---|---|
| Eine gültige Installations-ID, abgerufen von https://bitwarden.com/host. Für weitere Informationen, siehe Wofür werden meine Installations-ID und mein Installations-Schlüssel verwendet? |
| Ein gültiger Installations-Schlüssel, abgerufen von https://bitwarden.com/host. Für weitere Informationen, siehe Wofür werden meine Installations-ID und mein Installations-Schlüssel verwendet? |
| Ein gültiger Benutzername für Ihren SMTP-Server. |
| Ein gültiges Passwort für den eingegebenen SMTP-Server-Benutzernamen. |
| Client-ID für den YubiCloud-Validierungsdienst oder selbst gehosteten Yubico-Validierungsserver. Wenn YubiCloud, erhalten Sie Ihre Client-ID und den geheimen Schlüssel hier. |
| Geheimer Schlüssel für den YubiCloud-Validierungsdienst oder selbst gehosteten Yubico-Validierungsserver. Wenn YubiCloud, holen Sie sich Ihre Client-ID und Ihren geheimen Schlüssel hier. |
| Ihr HaveIBeenPwned (HIBP) API-Schlüssel, verfügbar hier. Dieser Schlüssel ermöglicht es den Benutzern, den Datendiebstahl-Bericht auszuführen und ihr Master-Passwort auf Vorhandensein in Diebstählen zu überprüfen, wenn sie ein Konto erstellen. |
Wenn Sie den Bitwarden SQL Pod verwenden, Wenn Sie Ihren eigenen SQL-Server verwenden, | Anmeldeinformationen für die Datenbank, die mit Ihrer Bitwarden-Instanz verbunden ist. Was benötigt wird, hängt davon ab, ob Sie den mitgelieferten SQL-Pod oder einen externen SQL-Server verwenden. |
Zum Beispiel würde der Befehl kubectl create secret
zum Festlegen dieser Werte folgendermaßen aussehen:
Warnung
Dieses Beispiel wird Befehle in Ihrer Shell-Historie aufzeichnen. Andere Methoden können in Betracht gezogen werden, um ein Geheimnis sicher festzulegen.
Bashkubectl create secret generic custom-secret -n bitwarden \
--from-literal=globalSettings__installation__id="REPLACE" \
--from-literal=globalSettings__installation__key="REPLACE" \
--from-literal=globalSettings__mail__smtp__username="REPLACE" \
--from-literal=globalSettings__mail__smtp__password="REPLACE" \
--from-literal=globalSettings__yubico__clientId="REPLACE" \
--from-literal=globalSettings__yubico__key="REPLACE" \
--from-literal=globalSettings__hibpApiKey="REPLACE" \
--from-literal=SA_PASSWORD="REPLACE"
Vergessen Sie nicht, den Wert secrets.secretName:
in my-values.yaml
auf den Namen des erstellten Geheimnisses zu setzen, in diesem Fall custom-secret
.
Die Bereitstellung erfordert ein TLS-Zertifikat und einen Schlüssel oder Zugang zur Erstellung eines solchen über einen Zertifikatanbieter. Das folgende Beispiel führt Sie durch die Verwendung von cert-manager, um ein Zertifikat mit Let's Encrypt zu generieren:
Installieren Sie den cert-manager auf dem Cluster mit dem folgenden Befehl:
Bashkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.yaml
Definieren Sie einen Zertifikatsaussteller. Bitwarden empfiehlt in diesem Beispiel die Verwendung der Staging-Konfiguration, bis Ihre DNS-Einträge auf Ihren Cluster gerichtet wurden. Stellen Sie sicher, dass Sie den Platzhalter
E-Mail-Adresse:
durch einen gültigen Wert ersetzen:Bashcat <<EOF | kubectl apply -n bitwarden -f - apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-staging spec: acme: server: https://acme-staging-v02.api.letsencrypt.org/directory email: [email protected] privateKeySecretRef: name: tls-secret solvers: - http01: ingress: class: nginx #use "azure/application-gateway" for Application Gateway ingress EOF
Bashcat <<EOF | kubectl apply -n bitwarden -f - apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-production spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: [email protected] privateKeySecretRef: name: tls-secret solvers: - http01: ingress: class: nginx #use "azure/application-gateway" for Application Gateway ingress EOF
Wenn Sie es noch nicht getan haben, stellen Sie sicher, dass Sie die Werte
general.ingress.cert.tls.name:
undgeneral.ingress.cert.tls.clusterIssuer:
inmy-values.yaml
festlegen. In diesem Beispiel würden Sie festlegen:general.ingress.cert.tls.name: tls-geheimnis
general.ingress.cert.tls.clusterIssuer: letsencrypt-staging
Das selbst gehostete Bitwarden Helm Chart ermöglicht es Ihnen, andere Kubernetes-Manifestdateien entweder vor oder nach der Installation einzubeziehen. Um dies zu tun, aktualisieren Sie den Abschnitt rawManifests
der Tabelle (mehr erfahren). Dies ist beispielsweise in Szenarien nützlich, in denen Sie einen Ingress-Controller verwenden möchten, der nicht der standardmäßig definierte nginx-Controller ist.
Um Bitwarden mit der Konfigurationseinrichtung in my-values.yaml
zu installieren, führen Sie den folgenden Befehl aus:
Bashhelm upgrade bitwarden bitwarden/self-host --install --namespace bitwarden --values my-values.yaml
Gratulation! Bitwarden läuft jetzt unter https://your.domain.com
, wie in my-values.yaml
definiert. Besuchen Sie den Web-Tresor in Ihrem Web-Browser, um zu bestätigen, dass er funktioniert. Sie können sich jetzt ein neues Konto registrieren und anmelden.
Sie müssen eine SMTP-Konfiguration und zugehörige Geheimnisse eingerichtet haben, um die E-Mail-Adresse für Ihr neues Konto zu verifizieren.
In diesem Repository haben wir zwei anschauliche Beispieljobs für das Sichern und Wiederherstellen der Datenbank im Bitwarden-Datenbank-Pod bereitgestellt. Wenn Sie Ihre eigene SQL Server-Instanz verwenden, die nicht als Teil dieses Helm-Diagramms bereitgestellt wird, befolgen Sie bitte Ihre unternehmensinternen Backup- und Wiederherstellungsrichtlinien.
Datenbanksicherungen und Sicherungsrichtlinien liegen letztendlich beim Implementierer. Die Sicherung könnte außerhalb des Clusters geplant werden, um in regelmäßigen Abständen zu laufen, oder sie könnte modifiziert werden, um ein CronJob-Objekt innerhalb von Kubernetes für Planungszwecke zu erstellen.
Die Sicherungsaufgabe wird zeitgestempelte Versionen der vorherigen Sicherungen erstellen. Die aktuelle Sicherungskopie heißt einfach vault.bak
. Diese Dateien werden im persistenten Volumen der MS SQL-Backups abgelegt. Die Wiederherstellungsaufgabe sucht nach vault.bak
im selben beständigen Volumen.
Änderungen an dieser Seite vorschlagen
Wie können wir diese Seite für Sie verbessern?
Bei technischen, Rechnungs- und Produktfragen wenden Sie sich bitte an den Support