Kubernetes
Helm チャートで作成したインストールをアップグレードします
チャートの各バージョンは 1 つの AnsibleForms リリースをデプロイします。アップグレードでは、既存の values を使って新しいチャートのバージョンをインストールします。 永続ボリューム上のデータはそのまま残ります。何も変更しないアップグレードでは、Pod には手が加えられません。
アップグレードの前に
問題が起きたときに元に戻せるよう、アップグレードの準備をします。
- 設定 → バックアップ で バックアップを取ります 。新しいリリースは初回起動時にデータベースのスキーマをアップグレードします。
- 現在のバージョンと新しいバージョンの間のリリースについて 変更履歴 を読みます 。
- 新しいメジャーバージョンに移行しますか? 先に v7 へのアップグレード に従ってください。
- values の変更点について チャートの 変更履歴 を読みます 。
- 生成された認証情報を使っている場合 (
secrets.generate)は、<release>-secretsSecret をバックアップしてください。ENCRYPTION_SECRETは復元できません。 - 7.2 から移行しますか? サーバー Pod 内の RTE のモードが変わります。 7.2 から 7.3 へ を参照してください。
7.2 から 7.3 へ
チャート 7.3.0 では、アプリの隣にある RTE を、7.3.0 で非推奨になり 8.0.0 で削除されるデータベースモードから移行します。アプリは 127.0.0.1 の RTE に接続して 1 本の WebSocket を開いたままにします( RTE_MODE=inbound 、 モード を参照)。
- RTE のコンテナーは
DB_HOST、DB_USER、DB_PASSWORD、ENCRYPTION_SECRET、RTE_URLを受け取らなくなり、ジョブのファイルを 共有ボリュームから取得します(RTE_FILES=local) - チャートの設定シードは、トークンとアドレスを持つ RTE の認証情報と、それでサインインする
rte_mode: inboundのランナーを 宣言します。チャートのシードを使っていれば、何もする必要はありません containers.rte.seedRunner: falseを指定している場合や独自の設定シード(CONFIG_SEED_PATH)を使っている場合、RTE は自分自身をランナーとして追加しなくなります。 シードまたは 接続 → ランナー で自分で宣言してください。http://127.0.0.1:<port>とトークンを持つ RTE の認証情報と、 それを指定するrte_mode: inboundの種類 RTE のランナーです。方法はアップグレード後に Helm が表示するノートに記載されています
7.3.0 以降、チャートは runner.enabled でランナーだけをインストールすることもできます( Kubernetes 上のランナー を参照)。
1. 新しいチャートのバージョンを探す
チャートリポジトリを更新し、利用できるチャートのバージョンを一覧表示します。
helm repo update
helm search repo ansibleforms/ansibleforms --versions
2. リリースをアップグレードする
インストール時と同じ helm upgrade コマンドを、自分の values ファイルと新しいチャートのバージョンを指定して実行します。
helm upgrade --install ansibleforms ansibleforms/ansibleforms \
--namespace ansibleforms \
--values my_values.yaml \
--version 7.0.0
OCI レジストリを使う場合は、チャートとして oci://ghcr.io/ansibleforms/charts/ansibleforms を指定します。
3. アップグレードを確認する
新しい Pod を待ってから、Web サーバーとデータベース接続の両方を確認するチャートのテストを実行します。
kubectl -n ansibleforms get pods -w
helm test ansibleforms --namespace ansibleforms --logs
AnsibleForms では、 ヘルプ → バージョン情報 で実行中のバージョンを確認でき、 設定 → ステータス でデータベース、スキーマ、 AnsibleForms が依存するその他のシステムの状態を確認できます。
ロールバック
Helm はリリースの履歴を保持しています。前のリビジョンに戻すには次のようにします。
helm history ansibleforms --namespace ansibleforms
helm rollback ansibleforms --namespace ansibleforms
アップグレード済みのデータベースで起動しない場合は、バックアップを復元します(チャートの README を参照)。