当前位置: 首页 > article >正文

gitlab 通过变量连接自建K8S

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 阶段的脚本中,可以看到以下命令:
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 配置并执行相关操作。这样做可以更好地组织代码,并提高可读性和可维护性。

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

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

http://www.kler.cn/a/106624.html

相关文章:

  • 深入解析 MySQL 数据库:数据库时区问题
  • HARCT 2025 分论坛4:智能系统传感、传感器开发和数据融合中的智能数据分析
  • LC12:双指针
  • 针对gitgitee的使用
  • leetcode hot100【LeetCode 236.二叉树的最近公共祖先】java实现
  • 【MySQL 保姆级教学】事务的自动提交和手动提交(重点)--上(13)
  • 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景
  • 计算机网络重点概念整理-第六章 应用层【期末复习|考研复习】
  • 【鸿蒙软件开发】ArkTS通用事件
  • Mac-postman存储文件目录
  • vue的双向绑定的原理,和angular的对比
  • 计算机毕业设计 基于SpringBoot高校竞赛管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试
  • 【C++进阶】set和map的基本使用(灰常详细)
  • Chapter1:C++概述
  • 三代自动驾驶系统及主流科技公司自动驾驶技术方案简介
  • 在Mac上安装MongoDB 5.0
  • 如何构造强一致性系统?理解数据一致性里的2PC和TCC模式原理,以及如何做(有图)
  • LeetCode 面试题 16.03. 交点
  • clang-前端插件-给各种无花括号的“块”加花括号-基于llvm15--clang-plugin-add-brace
  • STM32:TTL串口调试
  • 计算机操作系统重点概念整理-第二章 进程管理【期末复习|考研复习】
  • 【ModbusTCP协议】
  • Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战
  • C++数据结构X篇_21_插入排序(稳定的排序)
  • FPGA与人工智能泛谈-01
  • 第五天:前端页面展示不出来