【发布时间】:2021-08-11 07:35:21
【问题描述】:
使用 Gitlab+Kubernetes,如何将某些东西部署到特定的(例如 test)命名空间?我已经关注了 Gitlab 文档,但是我在部署时找不到如何选择特定的命名空间。
这个.gitlab-ci.yml 文件...
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
...产生这个结果:
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
- 请注意,部署是在 deploy-2-test 命名空间上完成的,即使 .gitlab-ci.yml 文件指向 test 命名空间;如果在部署命令中包含
--namespace,则无权部署。 - 按照 Gitlab 文档,我添加了 cluster-admin 集群角色 到 gitlab ServiceAccount,应该是万能的……
nginx 部署是classic one。如何部署到 test 命名空间?为什么以及如何生成命名空间deploy-2-test?
【问题讨论】:
-
gitlab runner 是自托管的还是共享的?。您还需要提供运行程序以通过 RBAC 角色访问 EKS 集群。我所做的是部署了一个自托管 EC2 运行器,其 IAM 角色配置为访问 EKS(AWS Kubernetes),并在 Kubernetes RBAC 规范中添加了 iam 角色
-
@Prashanna 这是一个共享跑步者。但我认为你没有抓住重点。目标是使用 Gitlab 机制进行部署,而不仅仅是使用 gitlab 运行命令来执行调整后的部署。我已经创建了 Gitlab 建议的 RBAC 角色(授予 gitlab 服务帐户主题具有 cluster-admin ClusterRole,这可能甚至过度)。
标签: kubernetes gitlab