【问题标题】:gitlab-ci and kubectl issuegitlab-ci 和 kubectl 问题
【发布时间】:2020-07-29 04:38:31
【问题描述】:

我正在尝试使用 gitlab ci/cd 和 kubernates 集群构建和部署 nodejs 应用程序。部署失败时构建成功。同时,我将 Kubernates 集群添加到 gitlab(API url、CA 证书和服务令牌)以及由于与 KUBECONFIG 相关的问题而在部署中运行 kubectl 时遇到的错误,下面是我正在使用的 gitlab-ci.yml

    stages:
      - build
      - deploy

    services:
      - docker:dind


    build_app:  
      stage: build
      image: docker:git
      only:
        - master
        - develop

      script:
        - docker login -u gitlab-ci-token -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}
        - docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH} . 
        - docker tag ${CI_REGISTRY}/${CI_PROJECT_PATH} ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_SHORT_SHA}
        - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_SHORT_SHA}

    variables:
      DOCKER_HOST: tcp://docker:2375/
    deploy:
      stage: deploy
      image:
        name: bitnami/kubectl:latest
        entrypoint: [""]

      script:
        - USER_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
        - CERTIFICATE_AUTHORITY_DATA=$(cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | base64 -i -w0 -)
        - kubectl config set-cluster k8s --server="https://kubernetes.default.svc"
        - kubectl config set clusters.k8s.certificate-authority-data ${CERTIFICATE_AUTHORITY_DATA}
        - kubectl config set-credentials gitlab --token="${USER_TOKEN}"
        - kubectl config set-context default --cluster=k8s --user=gitlab
        - kubectl config use-context default
        - kubectl set image deployment test-flight web=${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_SHORT_SHA} -n test-flight-dev

$ USER_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) cat: /var/run/secrets/kubernetes.io/serviceaccount/token: 没有那个文件或目录

更新:创建环境并将其附加到阶段解决了识别将要部署的集群的问题,因此集群可以获得应用命令的动作

【问题讨论】:

  • 您好 minafarouk,欢迎来到 SO。将 kubernetes 集群添加到 GitLab 的全部目的是完成配置集群连接 out 的 repo 的 .gitlab-ci.yml 的工作;您必须选择其中一个——要么是作业管理 k8s 连接,要么是 gitlab 为作业配置它,当script: 运行时,KUBECONFIG 已经指向由 gitlab 创建的合法文件。那么,究竟是哪一个:你想配置它,还是你想让 gitlab 为你配置呢?
  • 与此相关,您正在尝试访问 Pod 注入的 ServiceAccountToken 但阶段本身不会在 Pod 中运行,除非您单独配置 gitlab-runner 运行集群内
  • 您好,您在哪个集群基础架构上运行您的集群?你有什么k8s版本?
  • @mdaniel 如果我仅使用 gitlab 配置并仅使用脚本推送构建的映像 kubectl set image deployment test-flight ...etc 我收到错误错误:缺少或不完整的配置信息。请指向一个现有的完整配置文件: 1. 通过命令行标志 --kubeconfig 2. 通过 KUBECONFIG 环境变量 3. 在您的主目录中作为 ~/.kube/config
  • @PiotrMalec DigitalOcean Kubernates集群,版本为v1.13.4

标签: kubernetes gitlab


【解决方案1】:

创建环境并将其附加到阶段解决了识别将要部署的集群的问题,因此集群可以获得应用命令环境的动作: 名称:生产

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2020-12-12
    • 2022-01-03
    相关资源
    最近更新 更多