• 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    KUBECONFIG: /etc/deploy/config 是一个变量定义,在gitlab的ci/cd 控制台配置 ,它指定了将要创建的文件路径。这个变量的目的是为了方便在后续的阶段中使用。
    在 deploy 阶段的脚本中,可以看到以下命令:
    mkdir -p /etc/deploy
    echo $kube_config | base64 -d > $KUBECONFIG
    kubectl get pods -n gitlab
    
    • 1
    • 2
    • 3
    这里的目的是将 $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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    【tgcalls】Instance接口的实例类的创建
    splay + 垃圾回收 知识点与例题的简要讲解
    文献阅读的思路
    SpringJDBC模板类JdbcTemplate
    给老婆写的,每日自动推送暖心消息
    线性代数学习笔记8-2:对称矩阵和Hermitian矩阵、共轭转置、正定矩阵
    PyQt5开发相关
    Spring Cloud Gateway过滤器配置
    数据库操作语言:DML(data management lauguage)
    金仓数据库 KingbaseES SQL 语言参考手册 (19. SQL语句: DROP TABLE 到 LOAD)
  • 原文地址:https://blog.csdn.net/weixin_42562106/article/details/134066283