- UPGRADE FAILED: “$name” にはデプロイされたリリースがありません。
- エラー: このコマンドには2つの引数が必要です: リリース名、チャートパス
- 常に初期化されるアプリケーションコンテナ
- 設定変更の適用
- GitLab Runnerの登録に失敗しました。
- リダイレクトが多すぎる
- Immutable Fieldエラーでアップグレードが失敗します。
トラブルシューティング
UPGRADE FAILED: “$name” にはデプロイされたリリースがありません。
このエラーは、最初のインストールに失敗した場合、2回目のインストール/アップグレードで発生します。
最初のインストールが完全に失敗し、GitLabがオペレーションできない状態になった場合は、再インストールする前にまず失敗したインストールを削除してください。
helm uninstall <release-name>
helm delete --purge <release-name>
となります。代わりに、最初のインストールコマンドがタイムアウトしても GitLab が正常に起動した場合は、helm upgrade
コマンドに--force
フラグを追加することで、エラーを無視してリリースのアップデートを試みることができます。
そうでなければ、以前に GitLab Chart のデプロイが成功した後にこのエラーが表示されたのであれば、バグに遭遇していることになります。issue trackerでイシューを作成してください。また、CI サーバーをこの問題から回復させたissue #630もご覧ください。
エラー: このコマンドには2つの引数が必要です: リリース名、チャートパス
このようなエラーは、helm upgrade
を実行したときに、パラメータに空白があると発生する可能性があります。次の例では、Test Username
が原因です:
helm upgrade gitlab gitlab/gitlab --timeout 600s --set global.email.display_name=Test Username ...
--timeout
オプションに関する注意事項を参照してください。これを修正するには、パラメータをシングルクォートで渡します:
helm upgrade gitlab gitlab/gitlab --timeout 600s --set global.email.display_name='Test Username' ...
常に初期化されるアプリケーションコンテナ
Sidekiq、Webservice、その他のRailsベースのコンテナが常にInitializing状態になっている場合は、dependencies
コンテナの通過を待っている可能性があります。
指定したポッドのログをdependencies
コンテナ専用にチェックすると、次のような繰り返しが表示されることがあります:
Checking database connection and schema version
WARNING: This version of GitLab depends on gitlab-shell 8.7.1, ...
Database Schema
Current version: 0
Codebase version: 20190301182457
これはmigrations
ジョブがまだ完了していないことを示しています。 このジョブの目的は、データベースがシードされ、関連するすべてのマイグレーションが行われていることを確認することです。 アプリケーションコンテナは、データベースが期待されるバージョン以上になるのを待とうとしています。 これは、スキーマがコードベースの期待に合わないためにアプリケーションが誤動作しないようにするためです。
-
migrations
ジョブを見つけましょう。kubectl get job -lapp=migrations
- ジョブが実行しているポッドを探します。
kubectl get pod -ljob-name=<job-name>
-
STATUS
の列をチェックしながら出力を調べてください。
STATUS
がRunning
の場合、続行します。STATUS
がCompleted
の場合、次のチェックが通ると間もなくアプリケーションコンテナが開始されるはずです。
このポッドのログを調べてください。kubectl logs <pod-name>
このジョブの実行中に障害が発生した場合は、解決するまでアプリケーションの使用をブロックします。 想定される問題は以下の通りです:
- 設定された PostgreSQL データベースに到達できないか、認証に失敗しました。
- 設定された Redis サービスに到達できないか、認証に失敗しました。
- Gitalyインスタンスへの到達失敗
設定変更の適用
次のコマンドは、gitlab.yaml
に加えられたアップデートを適用するために必要なオペレーションを実行します:
helm upgrade <release name> <chart path> -f gitlab.yaml
GitLab Runnerの登録に失敗しました。
これは、GitLabでrunner登録トークンが変更された場合に発生する可能性があります(バックアップを復元した後に発生することがよくあります)。
- GitLab インストールの
admin/runners
ウェブページにある新しい共有ランナートークンを見つけてください。 -
Kubernetesに保存されている既存のrunner token Secretの名前を検索します。
kubectl get secrets | grep gitlab-runner-secret
-
既存の秘密の削除
kubectl delete secret <runner-secret-name>
-
新しいシークレットを2つのキーで作成します。(
runner-regisration-token
に共有トークン、runner-token
に空のキー)kubectl create secret generic <runner-secret-name> --from-literal=runner-registration-token=<new-shared-runner-token> --from-literal=runner-token=""
リダイレクトが多すぎる
これは、Nginx Ingressの前にTLSターミネーションがあり、コンフィギュレーションでtls-secretsが指定されている場合に発生する可能性があります。
-
値を更新して
global.ingress.annotations."nginx.ingress.kubernetes.io/ssl-redirect": "false"
バリューファイル経由:
# values.yml global: ingress: annotations: "nginx.ingress.kubernetes.io/ssl-redirect": "false"
Helm CLI 経由:
helm ... --set-string global.ingress.annotations."nginx.ingress.kubernetes.io/ssl-redirect"=false
-
変更を適用
注:SSLターミネーションに外部サービスを使用する場合、httpsへのリダイレクトはそのサービスの責任となります(必要な場合)。
Immutable Fieldエラーでアップグレードが失敗します。
spec.clusterIP
これらのChartの3.0.0リリース以前は、spec.clusterIP
プロパティが、実際の値(""
)がないにもかかわらず、いくつかのServicesに入力されていました。これはバグであり、Helm 3のプロパティの3方向マージで問題を引き起こしました。
一旦ChartがHelm 3でデプロイされると、様々なサービスからclusterIP
プロパティを収集し、それらをHelmに提供される値に入力するか、影響を受けるサービスをKubernetesから削除しない限り、_アップグレードのパスは_ありません。
このChartの3.0.0リリースではこのエラーが修正されましたが、手動での修正が必要です。
これは、影響を受けるサービスをすべて削除するだけで解決できます。
-
影響を受けるサービスをすべて削除します:
kubectl delete services -lrelease=RELEASE_NAME
- Helm経由でアップグレードを実行します。
- 今後のアップグレードでは、このエラーは発生しません。
LoadBalancer
、このChartから動的な値が変更されます。externalIP
の詳細については、グローバルIngress設定のドキュメントを参照してください。 DNSレコードの更新が必要になる場合があります!スペックセレクタ
Sidekiqポッドは、Chartリリース以前はユニークセレクタを受け取っていませんでした3.0.0
。この問題については、以下の文書で説明されています。
Helmを使用して3.0.0
にアップグレードすると、古いSidekiqデプロイは自動的に削除され、SidekiqDeployments
、HPAs
、Pods
の名前に-v1
を追加して新しいデプロイが作成されます。
3.0.0
をインストールする際、Sidekiq デプロイでこのエラーが発生する場合は、次の手順で解決してください:
-
Sidekiqサービスの削除
kubectl delete deployment --cascade -lrelease=RELEASE_NAME,app=sidekiq
-
Helm経由でアップグレードを実行します。