# Requirements for Auto DevOps

> 原文：[https://docs.gitlab.com/ee/topics/autodevops/requirements.html](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)

*   [Auto DevOps requirements for Kubernetes](#auto-devops-requirements-for-kubernetes)
*   [Auto DevOps requirements for Amazon ECS](#auto-devops-requirements-for-amazon-ecs)

# Requirements for Auto DevOps[](#requirements-for-auto-devops "Permalink")

您可以为[Kubernetes](#auto-devops-requirements-for-kubernetes)或[Amazon Elastic Container Service（ECS）](#auto-devops-requirements-for-amazon-ecs)设置 Auto DevOps. 有关 Auto DevOps 的更多信息，请参见[Auto DevOps 主页](index.html)或[快速入门指南](quick_start_guide.html) .

## Auto DevOps requirements for Kubernetes[](#auto-devops-requirements-for-kubernetes "Permalink")

要充分利用 Auto DevOps 和 Kubernetes，您需要：

*   **Kubernetes** （用于[自动审阅应用程序](stages.html#auto-review-apps) ， [自动部署](stages.html#auto-deploy)和[自动监视](stages.html#auto-monitoring) ）

    要启用部署，您需要：

    1.  您的项目的[Kubernetes 1.12+集群](../../user/project/clusters/index.html) . 最简单的方法是[使用 GitLab UI](../../user/project/clusters/add_remove_clusters.html#create-new-cluster)创建[新集群](../../user/project/clusters/add_remove_clusters.html#create-new-cluster) . 对于 Kubernetes 1.16+群集，您必须为[Auto Deploy for Kubernetes 1.16+](stages.html#kubernetes-116)执行附加配置.
    2.  NGINX 入口. 在上一步中配置了 GitLab 的 Kubernetes 集成之后，可以通过安装[用于 Ingress](../../user/clusters/applications.html#ingress)的[GitLab 托管的应用程序，](../../user/clusters/applications.html#ingress)将其部署到 Kubernetes 集群中.

        另外，您可以使用[`nginx-ingress`](https://github.com/helm/charts/tree/master/stable/nginx-ingress) Helm 图表手动安装 Ingress.

        **注意：**如果您使用自己的 Ingress 而不是 GitLab 托管应用程序提供的 Ingress，请确保您至少运行的是 NGINX Ingress 0.9.0 版，并[启用 Prometheus](https://github.com/helm/charts/tree/master/stable/nginx-ingress#prometheus-metrics)指标以显示响应指标. 您还必须使用`prometheus.io/scrape: "true"`和`prometheus.io/port: "10254"` [注释](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/)由 Prometheus 抓取的 NGINX Ingress 部署.
*   **基本域** （用于[自动审阅应用程序](stages.html#auto-review-apps) ， [自动部署](stages.html#auto-deploy)和[自动监视](stages.html#auto-monitoring) ）

    您需要一个配置了通配符 DNS 的域，所有您的 Auto DevOps 应用程序都将使用该域. 如果您使用的是[GitLab 托管的 Ingress 应用程序](../../user/clusters/applications.html#ingress) ，则会自动为您配置 URL 端点.

    您还必须[指定 Auto DevOps 基本域](index.html#auto-devops-base-domain) .

*   **GitLab Runner** （所有阶段）

    必须将 Runner 配置为运行 Docker，通常使用[Docker](https://docs.gitlab.com/runner/executors/docker.html)或[Kubernetes](https://docs.gitlab.com/runner/executors/kubernetes.html)执行程序，并[启用特权模式](https://docs.gitlab.com/runner/executors/docker.html) . Runner 不需要安装在 Kubernetes 集群中，但是 Kubernetes 执行器易于使用，并且可以自动缩放. 您还可以使用[Docker Machine 将](https://docs.gitlab.com/runner/install/autoscaling.html)基于 Docker 的 Runner 配置为自动缩放.

    如果您在第一步中配置了 GitLab 的 Kubernetes 集成，则可以通过[为 GitLab Runner](../../user/clusters/applications.html#gitlab-runner)安装由[GitLab 管理的应用程序](../../user/clusters/applications.html#gitlab-runner)将其部署到集群中.

    运动员应注册为[共享亚军](../../ci/runners/README.html#shared-runners)整个 GitLab 实例或[特定的运动员](../../ci/runners/README.html#specific-runners)被分配到具体项目（默认值，如果你已经安装了 GitLab 亚军管理应用程序）.

*   **Prometheus** (for [Auto Monitoring](stages.html#auto-monitoring))

    要启用自动监控，您需要在集群内部或外部安装 Prometheus，并配置为刮取 Kubernetes 集群. 如果已经配置了 GitLab 的 Kubernetes 集成，则可以通过安装[Prometheus](../../user/clusters/applications.html#prometheus)的[GitLab 托管的应用程序](../../user/clusters/applications.html#prometheus)将其部署到集群中.

    必须为项目启用[Prometheus 服务](../../user/project/integrations/prometheus.html)集成，或者将其作为整个 GitLab 安装的[默认服务模板](../../user/project/integrations/services_templates.html)启用.

    要获取响应指标（除了系统指标之外），您必须[配置 Prometheus 来监视 NGINX](../../user/project/integrations/prometheus_library/nginx_ingress.html#configuring-nginx-ingress-monitoring) .

*   **cert-manager** （可选，用于 TLS / HTTPS）

    要为您的应用程序启用 HTTPS 端点，必须安装 cert-manager，这是一个本地 Kubernetes 证书管理控制器，可帮助颁发证书. 在您的群集上安装 cert-manager 会发出[Let's Encrypt](https://letsencrypt.org/)证书，并确保证书有效和最新. 如果已经配置了 GitLab 的 Kubernetes 集成，则可以通过安装[GitLab 托管的 cert-manager 应用程序](../../user/clusters/applications.html#cert-manager)将其部署到集群中.

如果您没有安装 Kubernetes 或 Prometheus，则将跳过[Auto Review Apps](stages.html#auto-review-apps) ， [Auto Deploy](stages.html#auto-deploy)和[Auto Monitoring](stages.html#auto-monitoring) .

满足所有要求后，您可以[启用 Auto DevOps](index.html#enablingdisabling-auto-devops) .

## Auto DevOps requirements for Amazon ECS[](#auto-devops-requirements-for-amazon-ecs "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/208132) in GitLab 13.0.

您可以选择将[AWS ECS](../../ci/cloud_deployment/index.html)定位为部署平台，而不是使用 Kubernetes.

要开始使用针对 AWS ECS 的 Auto DevOps，您必须添加特定的环境变量. 这样做，请按照下列步骤操作：

1.  在您的项目中，转到**"设置">" CI / CD"，**然后展开" **变量"**部分.

2.  通过添加具有以下值之一的`AUTO_DEVOPS_PLATFORM_TARGET`变量，指定在 Auto DevOps 部署期间要定位的 AWS 平台：

    *   `FARGATE`如果您的目标服务必须启动类型 FARGATE 的.
    *   `ECS`如果部署到 ECS，当你不执行任何启动类型检查.

触发管道时，如果启用了 Auto DevOps 且已正确[输入 AWS 凭证作为环境变量](../../ci/cloud_deployment/index.html#deploy-your-application-to-the-aws-elastic-container-service-ecs) ，则您的应用程序将部署到 AWS ECS.

**注意：**部署到 AWS ECS 时， [GitLab 托管应用程序](../../user/clusters/applications.html)不可用. 您必须在 AWS ECS 上手动配置应用程序（例如 Ingress 或 Help）.**注意：**如果您同时具有有效的`AUTO_DEVOPS_PLATFORM_TARGET`变量和与项目绑定的 Kubernetes 集群，则仅运行 Kubernetes 的部署.**警告：**将`AUTO_DEVOPS_PLATFORM_TARGET`变量设置为`ECS`将触发[`Jobs/Deploy/ECS.gitlab-ci.yml`模板中](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/Deploy/ECS.gitlab-ci.yml)定义的[`Jobs/Deploy/ECS.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/Deploy/ECS.gitlab-ci.yml) . 但是，不建议单独[包含](../../ci/yaml/README.html#includetemplate)它. 该模板仅设计用于 Auto DevOps. 如果单独包含它，它可能会发生意外更改，从而导致您的管道失败. 同样，此模板中的作业名称也可能会更改. 不要在自己的管道中覆盖这些作业的名称，因为当名称更改时，覆盖将停止工作.