无法将Kubernetes部署链接到GitLab环境页面

时间:2019-07-17 16:25:39

标签: deployment kubernetes gitlab pipeline environment

我正在尝试从GitLab存储库(请参阅https://gitlab.com/pietrom/clock-api)为SpringBoot应用程序建立完整的CI / CD管道,然后自动部署到由Google Cloud Platform支持的Kubernetes集群。

我的管道运行正常(该应用程序已构建,已打包为Docker映像,该映像已发布在我的项目注册表中,并且已在stagingproduction环境中启动了容器),除了详细信息之外:Operation/Environments页显示了两种环境,并显示以下警告:

Kubernetes deployment not found
To see deployment progress for your environments, make sure your deployments are in Kubernetes namespace <projectname>, and annotated with app.gitlab.com/app=$CI_PROJECT_PATH_SLUG and app.gitlab.com/env=$CI_ENVIRONMENT_SLUG.

我在Google上搜索了一下,但无法解决此问题:我的deployment.yml包含请求的注释,分别用于部署 pod

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: clock-api-ENVIRONMENT
  annotations:
    app.gitlab.com/app: "PROJECT_PATH_SLUG"
    app.gitlab.com/env: "ENVIRONMENT"

spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: ENVIRONMENT
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "8080"
        prometheus.io/path: "/actuator/prometheus"
        app.gitlab.com/app: "PROJECT_PATH_SLUG"
        app.gitlab.com/env: "ENVIRONMENT"
    spec:
      containers:
        - name: clock-api-ENVIRONMENT
          image: registry.gitlab.com/pietrom/clock-api
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
      imagePullSecrets:
        - name: registry.gitlab.com

PROJECT_PATH_SLUGENVIRONMENT占位符在管道执行期间使用GitLab基础设施提供的值(分别为sed$CI_PROJECT_PATH_SLUG)(使用$CI_ENVIRONMENT_SLUG)和我可以在我的GCP控制台中看到期望的值,但是GitLab集成似乎无法正常工作。

我遗漏了一些东西,但是我无法弄清楚我的部署设置和可用的官方文档here之间有什么区别。

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这也是重要的部分:

  

确保您的部署位于Kubernetes命名空间中

GitLab尝试管理附加的Kubernetes集群中的名称空间-为每个新的GitLab项目创建一个新的名称空间。它从项目名称和项目ID生成命名空间。

有时GitLab无法创建名称空间,例如,在创建项目后 后添加集群时。这可能是一个错误,这就是他们如何克服它的问题in AutoDevOps

  function ensure_namespace() {
    kubectl get namespace "$KUBE_NAMESPACE" || kubectl create namespace "$KUBE_NAMESPACE"
  }

此环境变量$KUBE_NAMESPACE-由GitLab以及许多其他与Kubernetes相关的变量自动定义: https://docs.gitlab.com/ee/user/project/clusters/#deployment-variables

然后,GitLab内部依赖于此命名空间,并用于项目的各种UI页面,包括操作/环境。因此,如果您遵循它们的约定,并将您的Kubernetes部署应用于此名称空间,则GitLab将看到您的应用程序。

在我们的工作中,我们更进一步,在工作开始之初甚至set this namespace as the default

kubectl config set-context --current --namespace="$KUBE_NAMESPACE"

然后所有其他kubectl命令将默认使用此命名空间。