自動DevOpsの要件

KubernetesまたはAmazonElastic Container ServiceのAuto DevOpsを設定できます(ECS)。 Auto DevOpsの詳細については、Auto DevOpsのメインページまたはクイックスタートガイドを参照してください。

Kubernetesの自動DevOps要件

KubernetesでAuto DevOpsをフル活用するには、以下のことが必要です:

  • Kubernetes(自動レビューアプリ、自動デプロイ、自動モニタリング用)

    デプロイを有効にするには、以下のものが必要です:

    1. プロジェクト用のKubernetes 1.12+クラスタ。 最も簡単な方法は、GitLab UIを使用して新しいクラスタを作成することです。 Kubernetes 1.16+クラスタの場合は、Kubernetes 1.16+用のAuto Deployのための追加設定を実行する必要があります。
    2. NGINX Ingressは、前のステップでGitLabのKubernetesインテグレーションを設定した後、Ingress用のGitLab管理アプリをインストールすることでKubernetesクラスターにデプロイできます。

      あるいは、nginx-ingressHelmチャートを使って手動で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 AppsAuto DeployAuto Monitoringはスキップされます。

すべての要件が満たされたら、Auto DevOpsを有効にできます。

Amazon ECSの自動DevOps要件

GitLab 13.0から導入されました

Kubernetesを使用する代わりに、デプロイプラットフォームとしてAWS ECSをターゲットにすることを選択できます。

AWS ECSへのAuto DevOpsを開始するには、特定の環境変数を追加する必要があります。 そのためには、以下の手順に従ってください:

  1. プロジェクトで、Settings > CI / CDに進み、Variablesセクションを展開します。

  2. AUTO_DEVOPS_PLATFORM_TARGET 変数に以下のいずれかの値を追加して、Auto DevOps デプロイ中にターゲットとする AWS プラットフォームを指定します:

    • FARGATE 対象とするサービスがFARGATEのローンチタイプでなければならない場合。
    • ECS ECSへのデプロイ時に起動タイプのチェックを強制していない場合。

パイプラインをトリガーすると、Auto DevOpsが有効になっていて、環境変数としてAWSの認証情報が正しく入力されていれば、アプリケーションはAWS ECSにデプロイされます。

注意:GitLab Managed AppsはAWS ECSにデプロイする際には利用できません。 AWS ECS上でアプリケーション(IngressやHelpなど)を手動で設定する必要があります。
注意: 有効なAUTO_DEVOPS_PLATFORM_TARGET 変数とプロジェクトに関連付けられた Kubernetes クラスターの両方がある場合、Kubernetes へのデプロイのみが実行されます。
警告: 変数AUTO_DEVOPS_PLATFORM_TARGETECS に設定すると、Jobs/Deploy/ECS.gitlab-ci.yml テンプレートで定義されたジョブがトリガーされます。 しかし、これを単独でAUTO_DEVOPS_PLATFORM_TARGET含めるAUTO_DEVOPS_PLATFORM_TARGETことは推奨されません。 このテンプレートは Auto DevOps でのみ使用するように設計されています。 単独で含めると、予期せず変更されてパイプラインが失敗する可能性があります。 また、このテンプレート内のジョブ名も変更される可能性があります。 名前が変更されるとオーバーライドが機能しなくなるため、独自のパイプラインでこれらのジョブ名をオーバーライドしないでください。