【发布时间】:2018-07-11 14:15:05
【问题描述】:
我正在使用 Gitlab CI online、Kubernetes 和 docker 设置云 DevOps 部署管道。我正在关注 Continous delivery of a spring boot application with Gitlab CI and kubernetes 和 Kubectl delete/create secret forbidden (Google cloud platform) 的示例帖子。
在下面找到我的 .gitlab-ci.yml 文件的源代码
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 构建/打包阶段。这是唯一失败的阶段。我将感谢大家帮助解决这个问题。 非常感谢。
【问题讨论】:
-
您使用的是什么版本的 Kubernetes?您能否重新格式化您的 admin.yaml 文件内容,因为空格和换行符对于 YAML 格式很重要?
-
另外,使用
--validate=false将很少很好地结束
标签: docker kubernetes gitlab kubectl