テストのための GitLab 自動デプロイメント
要件
-
openssl
ユーティリティ kubectl
task
- クラスター相互作用ツール(いずれか1つ):
gcloud
kind
パラメータ
パラメータは環境変数を通して渡されます:
変数名 | 必須 | デフォルト | 説明 |
---|---|---|---|
GITLAB_CHART_VERSION | いいえ | 最新 | 使用するチャートのバージョン。オペレーターのTAG 内で提供される Chart と一致する必要があります。 |
GITLAB_CHART_REPO | いいえ | https://gitlab.com/gitlab-org/charts/gitlab | GitLab ChartリポジトリHTTP URI。主にデフォルトのKinD設定を取得するために使用します。 |
IMG | いいえ | registry.gitlab.com/gitlab-org/cloud-native/gitlab-operator | オペレータ コンテナ イメージ名 |
TAG | いいえ | master | オペレータコンテナ画像タグ。ほとんどの場合、オーバーライドが必要です。 |
GITLAB_CHART_DIR | yes | GitLab Chartレポのクローンへのパス | |
GITLAB_OPERATOR_DIR | いいえ | . | GitLab Operatorレポのクローンへのパス |
GITLAB_OPERATOR_MANIFEST | いいえ | Operator デプロイ用のマニフェストへのオプションの参照。 空の場合、${GITLAB_OPERATOR_DIR} から自動生成されます。 注意: 適切なイメージとタグを参照するには、IMG とTAG 環境変数を設定します。 | |
GITLAB_CR_DEPLOY_MODE | いいえ | selfsigned | デプロイのモードを選択:selfsigned またはcertmanager
|
GITLAB_OPERATOR_DOMAIN | いいえ |
${LOCAL_IP}.nip.io KinD用、cloud-native.win 他のプラットフォーム用 | GitLab(オペレーション)デプロイ用ドメイン |
GITLAB_HOST | いいえ | *.${GITLAB_OPERATOR_DOMAIN} | GitLabエンドポイントの自己署名証明書に使用するコモンネーム |
GITLAB_KEY_FILE | いいえ | gitlab.key | 自己署名証明書キーファイル |
GITLAB_CERT_FILE | いいえ | gitlab.crt | 自己署名証明書ファイル |
GITLAB_PAGES_HOST | いいえ | *.pages.${GITLAB_OPERATOR_DOMAIN} | GitLab Pagesエンドポイントの自己署名証明書に使用するコモンネーム |
GITLAB_PAGES_KEY_FILE | いいえ | pages.key | 自己署名証明書キーファイル |
GITLAB_PAGES_CERT_FILE | いいえ | pages.crt | 自己署名証明書ファイル |
GITLAB_ACME_EMAIL | いいえ | 出力git config user.email
| cert-manager に使用される電子メール。KinDデプロイでは必要ありません。 |
GITLAB_RUNNER_TOKEN | いいえ | Runner Token、空の場合は実行中のGitLabインスタンスから自動取得されます。 | |
KIND | いいえ | kind | KinDのコマンドライン実行ファイル名 |
KIND_CLUSTER_NAME | いいえ | gitlab | KinDクラスター名 |
KIND_IMAGE | いいえ | kindest/node:v1.18.19 | KinD の--image 引数の値。 |
KIND_LOCAL_IP | はい。 | ドメインの証明書などをプロビジョニングするために必要なローカルIP${LOCAL_IP}.nip.io
| |
KUBECTL | いいえ | kubectl |
kubectl コマンドへのパス |
HELM | いいえ | helm |
helm コマンドへのパス |
TASK | いいえ | task |
task コマンドへのパス |
ツールポインタ変数 ($KIND
,$KUBECTL
,$HELM
, etc.)
ツールポインタ変数の主な用途は、特定のツールパスやラッパースクリプトへのパスを指定することです(例えば、kubectl
に対するk
のように)。
これらの変数の別の用途の1つは、デバッグ情報を取得することです:
KUBECTL="echo kubectl" provision_and_deploy.sh deploy_operator
しかし、これはbash -x provision_and_deploy.sh
を使うことでも実現できます。
GCP
Cert-Managerを使用した例(gitlab-operator
repoのルートから実行):
export GITLAB_CHART_DIR=~/work/gitlab \
GITLAB_OPERATOR_DOMAIN="mydomain.k8s-ft.win" \
GITLAB_ACME_EMAIL="somebody@gitlab.com" \
GITLAB_CR_DEPLOY_MODE="certmanager"
# https://docs.gitlab.com/charts/installation/cloud/gke.html
PROJECT="gcp-project-123" CLUSTER_NAME="mydomain" \
bash ${GITLAB_CHART_DIR}/scripts/gke_bootstrap_script.sh up
# ...wait for provisioning to complete
scripts/provision_and_deploy.sh generic_deploy
あるいは、パイプラインで生成されたCRを使用します(例えば、./123-my-branch.yaml
にダウンロードされます):
cd scripts
export GITLAB_CHART_DIR=~/work/gitlab \
GITLAB_OPERATOR_DIR=~/work/gitlab-operator \
GITLAB_OPERATOR_MANIFEST=./123-my-branch.yaml \
GITLAB_OPERATOR_DOMAIN="mydomain.k8s-ft.win" \
GITLAB_ACME_EMAIL="somebody@gitlab.com" \
GITLAB_CR_DEPLOY_MODE="certmanager"
PROJECT="gcp-project-123" CLUSTER_NAME="mydomain" \
bash ${GITLAB_CHART_DIR}/scripts/gke_bootstrap_script.sh up
# ...wait for provisioning to complete
./provision_and_deploy.sh generic_deploy
上記のコマンドは、scripts/
ディレクトリ内部から実行されています(GITLAB_OPERATOR_DIR
を使用していることに注意してください)。
自己署名証明書を使ってデプロイすることもできます。その場合は、GITLAB_OPERATOR_DOMAIN
ではなく、KIND_LOCAL_IP
(”クラスターIP “を使用)を指定します。
KinD
デフォルトでは、デプロイは自己署名証明書で行われます:
export KIND_CLUSTER_NAME=gitlab \
KIND_LOCAL_IP=192.168.3.194 \
GITLAB_CHART_DIR=~/work/gitlab
scripts/provision_and_deploy.sh kind_deploy
あるいは、build manifest
ジョブのパイプラインで生成された CR を使用します (./123-my-branch.yaml
などにダウンロードされます):
export KIND_CLUSTER_NAME=gitlab \
KIND_LOCAL_IP=192.168.3.194 \
GITLAB_CHART_DIR=~/work/gitlab \
GITLAB_OPERATOR_MANIFEST=./123-my-branch.yaml \
GITLAB_OPERATOR_DIR=~/work/gitlab-operator
scripts/provision_and_deploy.sh kind_deploy
以上です!これで、https://gitlab.(your IP).nip.io
にナビゲートし、root パスワードでログインできるようになります。
注: KinDのIngress用の証明書を生成するためにcert-manager
を使用することは、KinDインスタンスが公開されていない限り不可能です。
ランナーのデプロイ
ベースデプロイが完了したら、ランナーデプロイを行います(エクスポートされた変数はそのままです):
scripts/provision_and_deploy.sh runner_deploy
あるいは、すべてを一度に行うこともできます(例としてkind
deploy を使用します):
scripts/provision_and_deploy.sh kind_deploy runner_deploy