バージョン別アップグレード手順
このページで、お使いのバージョンに対するアップグレード手順をレビューしてください。これらの手順は、Geo サイトをアップグレードするための一般的な手順に付随するものです。
14.9 へのアップグレード
GitLab 14.9.0にアップグレードしないでください。代わりに14.9.1以降を使用してください。
GeoのCI検証機能で、ジョブのトレースが失われる可能性のあるイシューを発見しました。このイシューはGitLab 14.9.1 パッチリリースで修正されました。
すでに GitLab 14.9.0 にアップグレードしている場合は、geo_job_artifact_replication
機能フラグを無効にすることで、イシューの原因となっている機能を無効にすることができます。
14.2から14.7へのアップグレード
GitLab 14.2 から 14.7 では、GitLab が管理するオブジェクトストレージのレプリケーションが使用されている場合に Geo に影響するイシューがあり、blob オブジェクトタイプの同期に失敗することがあります。
GitLab 14.2以降、検証に失敗すると同期に失敗し、これらのオブジェクトの再同期を引き起こします。
オブジェクトストレージに保存されたファイルに対する検証はまだ実装されていないため(詳細はイシュー13845を参照)、オブジェクトストレージに保存されたすべてのオブジェクトに対して一貫して失敗するループが発生します。
これを修正する方法については、Troubleshooting - Failed syncs with GitLab-managed object storage replicationを参照してください。
14.4へのアップグレード
GitLab 14.4.0から14.4.2には、Geoやcronjobsに依存する他の機能に影響を与えるイシューがあります。GitLab 14.4.3以降へのアップグレードをお勧めします。
14.1、14.2、14.3へのアップグレード
マルチアーキイメージ
マルチアーキイメージを使用するとコンテナレジストリのレプリケーションが完全に機能しないというイシューが見つかりました。マルチアーキイメージの場合、プライマリアーキテクチャ(例えばamd64
)のみがセカンダリサイトにレプリケートされます。これはGitLab 14.3で修正され、14.2と14.1にもバックポートされましたが、強制的に同期し直すには手動ステップが必要です。
手動で再同期を行う必要があります:
docker manifest inspect <SECONDARY_IMAGE_LOCATION> | jq '.mediaType'
<SECONDARY_IMAGE_LOCATION>
はセカンダリサイトのコンテナイメージです。出力がapplication/vnd.docker.distribution.manifest.list.v2+json
と一致すれば(mediaType
のエントリは複数のレベルに存在する可能性がありますが、ここでは最上位レベルのエントリにのみ注目します)、何もする必要はありません。
そうでない場合は、各セカンダリサイトのRailsアプリケーションノードでRailsコンソールを開き、以下を実行します:
list_type = 'application/vnd.docker.distribution.manifest.list.v2+json'
Geo::ContainerRepositoryRegistry.synced.each do |gcr|
cr = gcr.container_repository
primary = Geo::ContainerRepositorySync.new(cr)
cr.tags.each do |tag|
primary_manifest = JSON.parse(primary.send(:client).repository_raw_manifest(cr.path, tag.name))
next unless primary_manifest['mediaType'].eql?(list_type)
cr.delete_tag_by_name(tag.name)
end
primary.execute
end
14.1より前のバージョンを実行しており、コンテナレジストリでGeoコンテナやマルチアーキコンテナを使用している場合は、少なくともGitLab 14.1にアップグレードすることをお勧めします。
GitLab 14.0/14.1へのアップグレード
プライマリサイトをUIから削除できません
プライマリサイトをUIから削除できないイシューを発見しました。
このバグはUIにのみ存在し、他の方法によるプライマリサイトの削除はブロックされません。
影響を受けるバージョンを実行しており、プライマリ サイトを削除する必要がある場合は、Geo Sites API を使用して手動でプライマリ サイトを削除できます。