Staging Ref 環境

Staging Ref 環境に関する詳細情報

Staging Ref

Staging Ref は、最新の Staging Canary コードを本番前テストするためのサンドボックス環境です。環境への完全なアクセスとデータ制御を持つことができます。

名前URL目的デプロイデータベースターミナルアクセスSlack チャンネル
Staging Refstaging-ref.gitlab.com本番前テスト頻繁(gstg-cny と並行)独立したローカル全エンジニア#staging-ref

目的

  • エンジニアリング部門のテストニーズを本番に近い環境でカバーする
  • 管理者テストアクセス
    • 現在の Staging(gstg)には顧客データが含まれており、エンジニアリングチームへのより多くのアクセス付与を妨げています。
  • 異なる有料ティアのテスト
  • テストの民主化とより良いテストデータ
  • テストアカウントへのより良いアクセスとより広い権限
  • エンジニア向けのパフォーマンスに優れたサンドボックス環境

環境情報

デプロイプロセス

Staging Ref のデプロイは Staging Canary デプロイと並行して実行されます。DeployerStaging-Ref GET Config のジョブをトリガーして環境を更新します。新しいデプロイについての通知は #announcements Slack チャンネルに送信されます。

Staging Ref パイプラインはデプロイをブロックしません。gstg-ref へのデプロイに失敗がある場合は、@release-managers に連絡してください。

@startuml staging-ref
left to right direction

card "**Deployment**" as deploy #667ab3

card "gstg-ref" as gstg_ref #ffee9a {
 together {
  card "**Deployer**" as deployer #6a9be7
  card "**Staging-Ref GET Config**" as stg_ref_get #FF8C00
 }
}

card "**gstg-cny**" as gstg_cny #ffee9a
card "**gstg**" as gstg #ffd59a
card "**gprd-cny**" as gprd_cny #ffd500
card "**gprd**" as gprd #7966b3
card "**QA**" as gstg_cny_qa #ffa7db
card "**QA**" as gstg_qa #ffa7db
card "**QA**" as gprd_cny_qa #ffa7db

