Helmで自己ホスト型を実行します
この記事では、Helmチャートを使用して、さまざまなKubernetesデプロイメントにBitwardenをインストールおよびデプロイする手順を説明します。
この記事では、KubernetesでBitwardenをホストするための一般的な手順について説明します。プロバイダー固有のガイドが利用可能で、各プロバイダーの特定の提供に基づいてデプロイメントをどのように変更するかについて詳しく説明しています:
要件
インストールを進める前に、以下の要件が満たされていることを確認してください:
- kubectlがインストールされています。
- Helm 3がインストールされています。
あなたはSSL証明書とキーを持っている、または証明書プロバイダーを通じて作成するアクセス権を持っています。
あなたはSMTPサーバーを持っているか、クラウドSMTPプロバイダーへのアクセスがあります。
ReadWriteManyをサポートする
ストレージクラス。あなたはインストールIDとキーを
https://bitwarden.com/hostから取得しています。
チャートを準備してください
Helmにリポジトリを追加します
次のコマンドを使用して、Helmにリポジトリを追加します:
Bashhelm repo add bitwarden https://charts.bitwarden.com/ helm repo update
名前空間を作成する
Bitwardenをデプロイするための名前空間を作成してください。私たちのドキュメントは、Bitwardenという名前の名前空間を前提としていますので、異なる名前を選択した場合はコマンドを修正してください。
Bashkubectl create namespace bitwarden
設定を作成する
次のコマンドを使用して、デプロイメントをカスタマイズするために使用するmy-values.yaml設定ファイルを作成します:
Bashhelm show values bitwarden/self-host > my-values.yaml
少なくとも、次の値をあなたのmy-values.yamlファイルに設定する必要があります:
値 | 説明 |
|---|---|
| あなたのクラスターの公開IPアドレスを指すドメイン。 |
| チャートで定義されたnginx ingressコントローラを使用するかどうか( |
| 例えば、 |
| イングレスコントローラーに追加する注釈。同梱されているnginxコントローラーを使用している場合、デフォルトが提供されますが、必要に応じてコメントを外してカスタマイズする必要があります。 |
| デフォルトのnginxコントローラーを使用している場合、必要に応じてカスタマイズできるデフォルトが提供されます。 |
| あなたのTLS証明書の名前。後で |
| あなたのTLS証明書の発行者の名前。後で |
| 通常、 |
| あなたのSMTPサーバーのホスト名またはIPアドレス。 |
| SMTPサーバーが使用するSMTPポート。 |
| あなたのSMTPサーバーが暗号化プロトコルを使用しているかどうか( |
| あなたのサーバーと私たちのクラウドシステム間の通信を許可するには、 |
| デフォルトでは、 |
| 共有ストレージクラスの名前、これは提供する必要があり、 |
| あなたの |
| チャートに含まれるSQLポッドを使用するかどうか。外部のSQLサーバーを使用している場合のみ、 |
| SCIMポッドはデフォルトで無効になっています。SCIMポッドを有効にするには、値 |
| 必須ではありませんが、トラブルシューティングのためには |
秘密のオブジェクトを作成する
少なくとも以下の値を設定するために、
値 | 説明 |
|---|---|
|
|
|
|
| あなたのSMTPサーバーの有効なユーザー名。 |
| 入力されたSMTPサーバーのユーザー名に対する有効なパスワード。 |
| YubiCloud検証サービスまたは自己ホスト型Yubico検証サーバーのクライアントID。YubiCloudを使用する場合、 |
| YubiCloud検証サービスまたは自己ホスト型Yubico検証サーバーの秘密鍵。YubiCloudを使用する場合、 |
| |
あなたがBitwarden SQLポッドを使用している場合、 あなたが自分のSQLサーバーを使用している場合、 | あなたのBitwardenインスタンスに接続されたデータベースの認証情報。必要なものは、同梱のSQLポッドを使用するか外部のSQLサーバーを使用するかによります。 |
例えば、これらの値を設定するためにkubectl create secretコマンドを使用すると、次のようになります:
warning
この例では、シェルの履歴にコマンドを記録します。他の方法も秘密を安全に設定するために考慮されるかもしれません。
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"作成されたシークレットの名前、この場合はcustom-secretにsecrets.secretName:の値をmy-values.yamlの設定を忘れないでください。
例の証明書設定
デプロイメントにはTLS証明書とキー、または証明書プロバイダーを通じて作成するアクセスが必要です。次の例では、
次のコマンドを使用して、クラスターにcert-managerをインストールします:
Bashkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.yaml証明書発行者を定義します。Bitwardenは、DNSレコードがクラスタに指向されるまで、この例ではステージング設定の使用を推奨します。
メールアドレス:のプレースホルダーを有効な値に置き換えてください。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まだ設定していない場合は、
general.ingress.cert.tls.name:とgeneral.ingress.cert.tls.clusterIssuer:の値をmy-values.yamlに必ず設定してください。この例では、次のように設定します:general.ingress.cert.tls.name: tls-secretgeneral.ingress.cert.tls.clusterIssuer: letsencrypt-staging
rawManifestファイルを追加する
Bitwarden自己ホスト型Helm Chartは、インストール前またはインストール後に他のKubernetesマニフェストファイルを含めることができます。これを行うには、チャートのrawManifestsセクションを更新してください(
チャートをインストールしてください
Bitwardenをmy-values.yamlの設定セットアップでインストールするには、次のコマンドを実行します:
Bashhelm upgrade bitwarden bitwarden/self-host --install --namespace bitwarden --values my-values.yaml
おめでとうございます!Bitwardenは現在、https://your.domain.comで稼働しており、my-values.yamlで定義されています。それが機能していることを確認するために、ウェブブラウザでウェブ保管庫を訪れてください。あなたは今、新しいアカウントを登録してログインすることができます。
新しいアカウントのメールアドレスを確認するためには、SMTP設定と関連するシークレットを設定しておく必要があります。
次のステップ
データベースのバックアップと復元
データベースのバックアップとバックアップポリシーは、最終的には実装者に委ねられます。バックアップは、定期的な間隔で実行するためにクラスターの外部でスケジュールすることも、スケジューリング目的でKubernetes内のCronJobオブジェクトを作成するために変更することもできます。
バックアップジョブは、以前のバックアップのタイムスタンプ付きバージョンを作成します。現在のバックアップは単にvault.bakと呼ばれています。これらのファイルは、MS SQLバックアップの永続ボリュームに配置されています。リストアジョブは、同じ永続ボリューム内でvault.bakを探します。