Självvärd hos Helm
Den här artikeln leder dig genom proceduren för att installera och distribuera Bitwarden i olika Kubernetes-distributioner med hjälp av ett Helm-diagram.
Den här artikeln kommer att beskriva de allmänna stegen för att vara värd för Bitwarden på Kubernetes. Leverantörsspecifika guider finns tillgängliga för att fördjupa dig i hur du kan ändra en distribution baserat på varje leverantörs specifika erbjudanden:
Innan du fortsätter med installationen, se till att följande krav är uppfyllda:
kubectl är installerat.
Helm 3 är installerad.
Du har ett SSL-certifikat och nyckel eller tillgång till att skapa ett via en certifikatleverantör.
Du har en SMTP-server eller tillgång till en moln-SMTP-leverantör.
En lagringsklass som stöder ReadWriteMany.
Du har ett installations-id och nyckel hämtade från https://bitwarden.com/host.
Lägg till repet till Helm med följande kommandon:
Bashhelm repo add bitwarden https://charts.bitwarden.com/ helm repo update
Skapa ett namnområde att distribuera Bitwarden till. Vår dokumentation förutsätter ett namnområde som kallas bitwarden
, så se till att ändra kommandon om du väljer ett annat namn.
Bashkubectl create namespace bitwarden
Skapa en my-values.yaml-konfigurationsfil
som du använder för att anpassa din distribution med följande kommando:
Bashhelm show values bitwarden/self-host > my-values.yaml
Som ett minimum måste du konfigurera följande värden i filen my-values.yaml
:
Värde | Beskrivning |
---|---|
| Domänen som kommer att peka på ditt kluster offentliga IP-adress. |
| Om du ska använda nginx-ingångskontrollern som definieras i diagrammet (se ett exempel med en icke-inkluderad ingångskontroller). |
| Till exempel |
| Anteckningar att lägga till i ingångskontrollern. Om du använder den medföljande nginx-kontrollern finns standardinställningar som du måste avkommentera och kan anpassa efter behov. |
| Om du använder standard nginx-kontrollern finns standardinställningar som du kan anpassa efter behov. |
| Namnet på ditt TLS-certifikat. Vi kommer att gå igenom ett exempel senare, så skriv in det nu om du har det eller ring tillbaka senare. |
| Namnet på din TLS-certifikatutfärdare. Vi kommer att gå igenom ett exempel senare, så skriv in det nu om du har det eller ring tillbaka senare. |
| E-postadress som används för inbjudningar, vanligtvis |
| Din SMTP-server värdnamn eller IP-adress. |
| SMTP-porten som används av SMTP-servern. |
| Om din SMTP-server använder ett krypteringsprotokoll ( |
| Ställ in på |
| Som standard, |
| Namnet på den delade lagringsklassen, som du måste tillhandahålla och måste stödja ReadWriteMany (se ett exempel som använder Azure File Storage) såvida det inte är ett ennodkluster. |
| Namnet på ditt Kubernetes hemliga objekt. Du kommer att skapa det här objektet i nästa steg, så bestäm ett namn nu eller ring tillbaka till detta värde. |
| Om SQL-podden som ingår i diagrammet ska användas. Endast inställt på |
| SCIM-podden är inaktiverad som standard. För att aktivera SCIM-podden, ställ in värde |
| Även om det inte krävs, rekommenderar vi att du ställer in till |
Skapa ett Kubernetes-hemligt objekt för att som ett minimum ställa in följande värden:
Värde | Beskrivning |
---|---|
| Ett giltigt installations-ID hämtat från https://bitwarden.com/host. För mer information, se vad används mitt installations-id och installationsnyckel till? |
| En giltig installationsnyckel hämtad från https://bitwarden.com/host. För mer information, se vad används mitt installations-id och installationsnyckel till? |
| Ett giltigt användarnamn för din SMTP-server. |
| Ett giltigt lösenord för det angivna SMTP-serverns användarnamn. |
| Klient-ID för YubiCloud Validation Service eller egenvärd Yubico Validation Server. Om YubiCloud, hämta ditt klient-ID och hemliga nyckel här. |
| Hemlig nyckel för YubiCloud Validation Service eller egenvärd Yubico Validation Server. Om YubiCloud, hämta ditt klient-ID och hemliga nyckel här. |
| Din HaveIBeenPwned (HIBP) API-nyckel, tillgänglig här. Den här nyckeln gör det möjligt för användare att köra dataintrångsrapporten och kontrollera sitt huvudlösenord för att se om det finns intrång när de skapar ett konto. |
Om du använder Bitwarden SQL-podden, Om du använder din egen SQL-server, | Autentiseringsuppgifter för databasen som är ansluten till din Bitwarden-instans. Vad som krävs beror på om du använder den medföljande SQL-podden eller en extern SQL-server. |
Om du till exempel använder kommandot kubectl create secret
för att ställa in dessa värden skulle se ut så här:
warning
This example will record commands to your shell history. Other methods may be considered to securely set a secret.
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"
Glöm inte att ställa in värdet secrets.secretName
: i my-values.yaml
till namnet på den skapade hemligheten, i det här fallet custom-secret
.
Implementering kräver ett TLS-certifikat och nyckel, eller tillgång till ett skapande via certifikatleverantör. Följande exempel går igenom hur du använder cert-manager för att generera ett certifikat med Let's Encrypt:
Installera cert-manager på klustret med följande kommando:
Bashkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.yaml
Definiera en certifikatutfärdare. Bitwarden rekommenderar att du använder Staging-konfigurationen i det här exemplet tills dina DNS-poster har pekats mot ditt kluster. Se till att ersätta platshållaren för
e-post:
med ett giltigt värde: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
Om du inte redan har gjort det, se till att ställa in värdena
general.ingress.cert.tls.name
: ochgeneral.ingress.cert.tls.clusterIssuer
: imy-values.yaml
. I det här exemplet skulle du ställa in:general.ingress.cert.tls.name: tls-secret
general.ingress.cert.tls.clusterIssuer: letsencrypt-staging
Bitwarden självvärd Helm Chart låter dig inkludera andra Kubernetes-manifestfiler antingen före eller efter installation. För att göra detta uppdaterar du avsnittet rawManifests
i diagrammet (läs mer). Detta är användbart, till exempel i scenarier där du vill använda en annan ingångskontroller än den nginx-kontroller som är definierad som standard.
För att installera Bitwarden med konfigurationsinställningarna i my-values.yaml
, kör följande kommando:
Bashhelm upgrade bitwarden bitwarden/self-host --install --namespace bitwarden --values my-values.yaml
Grattis! Bitwarden är nu igång på https://din.domän.com
, enligt definitionen i my-values.yaml
. Besök webbvalvet i din webbläsare för att bekräfta att det fungerar. Du kan nu registrera ett nytt konto och logga in.
Du måste ha konfigurerat en SMTP-konfiguration och relaterade hemligheter för att verifiera e-postadressen för ditt nya konto.
I det här arkivet har vi tillhandahållit två illustrativa exempeljobb för att säkerhetskopiera och återställa databasen i Bitwardens databaspod. Om du använder din egen SQL Server-instans som inte distribueras som en del av det här Helm-diagrammet, vänligen följ företagets policy för säkerhetskopiering och återställning.
Databassäkerhetskopiering och säkerhetskopieringspolicy är i slutändan upp till implementeraren. Säkerhetskopieringen kan schemaläggas utanför klustret för att köras med ett regelbundet intervall, eller så kan den modifieras för att skapa ett CronJob-objekt i Kubernetes för schemaläggningsändamål.
Säkerhetskopieringsjobbet kommer att skapa tidsstämplade versioner av tidigare säkerhetskopior. Den nuvarande säkerhetskopian kallas helt enkelt vault.bak
. Dessa filer placeras i MS SQL backups beständig volym. Återställningsjobbet kommer att leta efter vault.
bak i samma beständiga volym.