deploy -[#554488]-> gstg_ref
deployer -[#554488]-> stg_ref_get

deploy -[#554488]-> gstg_cny
gstg_cny -[#554488]-> gstg_cny_qa
gstg_cny_qa -[#554488]-> gprd_cny
gprd_cny -[#554488]-> gprd_cny_qa
gprd_cny_qa -[#554488]-> gstg
gstg -[#554488]-> gstg_qa
gstg_qa -[#554488]-> gprd

@enduml

Staging Ref の使い方

Staging Ref は、最新の Staging(gstg-cny)コードをテストしたいエンジニア向けの安全なプレイグラウンドです。Staging Ref には、完全なサンドボックス環境として機能させるいくつかの利点があります:

  • Staging Ref のデプロイはデプロイプロセスをブロックせず、GitLab エンジニアであれば誰でも調整または更新できます。そのため、GitLab エンジニアは広い権限を持ち、環境を完全に制御できます。
  • 環境は 3k ハイブリッドアーキテクチャに従っているため、既存の Staging(gstg)よりも高性能で、必要に応じて負荷テストに使用できます。

環境にサインインするには、staging-ref.gitlab.com にアクセスし、「Sign in with Google」オプションで GitLab Google アカウントを使用してください。

サインイン後は、必要に応じて環境を使用できます。テスト後に環境に破壊的な変更が加えられたり、問題のある状態になった場合は、環境の再構築をリクエストしてください。#staging-ref Slack チャンネルに連絡するか、Staging-Ref GET Config で Issue を作成してください。プロセスは Staging-Ref GET Config で自動化されており、完了まで約 1 時間かかります。

フィーチャーフラグの有効化

ChatOps コマンド を使用して、Staging Ref のフィーチャーフラグを有効または無効にできます。このコマンドは #staging-ref Slack チャンネルで実行できます。

管理者アクセス

ユーザーを管理者に昇格させるには、1Password の Engineering ボールトの Staging Ref credentials から管理者アカウントを使用してサインインしてください。その後、Admin Area のユーザーページ に移動し、ユーザーのアクセスレベルを編集してください。

Staging Ref 環境は全エンジニアで共有されていることに注意してください。GitLab の Admin 設定を変更する予定がある場合は、#staging-ref Slack チャンネルを使用して変更を広く周知してください。

SSH アクセスと Rails コンソール

ローカルに gcloud または kubectl がセットアップされている場合は、ローカルターミナルから接続する に従ってください。そうでない場合は、ブラウザ経由で接続する を選択できます。

ブラウザ経由で接続する
  1. GCP プロジェクト gitlab-staging-ref へのアクセスを取得する
  2. gitlab-staging-ref プロジェクトの gitlab-toolbox ワークロードにアクセスしてください
  3. 管理対象 Pod セクションで、実行中の Pod の 名前 をクリックします。例えば、名前gitlab-toolbox-5955db475c-ng2xr のようになります。
  4. 上部付近にある Kubectl ドロップダウンをクリックしてください
  5. Exec にカーソルを合わせてサブメニューを表示してください
  6. toolbox をクリックしてください
  7. Cloud Shell が起動します
  8. コマンド kubectl exec -it gitlab-toolbox-5955db475c-ng2xr -- bash(toolboxは異なるサフィックスを持ちます)を編集し、インタラクティブおよび TTY オプションbash コマンドを実行します。
  9. この時点で、toolbox Pod にログインしているはずです。Rails コンソールを使用するには、gitlab-rails console を実行します。
  10. 詳細は Kubernetes チートシート を参照してください
ローカルターミナルから接続する
  1. staging-ref クラスター または staging-ref geo クラスター に移動してください
  2. Connect をクリックしてください
  3. コマンドをコピーし、ローカルで実行して kubeconfig を取得してください
  4. Kubernetes チートシート に従ってください
  5. 追加の開発者ツール も参照してください

GCP プロジェクトと環境へのアクセスをリクエストする

GCP プロジェクト(gitlab-staging-ref)の Staging Ref コンポーネントへのアクセスが必要な場合は、#staging-ref Slack チャンネルに連絡してください。[email protected] Google グループ に追加してもらえます。

もう一つの方法として、access-request プロジェクト で Issue を作成できます。サーバー環境へのアクセスリクエストには、マネージャーとインフラストラクチャマネージャーの承認が必要です。

GitLab の設定変更は環境への新しいデプロイによって上書きされることに注意してください。環境の更新は、#staging-ref Slack チャンネルで @release-managers にリクエストすることでロックできます。

E2E テストパイプラインのトリガー

staging-ref プロジェクトで、フルまたはスモーク E2E テストスイートをオンデマンドでトリガーできます。結果は #staging-ref Slack チャンネルにも投稿されます。

モニタリング

モニタリングの実装は (epic#594) で行われました。ドキュメントは runbooks に記載されています。

Staging Ref のダッシュボードは、Grafana の staging-ref フォルダー で確認できます。environment=gstg-ref を選択すると、Staging Ref の情報を表示する既存のダッシュボードが他にもあります。

Geo セカンダリサイトでは、https://geo.staging-ref.gitlab.com/-/grafana で Grafana が動作しています。認証情報は 1Password の Engineering ボールト内の Staging Ref credentialsEU site monitoring セクションで確認できます。

特定のダッシュボードが必要な場合や既存のダッシュボードが動作しない場合は、#staging-ref チャンネルに連絡してください。

有料プランのアップグレード

デフォルトでは、すべてのユーザーとグループは Free プランです。有料プランにアップグレードするには、管理者アカウント を使用して以下の手順を実行してください:

  1. Admin エリア に移動してください。
  2. アップグレードしたいエンティティに応じて、Users または Groups セクションを選択してください。
  3. 名前でユーザーまたはグループを検索し、「Edit」をクリックしてください。
  4. 「Plan」で必要な有料プランを選択してください。
  5. 「Save changes」をクリックしてください。

グループが Premium プランに昇格された例を確認するには、このデモ を参照してください。

既存のテストアカウント

Staging Ref 環境には、テストに使用できる既存のアカウントがあります。例えば、異なる有料プランの管理者アカウント、監査ユーザー、QA ユーザーなどです。すべての認証情報は 1Password の Engineering ボールトの Staging Ref credentials に保存されています。

SAML SSO が有効なグループでの作業

Okta アプリケーションが https://staging-ref.gitlab.com/groups/saml-sso-group の SAML IdP として機能するように設定されています。 gitlab-qa-saml-sso-user1gitlab-qa-saml-sso-user2 という名前の 2 人のユーザーが作成され、Okta に追加されてアプリケーションに割り当てられています。これらのユーザーは staging-ref 環境でも使用できます。

以下に記載されているフィールドのすべての認証情報と値は、1Password Engineering Vault の「Staging Ref credentials」の「User credentials for saml-sso-group Group」に保存されています。

SAML SSO を使用するには:

  1. 管理者 として、https://staging-ref.gitlab.com/groups/saml-sso-group にグループが存在しない場合は作成してください。

  2. このグループの料金プランをアップグレードして「Premium」にしてください。

  3. https://staging-ref.gitlab.com/groups/saml-sso-group/-/saml にアクセスして:

    • 「Enforce SSO-only authentication for web activity for this group」にチェックを入れてください
    • 「Identity provider single sign-on URL」の値を 1Password に保存されている値に更新してください
    • 「Certificate fingerprint」の値を 1Password に保存されている値に更新してください
  4. 変更を保存してください。

  5. サインアウトしてください。

https://staging-ref.gitlab.com/groups/saml-sso-group に最初にアクセスしてログインしようとすると、SAML ID をリンクするために既存のアカウントで GitLab にサインインするように求められます。ユーザー名 gitlab-qa-saml-sso-user1 または gitlab-qa-saml-sso-user2 を使用してサインインします。認証情報は 1Password にあります。

将来のイテレーションと既知の制限事項

Staging Ref 環境にはいくつかの既知の制限事項があります:

フィードバック

Staging Ref に追加のカスタム設定が必要な場合、または他のフィードバックや改善のアイデアがある場合は、#staging-ref Slack チャンネルに連絡するか、機能リクエスト を作成してください。