自動DevOpsの要件
KubernetesまたはAmazonElastic Container ServiceのAuto DevOpsを設定できます(ECS)。 Auto DevOpsの詳細については、Auto DevOpsのメインページまたはクイックスタートガイドを参照してください。
Kubernetesの自動DevOps要件
KubernetesでAuto DevOpsをフル活用するには、以下のことが必要です:
-
Kubernetes(自動レビューアプリ、自動デプロイ、自動モニタリング用)
デプロイを有効にするには、以下のものが必要です:
- プロジェクト用のKubernetes 1.12+クラスタ。 最も簡単な方法は、GitLab UIを使用して新しいクラスタを作成することです。 Kubernetes 1.16+クラスタの場合は、Kubernetes 1.16+用のAuto Deployのための追加設定を実行する必要があります。
-
NGINX Ingressは、前のステップでGitLabのKubernetesインテグレーションを設定した後、Ingress用のGitLab管理アプリをインストールすることでKubernetesクラスターにデプロイできます。
あるいは、
nginx-ingress
Helmチャートを使って手動でIngressをインストールすることもできます。注:GitLabのマネージドアプリが提供するIngressではなく、独自のIngressを使用する場合は、NGINX Ingressのバージョン0.9.0以上を実行し、レスポンスのメトリクスを表示するためにPrometheusのメトリクスを有効にしていることを確認してください。 また、prometheus.io/scrape: "true"
とprometheus.io/port: "10254"
を使用して、PrometheusによってスクレイピングされるようにNGINX Ingressデプロイに注釈を付ける必要があります。
-
ベースドメイン(自動レビューアプリ、自動デプロイ、自動モニタリング用
ワイルドカードDNSで設定されたドメインが必要で、Auto DevOpsアプリケーションはすべてこれを使用します。Ingress用のGitLab管理アプリを使用している場合、URLエンドポイントは自動的に設定されます。
また、Auto DevOpsのベースドメインを指定する必要があります。
-
GitLabRunner(全ステージ用)
RunnerはDockerを実行するように設定する必要があり、通常は特権モードを有効にしてDockerまたはKubernetesexecutorを使用します。 RunnerはKubernetesクラスタにインストールする必要はありませんが、Kubernetes executorは使いやすく、自動的にオートスケールします。 DockerMachineを使用して、DockerベースのRunnerをオートスケールするように設定することもできます。
最初のステップでGitLabのKubernetesインテグレーションを設定したなら、GitLab Runner用のGitLab管理アプリをインストールすることでクラスターにデプロイできます。
Runnerは、GitLabインスタンス全体の共有Runnerとして登録するか、特定のプロジェクトに割り当てる特定のRunnerとして登録します(GitLab Runner管理アプリケーションをインストールした場合のデフォルト)。
-
プロメテウス(自動監視用)
Auto Monitoringを有効にするには、Prometheusをクラスタの内部または外部にインストールし、Kubernetesクラスタをスクレイピングするように設定する必要があります。 GitLabのKubernetesインテグレーションを設定した場合は、Prometheus用のGitLab管理アプリをインストールすることでクラスタにデプロイできます。
Prometheusサービスインテグレーションはプロジェクトで有効になっているか、GitLabインストール全体のデフォルトサービステンプレートとして有効になっている必要があります。
システムメトリクスに加えて)レスポンスメトリクスを取得するには、NGINXを監視するようにPrometheusを設定する必要があります。
-
cert-manager(オプション、TLS/HTTPS用)
アプリケーションのHTTPSエンドポイントを有効にするには、証明書の発行を支援するネイティブのKubernetes証明書管理コントローラであるcert-managerをインストールする必要があります。 クラスターにcert-managerをインストールすると、Let’s Encrypt証明書が発行され、証明書が有効で最新であることが確認されます。 GitLabのKubernetesインテグレーションを設定した場合は、cert-manager用のGitLab-managedアプリをインストールすることでクラスターにデプロイできます。
KubernetesまたはPrometheusがインストールされていない場合、Auto Review Apps、Auto Deploy、Auto Monitoringはスキップされます。
すべての要件が満たされたら、Auto DevOpsを有効にできます。
Amazon ECSの自動DevOps要件
GitLab 13.0から導入されました。
Kubernetesを使用する代わりに、デプロイプラットフォームとしてAWS ECSをターゲットにすることを選択できます。
AWS ECSへのAuto DevOpsを開始するには、特定の環境変数を追加する必要があります。 そのためには、以下の手順に従ってください:
-
プロジェクトで、Settings > CI / CDに進み、Variablesセクションを展開します。
-
AUTO_DEVOPS_PLATFORM_TARGET
変数に以下のいずれかの値を追加して、Auto DevOps デプロイ中にターゲットとする AWS プラットフォームを指定します:-
FARGATE
対象とするサービスがFARGATEのローンチタイプでなければならない場合。 -
ECS
ECSへのデプロイ時に起動タイプのチェックを強制していない場合。
-
パイプラインをトリガーすると、Auto DevOpsが有効になっていて、環境変数としてAWSの認証情報が正しく入力されていれば、アプリケーションはAWS ECSにデプロイされます。
AUTO_DEVOPS_PLATFORM_TARGET
変数とプロジェクトに関連付けられた Kubernetes クラスターの両方がある場合、Kubernetes へのデプロイのみが実行されます。AUTO_DEVOPS_PLATFORM_TARGET
をECS
に設定すると、Jobs/Deploy/ECS.gitlab-ci.yml
テンプレートで定義されたジョブがトリガーされます。 しかし、これを単独でAUTO_DEVOPS_PLATFORM_TARGET
含めるAUTO_DEVOPS_PLATFORM_TARGET
ことは推奨されません。 このテンプレートは Auto DevOps でのみ使用するように設計されています。 単独で含めると、予期せず変更されてパイプラインが失敗する可能性があります。 また、このテンプレート内のジョブ名も変更される可能性があります。 名前が変更されるとオーバーライドが機能しなくなるため、独自のパイプラインでこれらのジョブ名をオーバーライドしないでください。