Zelf hosten met Helm
Dit artikel leidt je door de procedure om Bitwarden te installeren en te implementeren in verschillende Kubernetes-implementaties met behulp van een Helm-kaart.
Dit artikel beschrijft de algemene stappen voor het hosten van Bitwarden op Kubernetes. Er zijn aanbiedersspecifieke gidsen beschikbaar om te bekijken hoe je een implementatie kunt aanpassen op basis van het specifieke aanbod van elke aanbieder:
Controleer voordat u verdergaat met de installatie of aan de volgende vereisten is voldaan:
kubectl is geïnstalleerd.
Helm 3 is geïnstalleerd.
Je hebt een SSL-certificaat en -sleutel of toegang om er een te maken via een certificaatprovider.
Je hebt een SMTP-server of toegang tot een cloud SMTP-provider.
Een opslagklasse die ReadWriteMany ondersteunt.
U hebt een installatie-id en -sleutel die u hebt opgehaald van https://bitwarden.com/host.
Voeg de repo toe aan Helm met de volgende commando's:
Bashhelm repo add bitwarden https://charts.bitwarden.com/ helm repo update
Maak een naamruimte om Bitwarden in te implementeren. Onze documentatie gaat uit van een namespace met de naam bitwarden
, dus pas de commando's aan als je een andere naam kiest.
Bashkubectl create namespace bitwarden
Maak een my-values.yaml
configuratiebestand, dat je zult gebruiken om je implementatie aan te passen, met het volgende commando:
Bashhelm show values bitwarden/self-host > my-values.yaml
Je moet op zijn minst de volgende waarden configureren in je my-values.yaml
bestand:
Waarde | Beschrijving |
---|---|
| Het domein dat zal verwijzen naar het openbare IP-adres van je cluster. |
| Of de nginx ingress controller gedefinieerd in de grafiek gebruikt moet worden(zie een voorbeeld met een niet-ingebedde ingress controller). |
| Bijvoorbeeld |
| Annotaties om toe te voegen aan de ingangscontroller. Als je de meegeleverde nginx controller gebruikt, zijn er standaardinstellingen die je moet uncommenten en naar behoefte kunt aanpassen. |
| Als je de standaard nginx controller gebruikt, zijn er standaardinstellingen die je naar behoefte kunt aanpassen. |
| De naam van uw TLS-certificaat. We zullen later een voorbeeld bespreken, dus voer het nu in als je het hebt of kom later terug. |
| De naam van de uitgever van uw TLS-certificaat. We zullen later een voorbeeld bespreken, dus voer het nu in als je het hebt of kom later terug. |
| E-mailadres dat wordt gebruikt voor uitnodigingen, meestal |
| De hostnaam of het IP-adres van uw SMTP-server. |
| De SMTP-poort die wordt gebruikt door de SMTP-server. |
| Of uw SMTP-server een coderingsprotocol gebruikt |
| Stel in op |
| Standaard |
| De naam van de gedeelde opslagklasse, die je moet opgeven en ReadWriteMany moet ondersteunen(zie een voorbeeld met Azure File Storage) tenzij het een single-node cluster is. |
| De naam van je Kubernetes geheim object. Je zult dit object in de volgende stap maken, dus beslis nu over een naam of kom terug op deze waarde. |
| Of de SQL-pod in de grafiek moet worden gebruikt. Alleen op |
| De SCIM pod is standaard uitgeschakeld. Stel waarde |
| Hoewel dit niet vereist is, raden we aan dit op |
Maak een Kubernetes secret object om minimaal de volgende waarden in te stellen:
Waarde | Beschrijving |
---|---|
| Een geldig installatie-id opgehaald van https://bitwarden.com/host. Zie voor meer informatie Waarvoor worden mijn installatie-id en installatiesleutel gebruikt? |
| Een geldige installatiesleutel die is opgehaald van https://bitwarden.com/host. Zie voor meer informatie Waarvoor worden mijn installatie-id en installatiesleutel gebruikt? |
| Een geldige gebruikersnaam voor uw SMTP-server. |
| Een geldig wachtwoord voor de ingevoerde gebruikersnaam van de SMTP-server. |
| Client-ID voor YubiCloud Validation Service of zelf gehoste Yubico Validation Server. Als u YubiCloud gebruikt, kunt u hier uw klant-ID en geheime sleutel ophalen. |
| Geheime sleutel voor YubiCloud Validation Service of zelf gehoste Yubico Validation Server. Als u YubiCloud gebruikt, kunt u hier uw klant-ID en geheime sleutel ophalen. |
| Je HaveIBeenPwned (HIBP) API-sleutel, hier beschikbaar. Met deze sleutel kunnen gebruikers het rapport over gegevensinbreuken uitvoeren en hun hoofdwachtwoord controleren op aanwezigheid in inbreuken wanneer ze een account aanmaken. |
Als u de Bitwarden SQL-pod gebruikt, is Als je je eigen SQL-server gebruikt, moet | Credentials voor de database die is verbonden met uw Bitwarden-instantie. Wat nodig is, hangt af van of u de meegeleverde SQL-pod of een externe SQL-server gebruikt. |
Als je bijvoorbeeld het commando kubectl create secret
gebruikt om deze waarden in te stellen, zou het er als volgt uitzien:
waarschuwing
Dit voorbeeld zal commando's opnemen in je shell geschiedenis. Er kunnen andere methoden worden overwogen om een geheim veilig in te stellen.
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"
Vergeet niet om de secrets.secretName:
waarde in my-values.yaml
in te stellen op de naam van het aangemaakte geheim, in dit geval custom-secret
.
Implementatie vereist een TLS-certificaat en -sleutel, of toegang tot het aanmaken ervan via een certificaatprovider. Het volgende voorbeeld leidt je door het gebruik van cert-manager om een certificaat te genereren met Let's Encrypt:
Installeer cert-manager op het cluster met het volgende commando:
Bashkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.yaml
Een uitgever van certificaten definiëren. Bitwarden raadt aan om de Staging-configuratie in dit voorbeeld te gebruiken totdat uw DNS-records naar uw cluster zijn verwezen. Zorg ervoor dat u de placeholder
e-mail:
vervangt door een geldige waarde: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: me@example.com 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: me@example.com privateKeySecretRef: name: tls-secret solvers: - http01: ingress: class: nginx #use "azure/application-gateway" for Application Gateway ingress EOF
Als je dit nog niet hebt gedaan, zorg er dan voor dat je de waarden
general.ingress.cert.tls.name:
engeneral.ingress.cert.tls.clusterIssuer:
instelt inmy-values.yaml
. In dit voorbeeld stel je in:general.ingress.cert.tls.name: tls-secret
general.ingress.cert.tls.clusterIssuer: letsencrypt-staging
Met de Bitwarden self-host Helm Chart kun je andere Kubernetes manifest-bestanden voor of na de installatie toevoegen. Om dit te doen, moet je de rawManifests
sectie van de kaart bijwerken(meer informatie). Dit is bijvoorbeeld handig in scenario's waar je een andere ingress controller wilt gebruiken dan de nginx controller die standaard is gedefinieerd.
Voer het volgende commando uit om Bitwarden te installeren met de configuratie in my-values.yaml
:
Bashhelm upgrade bitwarden bitwarden/self-host --install --namespace bitwarden --values my-values.yaml
Gefeliciteerd! Bitwarden is nu actief op https://your.domain.com,
zoals gedefinieerd in my-values.yaml
. Bezoek de webkluis in je webbrowser om te controleren of deze werkt. Je kunt nu een nieuwe account registreren en inloggen.
Je moet een SMTP-configuratie en bijbehorende geheimen hebben ingesteld om de e-mail voor je nieuwe account te kunnen verifiëren.
In dit archief hebben we twee illustratieve voorbeeldtaken gegeven voor het back-uppen en herstellen van de database in de Bitwarden databasepod. Als u uw eigen SQL Server-instantie gebruikt die niet wordt ingezet als onderdeel van deze Helm-kaart, volg dan het back-up- en herstelbeleid van uw bedrijf.
Database back-ups en back-up beleid zijn uiteindelijk aan de uitvoerder. De back-up kan buiten het cluster worden ingepland om op regelmatige intervallen te worden uitgevoerd, of het kan worden aangepast om een CronJob-object binnen Kubernetes te maken voor planningsdoeleinden.
De back-uptaak maakt tijdstempelversies van de vorige back-ups. De huidige back-up heet gewoon vault.bak
. Deze bestanden worden in het persistente volume van MS SQL-back-ups geplaatst. De hersteltaak zoekt naar vault.bak
in hetzelfde permanente volume.
Suggest changes to this page
How can we improve this page for you?
For technical, billing, and product questions, please contact support