无法 link Kubernetes 部署到 GitLab 环境页面
Can't link Kubernetes deployment to GitLab Environment page
我正在尝试为 SpringBoot 应用程序设置完整的 CI/CD 管道,从 GitLab 存储库开始(参见 https://gitlab.com/pietrom/clock-api)并自动部署到由 [=42] 支持的 Kubernetes 集群=]云平台。
我的管道工作得很好(应用程序已构建,它被打包为 Docker 图像,该图像发布在我的项目注册表中,并为 staging
和 production
环境),除了一个细节: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
包含请求的注释,用于 deployment 和 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_SLUG
和 ENVIRONMENT
占位符在管道执行期间被 GitLab 基础设施($CI_PROJECT_PATH_SLUG
和 $CI_ENVIRONMENT_SLUG
提供的值替换(使用 sed
) ) 并且我可以在我的 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-related 变量:
https://docs.gitlab.com/ee/user/project/clusters/#deployment-variables
然后 GitLab 在内部依赖这个命名空间,并用于项目的各种 UI 页面,包括 Operations/Environment。因此,如果您遵循他们的约定,并将您的 Kubernetes 部署应用到此命名空间,GitLab 将看到您的应用程序。
在我们的工作中,我们更进一步,甚至在工作开始时 set this namespace as the default。
kubectl config set-context --current --namespace="$KUBE_NAMESPACE"
然后所有其他 kubectl
命令将默认使用此命名空间。
我正在尝试为 SpringBoot 应用程序设置完整的 CI/CD 管道,从 GitLab 存储库开始(参见 https://gitlab.com/pietrom/clock-api)并自动部署到由 [=42] 支持的 Kubernetes 集群=]云平台。
我的管道工作得很好(应用程序已构建,它被打包为 Docker 图像,该图像发布在我的项目注册表中,并为 staging
和 production
环境),除了一个细节: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
包含请求的注释,用于 deployment 和 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_SLUG
和 ENVIRONMENT
占位符在管道执行期间被 GitLab 基础设施($CI_PROJECT_PATH_SLUG
和 $CI_ENVIRONMENT_SLUG
提供的值替换(使用 sed
) ) 并且我可以在我的 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-related 变量:
https://docs.gitlab.com/ee/user/project/clusters/#deployment-variables
然后 GitLab 在内部依赖这个命名空间,并用于项目的各种 UI 页面,包括 Operations/Environment。因此,如果您遵循他们的约定,并将您的 Kubernetes 部署应用到此命名空间,GitLab 将看到您的应用程序。
在我们的工作中,我们更进一步,甚至在工作开始时 set this namespace as the default。
kubectl config set-context --current --namespace="$KUBE_NAMESPACE"
然后所有其他 kubectl
命令将默认使用此命名空间。