kubernetes - gitlab-ci 和 kubectl 问题
问题描述
我正在尝试使用 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: 没有那个文件或目录
更新:创建环境并将其附加到阶段解决了识别将要部署的集群的问题,因此集群可以获得应用命令的动作
解决方案
创建环境并将其附加到阶段解决了识别将要部署的集群的问题,因此集群可以获得应用命令环境的动作:名称:生产
推荐阅读
- azure-billing-api - 天蓝色计费 REST API
- javascript - JS - map() 在表格中排名
- python - 如何使用类似 KDnuggets 样式的 PDF 绘制比较箱线图
- android - 如何让我的 recyclerview 正确显示我从 Retrofit 收到的数据?
- sql - 根据 Db2 SQL 中某一列的 MAX 值获取行
- python - TypeError:use() 得到了一个意外的关键字参数“警告”
- android - 是否可以将 ImageSpan 存储在 Room 数据库中?
- python - 从配置文件中读取 Python 列表
- python - Google 云端硬盘缩略图链接返回 404
- sql - 右表行不存在时的PostgreSQL横向连接