• 使用gitlab-runner往k8s上发送curl命令实现pod中容器使用的镜像版本更新


    gitlab-runner配置文件config.toml文件中有一个选项

    concurrent = 1
    check_interval = 0
    
    [session_server]
      session_timeout = 1800
    
    [[runners]]
      name = "Docker"
      url = "http://gitlab.example.com/"
      token = "Xs_S47aq6BoJgWjWvHfj"
      executor = "docker" # docker命令
      [runners.custom_build_dir]
      [runners.cache]
        [runners.cache.s3]
        [runners.cache.gcs]
        [runners.cache.azure]
      [runners.docker]
        tls_verify = false
        extra_hosts = ["gitlab.example.com:192.168.80.201", "jdd.io:192.168.2.162"] # 添加额外的域名解析,详看gitlab和gitlab-runner的一个小坑:https://www.cnblogs.com/sanduzxcvbnm/p/14668269.html
        image = "sanduzxcvbnm/jre:1.8.275" # 注意,是这个选项
        privileged = false
        disable_entrypoint_overwrite = false
        oom_kill_disable = false
        disable_cache = false
        volumes = ["/cache","/run/docker.sock:/run/docker.sock"]
        shm_size = 0
        docker-privileged=true
        docker-pull-policy="if-not-present"
    

    .gitlab-ci.yml文件中的一个选项:

    image: sanduzxcvbnm/jre:1.8.275
    

    起到的作用是一样的,但是.gitlab-ci.yml文件中的优先级高

    这个的作用是表示gitlab-runner使用docekr命令使用这个镜像来操作.gitlab-ci.yml文件中的其他命令。

    所以,可以事先通过alpine来构建一个包含所需要软件的基础镜像,比如需要的软件有jdk1.8,maven,docker等。
    这样一来就不用执行不同的命令拉取不同的镜像了
    使用的Dockerfile文件如下
    Dockerfile_alpine文件内容如下:

    FROM alpine:latest
    MAINTAINER sandu <1103324414@qq.com>
    COPY localtime /etc/localtime
    COPY timezone /etc/timezone
    RUN echo "https://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories
    RUN echo "https://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories
    RUN ["apk","update"]
    RUN ["apk","add","curl"]
    RUN ["apk","add","openjdk8"]
    RUN ["apk","add","maven"]
    COPY settings.xml /usr/share/java/maven-3/conf/settings.xml # 这个是替换成国内的阿里云镜像,需要事先准备好该文件放在当前目录下
    RUN ["apk","add","docker"]
    

    中间涉及到时间文件,制作镜像,打标签等
    其他步骤参考文章重构基础docker镜像:https://www.cnblogs.com/sanduzxcvbnm/p/13220054.html

    构建好这样一个基础镜像后,还得先推送到dockerhub官方网站上。

    # 登录,后面不加地址
    docker login
    # 推送
    docker push sanduzxcvbnm/jre:1.8.275
    

    因为gitlan-runner默认是从这个网站拉取所需要的镜像的。

    然后具体看.gitlab-ci.yml文件中的用法

    image: sanduzxcvbnm/jre:1.8.275
    
    variables:
      DOCKER_DRIVER: overlay2
    
    #services:
    #    - docker:dind
    
    stages:
    #  - test
      - package
      - build
    #  - release
    
    #test_step:
    #  tags:
    #    - maven
    #  script:
    #    - java -version
    #    - mvn -version
    #    - docker --version
    
    maven_step:
      tags:
        - maven
      stage: package
      script:
        - mvn clean package -Dmaven.test.skip=true
      artifacts:
        paths:
          - target/*.jar
      only:
        - develop
    
    docker_step:
      tags:
        - docker
      stage: build
      script:
        - export TAG=`date "+%Y%m%d%H%M%S"` # 获取镜像标签
        - docker login -u admin -p admin123 jdd.io # 登录私有仓库
        - docker build -t jdd.io/demo:$TAG . # 构造镜像
        - docker push jdd.io/demo:$TAG # 推送到私有仓库
        - echo $TAG
        - curl -X PUT -H "content-type:application/json" -H "Cookie:KuboardUsername=admin;KuboardAccessKey=4jz66jfsa6t6.5wjsz733f73p5fei4h4fpbmnfp72ytbc" http://192.168.2.163:10080/kuboard-api/cluster/develop/kind/CICDApi/admin/resource/updateImageTag -d '{"kind":"deployments","namespace":"test","name":"web-spring","images":{"jdd.io/demo":"jdd.io/demo:'$TAG'"}}' # 给k8s所在发送post请求,更新pod中容器使用的镜像版本
      only:
        - develop
    

    curl命令是从kuboard界面中创建accesskey后获取到的

    复制出来的命令需要注意的地方:

    1. -H选项是表示定义请求头,注入cookie,复制出来的参数中冒号后面有空格,但是在.gitlab-ci.yml文件script用法中,不能有冒号后的空格,需要去掉
      比如-H "content-type: application/json" 修改成-H "content-type:application/json" 去掉冒号后的空格
    2. 复制出来的地址是加的有双引号,具体使用的时候需要去掉地址的双引号
  • 相关阅读:
    作业5.1 四则运算----封装
    作业四
    作业2 (完)
    作业3
    作业二。。
    数独
    回答自己的提问
    《一个程序猿的生命周期》读后感
    阅读13-17章
    阅读10,11,12章
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14680979.html
Copyright © 2020-2023  润新知