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
相关推荐
谷隐凡二2 小时前
etcd在Kubernetes中的作用简单介绍
数据库·kubernetes·etcd
m0_569531012 小时前
《K8s 网络入门到进阶:Service 与 Ingress 原理、部署方案及核心区别对比》
网络·容器·kubernetes
HIT_Weston4 小时前
63、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(七)
前端·ubuntu·gitlab
眠りたいです5 小时前
Docker:容器虚拟化技术基础-namespace,cgroups,资源管理与LXC
运维·docker·中间件·容器
新手小白*5 小时前
K8s 中的 CoreDNS 组件
云原生·容器·kubernetes
一周困⁸天.5 小时前
K8S-CoreDNS组件
网络·kubernetes
speedoooo6 小时前
未来的App不再需要菜单栏?
前端·ui·容器·小程序·web app
令狐囱7 小时前
宝塔docker 运行 go-zero-looklook项目
docker·容器·golang
yBmZlQzJ7 小时前
内网穿透 + 域名解析:到底解决了什么核心问题?
运维·经验分享·网络协议·docker·容器
小挪号底迪滴7 小时前
Docker容器化实践:从开发到生产的完整流程
运维·docker·容器