首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许将Gitlab部署到Kubernetes命名空间

不允许将Gitlab部署到Kubernetes命名空间
EN

Stack Overflow用户
提问于 2021-05-22 08:47:08
回答 3查看 928关注 0票数 0

如何使用Gitlab+Kubernetes将某些内容部署到特定的(例如,测试)命名空间?我遵循了Gitlab文档,但在部署时找不到如何选择特定的命名空间。

这个.gitlab-ci.yml文件..。

代码语言:javascript
复制
stages:
  - deploy
deploy:
  stage: deploy
  tags: [local]
  environment:
    name: test
    kubernetes:
      namespace: test
  script:
    - kubectl config get-contexts
    - kubectl apply -f nginx.yaml
    - kubectl get pods --namespace deploy-2-test
    - kubectl apply -f nginx.yaml --namespace test

...produces这个结果:

代码语言:javascript
复制
  on rap N37D1QxB
Preparing the "shell" executor 00:00
Using Shell executor...
Preparing environment 00:00
... [everything fine until here]

Executing "step_script" stage of the job script 00:00

$ kubectl config get-contexts
CURRENT   NAME            CLUSTER         AUTHINFO        NAMESPACE
*         gitlab-deploy   gitlab-deploy   gitlab-deploy   deploy-2-test

$ kubectl apply -f nginx.yaml
deployment.apps/nginx-deployment created

$ kubectl get pods --namespace deploy-2-test
NAME                                READY   STATUS              RESTARTS   AGE
nginx-deployment-66b6c48dd5-4lx4s   0/1     ContainerCreating   0          0s
nginx-deployment-66b6c48dd5-dcpcr   0/1     ContainerCreating   0          0s

$ kubectl apply -f nginx.yaml --namespace test
Error from server (Forbidden): error when retrieving current configuration of:
Resource: "apps/v1, Resource=deployments", GroupVersionKind: "apps/v1, Kind=Deployment"
Name: "nginx-deployment", Namespace: "test"
from server for: "nginx.yaml": deployments.apps "nginx-deployment" is forbidden: User "system:serviceaccount:deploy-2-test:deploy-2-test-service-account" cannot get resource "deployments" in API group "apps" in the namespace "test"
Cleaning up file based variables 00:00
ERROR: Job failed: exit status 1
  • 注意,部署是在Deploy2-test命名空间上完成的,即使.gitlab-ci.yml文件指向测试命名空间;如果--namespace包含在部署命令中,则无权部署。
  • 在Gitlab文档之后,我将集群-管理集群角色添加到gitlab ServiceAccount中,这应该是万能的.

nginx部署是经典一。如何部署到测试命名空间?为什么以及如何生成名称空间Deploy2-test?

EN

回答 3

Stack Overflow用户

发布于 2021-05-23 02:10:40

找到解决方案:在Gitlab集群定义页面中禁用选项GitLab-managed cluster

摘录自输出:

代码语言:javascript
复制
...
$ kubectl config get-contexts
CURRENT   NAME            CLUSTER         AUTHINFO        NAMESPACE
*         gitlab-deploy   gitlab-deploy   gitlab-deploy   test

$ kubectl apply -f nginx.yaml
deployment.apps/nginx-deployment created

$ kubectl get pods
NAME                                READY   STATUS              RESTARTS   AGE
nginx-deployment-66b6c48dd5-55m6p   0/1     ContainerCreating   0          0s
nginx-deployment-66b6c48dd5-vbhtc   0/1     ContainerCreating   0          0s
Cleaning up file based variables
Job succeeded

实际上,deploy.environment.kubernetes.namespace是定义最终的k8s命名空间的一个。

票数 0
EN

Stack Overflow用户

发布于 2021-05-23 15:21:58

我不是百分之百确定,但是设置environment:kubernetes:namespace设置可能不会改变您当前的上下文。它只将该值应用于KUBE_NAMESPACE环境变量。

如果您想确保始终可以在脚本中使用--namespace $KUBE_NAMESPACE。这也是我们所做的,以防止任何上下文问题与我们的脚本。

票数 0
EN

Stack Overflow用户

发布于 2022-08-16 09:17:37

根据说明,在- kubectl配置获取上下文之后,脚本中缺少- kubectl配置使用上下文行。有了这个,-命名空间就适合我了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67647630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档