首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes在Gitlab Online的持续部署阶段失败

Kubernetes在Gitlab Online的持续部署阶段失败
EN

Stack Overflow用户
提问于 2018-07-09 08:21:02
回答 1查看 525关注 0票数 0

我正在使用Gitlab CI online、Kubernetes和docker设置云DevOps部署管道。我正在关注Continous delivery of a spring boot application with Gitlab CI and kubernetesKubectl delete/create secret forbidden (Google cloud platform)上的一个示例帖子。

在我的.gitlab-ci.yml文件的源代码下面找到

代码语言:javascript
复制
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

在下面的行上部署失败

代码语言:javascript
复制
  - kubectl create -f admin.yaml --validate=false

此故障时显示的错误消息如下:

代码语言:javascript
复制
error: error converting YAML to JSON: yaml: mapping values are not allowed in this context
ERROR: Job failed: exit code 1

admin.yaml文件的源代码如下所示:

代码语言:javascript
复制
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 build和Docker build/package阶段的工作。这是唯一失败的阶段。我将感谢每个人在解决这个问题上的帮助。非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2018-07-11 14:15:05

您有一个YAML验证错误。这意味着您的YAML格式不正确。

您很可能希望以以下方式设置admin.yaml文件的格式:

代码语言:javascript
复制
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已经pointed out你不应该禁用YAML文件的验证。

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

https://stackoverflow.com/questions/51236932

复制
相关文章

相似问题

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