gitlab 通过变量连接自建K8S

js 复制代码
services:
  - docker:19.03.7-dind
  - golang:1.17.8-alpine3.15
  - docker:stable
stages:
  - package
  - build and push docker image
  - deploy
variables:
  KUBECONFIG: /etc/deploy/config
build:
  tags:
    - k8s
  image: golang:1.17.8-alpine3.15
  stage: package
    # 只作用在main分支
  only:
    - main
  script:
    - export GO111MODULE=on
    - export GOPROXY=https://goproxy.cn
    - go mod init app
    - go mod tidy
    - go build .
docker build:
  tags:
    - k8s
  variables:
    DOCKER_HOST: tcp://0.0.0.0:2375
    DOCKER_TLS_CERTDIR: ""

  image: docker:stable
  stage: build and push docker image
  # 只作用在main分支
  only:
    - main
  script:
    - docker build -t test:v01 .

deploy:
  tags:
    - k8s
  image: registry.cn-hangzhou.aliyuncs.com/haoshuwei24/kubectl:1.16.6
  stage: deploy

  script:
    - mkdir -p /etc/deploy
    - echo $kube_config |base64 -d > $KUBECONFIG
    - kubectl  get pods -n gitlab
KUBECONFIG: /etc/deploy/config 是一个变量定义,在gitlab的ci/cd 控制台配置 ,它指定了将要创建的文件路径。这个变量的目的是为了方便在后续的阶段中使用。
在 deploy 阶段的脚本中,可以看到以下命令:
js 复制代码
mkdir -p /etc/deploy
echo $kube_config | base64 -d > $KUBECONFIG
kubectl get pods -n gitlab
这里的目的是将 $kube_config 的值进行 Base64 解码,并将解码后的内容写入到 /etc/deploy/config 文件中.后续的 kubectl 命令就能够使用这个文件来获取正确的 Kubernetes 配置信息。
因此,创建 KUBECONFIG: /etc/deploy/config 变量的目的是为了在后续的部署阶段中使用该文件路径,以便正确设置 Kubernetes 配置并执行相关操作。这样做可以更好地组织代码,并提高可读性和可维护性。

也可以使用以下方法,但是可读性脚差

js 复制代码
deploy:
  tags:
    - k8s
  image: registry.cn-hangzhou.aliyuncs.com/haoshuwei24/kubectl:1.16.6
  stage: deploy
  script:
    - echo $kube_config | base64 -d > /tmp/config.yaml
    - kubectl --kubeconfig /tmp/config.yaml get pods -n gitlab
相关推荐
IT大白鼠19 小时前
Ingress 与 Ingress-Controller:K8s 七层 HTTP 反向代理技术详解与实践
http·容器·kubernetes
java_logo20 小时前
Docker 部署 Rocky Linux:轻松搭建 RHEL 兼容企业级基础镜像平台
linux·docker·容器·rocky linux·基础镜像·轩辕镜像·rhel 兼容
IT大白鼠1 天前
Istio 结合 K8s 实现流量管理:服务网格灰度、熔断、限流实战
云原生·kubernetes·istio
鹤落晴春1 天前
【K8s】认识Kubernetes API:从CRD出发的一次梳理
云原生·容器·kubernetes
yanwumuxi1 天前
Docker记录:误删宿主机挂载目录导致 PostgreSQL 数据丢失
docker·postgresql·容器
cui_hao_nan1 天前
Docker 学习 5
docker·容器
A黄俊辉A1 天前
两分钟上手docker
运维·docker·容器
11路没有终点1 天前
GitLab CI/CD 高级模式实战:include 模板库 / trigger 子流水线 / matrix 并行
ci/cd·gitlab
11路没有终点1 天前
GitLab CE CI/CD 入门指引手册:从零搭建第一条流水线
ci/cd·gitlab
努力努力再努力wz1 天前
【Docker入门系列】:从架构演进到容器化:一文建立 Docker、虚拟化与 Namespace 的底层心智模型
运维·开发语言·数据结构·c++·docker·容器·架构