Docker Gitlab Online中的Kubernetes连续部署阶段失败
我正在使用Gitlab CI online、Kubernetes和docker建立云DevOps部署管道。我正在和下面的一个示例帖子 在下面找到my.gitlab-ci.yml文件的源代码Docker Gitlab Online中的Kubernetes连续部署阶段失败,docker,kubernetes,gitlab,kubectl,Docker,Kubernetes,Gitlab,Kubectl,我正在使用Gitlab CI online、Kubernetes和docker建立云DevOps部署管道。我正在和下面的一个示例帖子 在下面找到my.gitlab-ci.yml文件的源代码 image: docker:latest services: - docker:dind variables: DOCKER_DRIVER: overlay SPRING_PROFILES_ACTIVE: gitlab-ci stages: - build - package -
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay
SPRING_PROFILES_ACTIVE: gitlab-ci
stages:
- build
- package
- deploy
maven-build:
image: maven:3-jdk-8
stage: build
script: "mvn package -B"
artifacts:
paths:
- target/*.jar
docker-build:
stage: package
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker build -t registry.gitlab.com/username/mta-hosting-optimizer .
- docker push registry.gitlab.com/username/mta-hosting-optimizer
k8s-deploy:
image: google/cloud-sdk
stage: deploy
script:
- echo "$GOOGLE_KEY" > key.json
- gcloud auth activate-service-account --key-file key.json
- gcloud config set compute/zone europe-west1-c
- gcloud config set project mta-hosting-optimizer
- gcloud config unset container/use_client_certificate
- gcloud config set container/use_client_certificate True
- gcloud container clusters get-credentials mta-hosting-optimizer
- kubectl create -f admin.yaml --validate=false
- kubectl create clusterrolebinding serviceaccounts-cluster-admin--clusterrole=cluster-admin --group=system:serviceaccounts
- kubectl delete secret registry.gitlab.com
- kubectl create secret docker-registry registry.gitlab.com --docker-server=https://registry.gitlab.com --docker-username=username --docker-password=$REGISTRY_PASSWD --docker-email=email@email.com
- kubectl apply -f deployment.yml
部署在以下行失败
- kubectl create -f admin.yaml --validate=false
此故障时显示的错误消息如下:
error: error converting YAML to JSON: yaml: mapping values are not allowed in this context
ERROR: Job failed: exit code 1
admin.yaml文件的来源如下:
apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard labels: k8s-app: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kubernetes-dashboard namespace: kube-system
Maven构建和Docker构建/包阶段可以找到工作。这是唯一失败的阶段。我将感谢大家在解决这个问题上的帮助。
非常感谢。您有一个YAML验证错误。这意味着您的YAML格式不正确 您很可能希望将
admin.yaml
文件格式化为以下格式:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
另外:正如Matthew L Daniel所说,您不应该禁用YAML文件的验证。您使用的是什么版本的Kubernetes?因为空格和新行对于yaml格式很重要,所以您能重新格式化您的admin.yaml文件内容吗?另外,使用
--validate=false
很少会有好结果。非常感谢@bn4t。我将在您格式化后应用此方法,并在稍后传达结果。起初,我没有禁用验证,但在我不断出现错误并看到有人建议我这样做之后。感谢帮助,但是我得到了以下错误:来自服务器的错误(禁止):机密“registry.gitlab.com”被禁止:用户“client”无法删除命名空间“default”中的机密:未知用户“client”来自服务器的错误(禁止):机密被禁止:用户“客户端”无法在命名空间“默认”中创建机密:未知用户“客户端”似乎正在尝试使用似乎不存在的帐户(因此没有正确的权限)应用此yaml。您必须查看关于如何管理授权的Kubernetes文档(例如,在这里使用RBAC:)。