GitLab Managed Appsからクラスター管理プロジェクトへのマイグレーション(非推奨)
GitLab Managed AppsはGitLab 14.0で廃止され、ユーザーが管理するクラスター管理プロジェクトが採用されました。プロジェクトを通してクラスタアプリケーションを管理することで、後発のGitLab Managed Appsを通して管理するよりもはるかに柔軟にクラスターを管理することができます。クラスター管理プロジェクトにマイグレーションするには、GitLab Runnerが利用可能で、Helmに精通している必要があります。
クラスター管理プロジェクトへのマイグレーション
GitLab Managed Appsからクラスター管理プロジェクトにマイグレーションするには、以下の手順に従ってください。例付きのビデオウォークスルーもご覧ください。
- Cluster Management Project テンプレートに基づいて新しいプロジェクトを作成します。
- このプロジェクトのエージェントをクラスターにインストールします。
- 
.gitlab-ci.ymlfrom the Project Template の指示に従って、KUBE_CONTEXTCI/CD 変数を新しくインストールしたエージェントのコンテキストに設定します。
- 
事前に設定された .gitlab-ci.ymlファイルを使用して、Helm v2 リリースを通じてデプロイされたアプリを検出します:- 
デフォルトの GitLab Managed Apps 名前空間を上書きしていた場合は、 .gitlab-ci.ymlを編集して、スクリプトが正しい名前空間を引数として受け取っていることを確認してください:script: - gl-fail-if-helm2-releases-exist <your_custom_namespace>
- 
デフォルトの名前 ( gitlab-managed-apps) のままであれば、スクリプトはすでに設定されています。
 いずれにせよ、パイプラインを手動で実行し、 detect-helm2-releasesジョブのログを読んで、Helm v2 のリリースの有無とそのリリースを確認してください。
- 
- 
Helm v2のリリースがない場合は、この手順を飛ばしてください。そうでない場合は、Helmv2からHelm v3へのマイグレーション方法に関するHelmの公式ドキュメントに従い、Helm v2リリースが正常にマイグレーションされたことを確認してからクリーンアップしてください。 
- このステップでは、すでにHelm v3のリリースしかないはずです。このプロジェクトで管理したいアプリケーションのパスを./helmfile.yamlからアンコメントします。一度に管理したいすべてのアプリのコメントを解除することもできますが、プロセス中に迷子にならないように、アプリごとに以下の手順を繰り返す必要があります。
- 
アプリにデプロイされたChartのバージョンに合わせて、関連する applications/{app}/helmfiles.yaml。GitLab Runner Helm v3リリースを例にしてみましょう:次のコマンドはリリースとそのバージョンを一覧表示します: helm ls -n gitlab-managed-apps NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION runner gitlab-managed-apps 1 2021-06-09 19:36:55.739141644 +0000 UTC deployed gitlab-runner-0.28.0 13.11.0CHART{release}-v{chart_version}、./applications/gitlab-runner/helmfile.yamlのversion:属性を編集して、デプロイしたバージョンと一致するようにします。これは、マイグレーション中のバージョンアップを避けるための安全なステップです。アプリを別のネームスペースにデプロイしている場合は、上記のコマンドでgitlab-managed-appsを置き換えてください。
- 
アプリに関連付けられている applications/{app}/values.yamlをデプロイされた値と一致するように編集します。例えば、GitLab Runnerの場合:- 
以下のコマンドの出力をコピーしてください(大きいかもしれません): helm get values runner -n gitlab-managed-apps -a --output yaml
- 
applications/gitlab-runner/values.yamlを前のコマンドの出力で上書きします。
 この安全なステップは、予期しないデフォルト値がデプロイした値を上書きしないことを保証します。例えば、GitLab Runnerが誤って gitlabUrlやrunnerRegistrationTokenを上書きしてしまう可能性があります。
- 
- 
アプリによっては特別な注意が必要です: - 
Ingress:内部イシューにより、 ./gl-helmfileコマンドを実行しようとするとspec.clusterIP: Invalid valueが表示される場合があります。これを回避するには、applications/ingress/values.yamlのリリース値を上書きした後、omitClusterIP: falseをすべて上書きし、omitClusterIP: trueに設定する必要があります。もう1つの方法は、kubectl get services -n gitlab-managed-appsを実行してこれらのIPを収集し、ClusterIPの各コマンドから取得した値で上書きすることです。
- 
Vault:このアプリは、Helm v2で使用していたチャートからHelm v3で使用するチャートへの変更をもたらします。そのため、このクラスタ管理プロジェクトとインテグレーションする唯一の方法は、このアプリを実際にアンインストールし、 applications/vault/values.yamlで提案されているチャートバージョンを受け入れることです。
- 
Cert-manager: - Kubernetesバージョン1.20以上のユーザーにとって、非推奨のcert-manager v0.10はもはや有効ではなく、アップグレードには破壊的な変更が含まれています。そのため、cert-manager v0.10をバックアップしてアンインストールし、代わりに最新のcert-managerをインストールすることをお勧めします。このバージョンをインストールするには、./helmfile.yamlからapplications/cert-manager/helmfile.yamlをアンコメントしてください。 これにより、新しいバージョンをインストールするパイプラインが起動します。
- 
Kubernetesのバージョンが1.20より低いユーザーの場合は、プロジェクトのメインHelmfile ( ./helmfile.yaml) でapplications/cert-manager-legacy/helmfile.yamlのコメントを解除することで、v0.10に固執することができます。Kubernetesがバージョン1.20以降にアップグレードされると、Cert-manager v0.10は壊れます。
 
- Kubernetesバージョン1.20以上のユーザーにとって、非推奨のcert-manager v0.10はもはや有効ではなく、アップグレードには破壊的な変更が含まれています。そのため、cert-manager v0.10をバックアップしてアンインストールし、代わりに最新のcert-managerをインストールすることをお勧めします。このバージョンをインストールするには、
 
- 
- 
これまでのすべてのステップを実行した後、パイプラインを手動で実行し、 applyジョブログを見て、アプリケーションが正常に検出されたか、インストールされたか、予期しないアップデートが行われたかどうかを確認します。いくつかの注釈チェックサムは、この属性と同様に更新されることが期待されます: --- heritage: Tiller +++ heritage: Tiller
成功したパイプラインを取得したら、クラスター管理プロジェクトで管理したい他のデプロイ済みアプリについてもこの手順を繰り返します。
cert-manager v0.10のバックアップとアンインストール
- cert-manager v0.10のデータをバックアップする方法については、公式ドキュメントに従ってください。
- 
applications/cert-manager/helmfile.yamlファイルのinstalled: trueをinstalled: falseに編集し、cert-manager をアンインストールします。
- 次のコマンドkubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges,Secrets,ConfigMaps -n gitlab-managed-apps | grep certmanagerを実行して、残っているリソースを検索します。
- 前のス テ ッ プで見つか っ た リ ソ ース それぞれについて、kubectl delete -n gitlab-managed-apps {ResourceType} {ResourceName}を実行 し て削除 し ます。た と えば、cert-manager-controllerというConfigMap型の リ ソ ース が見つか っ た場合は、kubectl delete configmap -n gitlab-managed-apps cert-manager-controllerを実行 し てそれを削除 し ます。
ビデオ・ウォークスルー
GMAからクラスター管理プロジェクトにマイグレーションする方法の例をビデオでご覧いただけます:
- 新しいクラスター管理プロジェクトを使用したゼロからのマイグレーション。Helm v2 アプリのマイグレーションもカバーしています。
- 既存の GitLab 管理アプリ CI/CD プロジェクトからのマイグレーション。
