デプロイメントとリリース
概要と用語
このページでは、ユーザーへの変更デリバリーに使用されるデプロイメントとリリースのアプローチを説明します。全体的なプロセスは 2 つの重要な部分で構成されています。
- 月次セルフマネージドリリース: GitLab バージョン(XX.YY.0)が毎月公開されます。この月次リリースから、計画済みパッチが月 2 回スケジュールされ、計画外の重要なパッチが必要に応じて作成されます。
- GitLab.com デプロイメント: マスターブランチから作成されたブランチを定期的な間隔でデプロイする継続的デリバリープロセス。
個々のプロセスの詳細および使用方法については、GitLab.com の変更に関するデプロイメントページと、セルフマネージドユーザー向けの変更に関するリリースページをご覧ください。
デプロイメントとリリースの主要な優先事項は、GitLab.com 上および独自インフラで GitLab を実行しているユーザー向けのアプリケーションとしての GitLab の可用性とセキュリティ です。
デプロイメントとリリースプロセスの概要
テスト目的のため、すべての変更はセルフマネージドリリースの候補として検討される前に GitLab.com にデプロイされます。デプロイメントとリリースのサイクルは異なるタイムラインで運用されており、変更は 1 日に複数回 GitLab.com にデプロイされ、パッケージは月に数回セルフマネージドユーザー向けにリリースされます。
この概要は 2 つのプロセスがどのように連携しているかを示しています。

