gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:15:31 26 4
gpt4 key购买 nike

我正在尝试为 SpringBoot 应用程序设置完整的 CI/CD 管道,从 GitLab 存储库(请参阅 https://gitlab.com/pietrom/clock-api )开始并自动部署到由 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.

我用谷歌搜索了一下,但我无法解决这个问题:我的 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 占位符在管道执行期间被替换(使用 sed ),由 GitLab 基础设施提供的值(分别为 $CI_PROJECT_PATH_SLUG$CI_ENVIRONMENT_SLUG ),我可以在我的 GCP 控制台中看到预期值,但 GitLab 集成似乎不起作用。

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

在此先感谢您的帮助!

最佳答案

这也是一个重要的部分:

make sure your deployments are in Kubernetes namespace



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默认情况下,命令将使用此命名空间。

关于deployment - 无法将 Kubernetes 部署链接到 GitLab 环境页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com