- エンジニアが機能またはバグ修正を作成。変更はメンテナーによってレビューされます
- 検証済みの変更がデフォルトブランチにマージされます
- スケジュールされたパイプラインがすべての新しい変更を GitLab.com へのデプロイ用「自動デプロイパッケージ」にパッケージ化します。パッケージは指定された時間に毎日複数回作成されます
- デプロイメントが許可されている場合、自動デプロイパイプラインが開始されます。本番環境変更ロック、不健全な環境、または他の進行中のデプロイメントがデプロイメントを妨げる可能性があります
- 自動デプロイパッケージが GitLab.com にデプロイされます。詳細はデプロイメントプロセスを参照してください
- GitLab.com に正常にデプロイされた変更は、セルフマネージドユーザー向けのパッケージリリースの候補として検討できます。これらの変更の新しいリリース候補パッケージが作成されます
- リリース候補がテスト環境にデプロイされ、自動 QA テストが実行されます
- リリース候補が公式にタグ付けされ、リリース用に公開されます
プロセスの詳細についてはデプロイメントページおよびリリースページをご覧ください
リリースマネージャー
デプロイメントとリリースプロセスの全体的な調整と運用は、リリースマネージャーの責任です。
現在のリリースマネージャーについては、GitLab のリリースマネージャースケジュールをご確認ください。
リリースマネージャーへの連絡方法
現在のリリースマネージャーに連絡するには:
- GitLab の Issue およびエピックで
@gitlab-org/release/managersハンドルを使用する - Slack で
@release-managersハンドルを使用する
デプロイメントとリリースの議論と調整には #releases および #f_upcoming_releases チャンネルを使用します。自動デプロイメントステータスのアナウンスは #announcements チャンネルに行われます。
リクエストをエスカレーションする必要がある場合は、リリース管理エスカレーションプロセスを使用してください。
週次デリバリーメトリクスレビュー
毎週、現在のリリースマネージャーが EMEA/AMER Delivery 週次同期(YouTube プレイリスト)で主要なデリバリーグループメトリクスを確認します。目標は最近のデプロイメントとリリースの経験を共有し、グループがツールとプロセスを改善する方法を特定することです。
月次 MTTP - デプロイメントブロッカー - デプロイメント SLO - GitLab: デプロイメント頻度とリードタイム
- 自動デプロイパッケージダッシュボードのウォークスルー
- DORA メトリクス分析ダッシュボードの
Deployment frequency over timeおよびLead time for changes over timeパネルの月次ビューのウォークスルー — パターンや異常を確認します - デプロイメント SLO ダッシュボードのウォークスルー — デプロイメント SLO とパッケージャーパイプライン期間
- デプロイメントブロッカーダッシュボードおよび先週のデプロイメントブロッカーのウォークスルー
- 先週の MTTP に基づいてアクションが必要かどうかの確認
デプロイメントターゲット
このセクションでは、GitLab でサポートされているデプロイメントタイプの階層を定義します。 注意: FreeBSD Ports やソースインストールなど他のデプロイメントタイプも可能ですが、公式サポート対象ではないため対象外です。 これは階層的な分類体系であるため、アイテムはツリーの複数レベルで表現されることがあります。
場合によっては、使用状況のピングデータの制限により、より広い(リーフノード以外の)分類を使用する必要がありますが、一般的にデプロイメントは利用可能な最も具体的な分類で分類されるべきです。
タクソノミー
このセクションでは、GitLab を配布するデプロイメントタイプのタクソノミーについて説明します。 可能な場合は、これらのデプロイメントタイプに合致させるために使用できる Service Ping 属性も記載しています。
SAAS
~deployment-type:saasSaaS は、すべての顧客向け GitLab マネージドインスタンスを表します。
GitLab.com
~deployment-type:saas-gitlabGitLab.com は 2 つの マルチテナント デプロイメントタイプを表します。
Original GitLab.com
~deployment-type:saas-config-mgmtGitLab.com はオリジナルのモノリシックデプロイメントで、config-mgmt プロジェクトで設定されます。 主に CNG チャートを使用し、Gitaly、Patroni、Postgres のデプロイには Omnibus を使用します。Service Ping データは送信されません。
Cells
~deployment-type:saas-gitlab-cellsCells は新興の組織的シャードデプロイメントであり、段階的に採用される予定です。Cells は Dedicated テナントデプロイメントツール(Instrumentor)を使用しているため、多くの点で Dedicated と同様にプロビジョニングされます。
Service Ping 属性 値 installation_typegitlab-cloud-native-imagegitlab_dedicatedtruegitlab_environment_toolkittrue自律システム(ASN) Google Dedicated
~deployment-type:saas-dedicatedDedicated は シングルテナント の SaaS オファリングです。 Dedicated は主に GitLab Environment Toolkit(GET)ハイブリッドを使用します。 GET は、アプリケーションサービスに Omnibus(Gitaly 向け)とクラウドネイティブチャート(CNG)を使用します。可能な場合は、Postgres(RDS、CloudSQL)、Redis(ElastiCache、MemoryStore)、Kubernetes(EKS、GKE)などのクラウドマネージドサービスが優先されます。
GitLab.com とは異なり、Dedicated のオペレーターは GitLab 管理コンソールやその他の GitLab アプリケーションへの直接アクセス権を持っていません。 これらのテナントは大規模での運用を想定しているため、機能フラグや設定オプションなど、テナントごとの設定オプションは最小限に抑えられています。
Commercial
~deployment-type:saas-dedicated-commCommercial Dedicated は AWS のみにデプロイされますが、Google Cloud も利用可能(ただし商業的にはサポートされていません)。 現在、Commercial Dedicated は GitLab Geo でレプリケートされる唯一の SaaS プラットフォームです。
Service Ping 属性 値 installation_typegitlab-cloud-native-imagegitlab_dedicatedtruegitlab_environment_toolkittrue自律システム(ASN) Amazon US Public Sector
~deployment-type:saas-dedicated-uspubsecAWS GovCloud にデプロイされます。
Service Ping 属性 値 installation_typegitlab-cloud-native-imagegitlab_dedicatedtruegitlab_environment_toolkittrue自律システム(ASN) AWS GovCloud
セルフマネージド
~deployment-type:smセルフマネージドの分類は、顧客によってデプロイおよび運用されるすべての GitLab インスタンスをカバーします。
クラウドプロバイダーデプロイ
~deployment-type:sm-cloud「クラウドプロバイダー」とは、GET でサポートされている 3 つのクラウドプロバイダー(AWS、Azure、Google Cloud)を指します。 その他のクラウドプロバイダーはオンプレミスとして分類されます。 クラウドプロバイダーホスト環境を他のセルフマネージド/オンプレミス環境と区別することが重要です。 これらの環境は比較的均質な環境を提供し、PostgresSQL(RDS、CloudSQL)、Redis(ElastiCache、MemoryStore)、Kubernetes(EKS、GKE)などのマネージドサービスをサポートし、Secrets Management ツールのデプロイに重要な Key Management Services などのリソースも利用できます。
GitLab Environment Toolkit(GET)プロビジョニング
~deployment-type:sm-getGitLab Environment Toolkit は AWS、Google Cloud、Microsoft Azure のクラウド環境をターゲットにしています。すべての GET デプロイメントターゲットはリファレンスアーキテクチャに含まれており、ノード数と適切なノードサイジングのガイドラインを提供しています。
GET Omnibus VM ベース
~deployment-type:sm-get-omnibusすべてのサービスは Omnibus を使用して VM インスタンスにデプロイされます。 顧客は Omnibus マネージド VM またはクラウドマネージド代替を選択できます。
Service Ping 属性 値 installation_typeomnibus-gitlabgitlab_dedicatedfalsegitlab_environment_toolkittrueGET クラウドネイティブ
~deployment-type:sm-get-cng部分的に(ハイブリッド)または完全に Kubernetes を使用してデプロイされた任意の GET 環境。現時点では、Service Ping データを使用してハイブリッドとフルクラウドネイティブを区別できません。
Service Ping 属性 値 installation_typegitlab-cloud-native-imagegitlab_dedicatedfalsegitlab_environment_toolkittrueハイブリッド
~deployment-type:sm-get-hybridGET はステートレスサービス(Sidekiq、Webservice など)のみを Kubernetes にデプロイします。Gitaly は Omnibus を使用して VM にデプロイされ、顧客は Postgres と Redis を Omnibus マネージド VM またはクラウドマネージド代替から選択できます。
このデプロイメントは GitLab テナントデプロイメントツール(Instrumentor)でドッグフーディングされています。
フルクラウドネイティブ
~deployment-type:sm-get-cng-fullGET はステートレスサービス(Sidekiq、Webservice など)のみを Kubernetes にデプロイし、Gitaly も Kubernetes にデプロイします。ステートフルサービス(Redis、Postgres)はクラウドマネージドサービスでプロビジョニングする必要があります。
ops.gitlab.netがこのデプロイメントタイプをドッグフーディングしています。
セルフプロビジョニング
~deployment-type:sm-cloud-spクラウドリソースのプロビジョニングに GET を使用しないクラウドデプロイ GitLab インスタンスです。 理想的には、これらの顧客をより一貫した体験のために GET へ移行させるべきですが、様々な理由でまだそうしていません。 これらの顧客とオンプレミスの主な違いは、これらの顧客は Postgres、Redis、Kubernetes、KMS などのマネージドサービスを使用できるオプションがあることです。
クラウド Omnibus
~deployment-type:sm-cloud-omnibus顧客はクラウドにデプロイされており、Omnibus を使用していますが GET は使用していません。
Service Ping 属性 値 installation_typeomnibus-gitlabgitlab_dedicatedfalsegitlab_environment_toolkitfalse自律システム(ASN) 認識済みクラウド Omnibus シングルノード
~deployment-type:sm-cloud-omnibus-singleGitLab は Omnibus を使用して単一のノード/VM インスタンスにデプロイされます。 すべてのアプリケーションサービスは Omnibus でデプロイされます。 顧客は RDS などのマネージドサービスを使用している場合があります。
dev.gitlab.orgはこのアプローチでデプロイされています。Omnibus マルチノード
~deployment-type:sm-cloud-omnibus-multiGitLab は Omnibus を使用して複数の VM にデプロイされます。マルチノードクラスター内の各ノード間の調整と設定のメカニズムは提供されていません。これは顧客に委ねられており、手動または Chef、Ansible、SaltStack などのツールで行うことができます。
Kubernetes CNG Helm チャート
~deployment-type:sm-cloud-sp-cngGitLab は顧客がプロビジョニングおよび管理する Kubernetes クラスターにデプロイされます。
~deployment-type:sm-get-cngと同様に、Postgres と Redis は提供されず、顧客が個別にプロビジョニングする必要があります。 顧客は GitLab Operator を使用している場合と使用していない場合があります。Service Ping 属性 値 installation_typegitlab-cloud-native-imageorgitlab-operator-2gitlab_dedicatedfalsegitlab_environment_toolkitfalse自律システム(ASN) 認識済みクラウド
オンプレミス
~deployment-type:onpremこのドキュメントにおけるオンプレミス(「on-prem」)とは、クラウドベースでないデプロイメント、または AWS、Google Cloud、Azure 以外のクラウドへのデプロイメントを指します。 一般的に、オンプレミスデプロイメントでは Postgres、Redis、Kubernetes などのマネージドサービスを使用できません。 歴史的に、Omnibus はこれらのサービスを設定する手段を提供してきましたが、ユーザーが独自のものを持ち込むこともできます。 Secrets Management などの提案された新サービスの中には、オンプレミスで PKCS11 互換ハードウェアの統合が必要になる場合があるなど、固有の課題があります。
オンプレミス Omnibus
~deployment-type:onprem-omnibus顧客は認識済み ASN クラウドにはデプロイされておらず、Omnibus を使用しています。
Service Ping 属性 値 installation_typeomnibus-gitlabgitlab_dedicatedfalsegitlab_environment_toolkitfalse自律システム(ASN) 未認識 Omnibus VM ベース シングルノード
~deployment-type:onprem-omnibus-single顧客は独自の Postgres、Redis を持ち込むことができますが、多くの場合、これらのノードはローカルの Omnibus マネージドサービスで動作しています。
Omnibus VM ベース マルチノード
~deployment-type:onprem-omnibus-multi顧客は GitLab をデプロイするための独自の設定ツール(Ansible、Chef、Saltstack など)を構築する必要があります。ノード数とノードサイズを選択するためにリファレンスアーキテクチャに従うことを顧客に推奨します。
Kubernetes CNG Helm チャート
~deployment-type:onprem-cng顧客は独自の Kubernetes クラスター、独自の Redis、および独自の Postgres を提供します。 Kubernetes 上の Gitaly サポートは未成熟ですが利用可能です。
Service Ping 属性 値 installation_typegitlab-cloud-native-imageorgitlab-operator-2gitlab_dedicatedfalsegitlab_environment_toolkitfalse自律システム(ASN) 未認識
リソース
| 説明 | 場所 |
|---|---|
| リリースドキュメント | リンク |
| リリース関連タスクの Issue トラッカー | リンク |
| デリバリーチームの Issue トラッカー | リンク |
| リリースマネージャースケジュール | リンク |
| デプロイメントプロセス | リンク |
| リリースプロセス | リンク |
| メンテナンスポリシー | リンク |
