zoukankan      html  css  js  c++  java
  • 15-在k8s集群中实现镜像的版本管理和部署

    本文介绍如何结合ytt工具来实现k8s集群的image tag管理和部署

    问题

    由于yaml文件无法使用变量,当服务更新时,无法直接通过yaml文件更新image的版本来部署。

    ytt工具

    ytt 是一个结构化的yaml模板工具,可以通过传入变量来生成目标yaml文件。

    以ubuntu为例,安装ytt工具:

    wget https://github.com/k14s/ytt/releases/download/v0.22.0/ytt-linux-amd64
    chmod +x ytt-linux-amd64
    sudo mv ytt-linux-amd64 /usr/local/bin/ytt
    ytt version
    

    ytt工具使用

    管理image tag,会用到的ytt语法包含:

      1. Variable
      1. Load data values
      1. Text template
      1. Multiple data values
    • --data-value key=value

    假设未使用ytt的yaml如下:

        spec:
          containers:
          - image: http://local_registry/image_name:latest
    

    使用ytt工具后的yaml如下:

    #@ load("@ytt:data", "data")
    
        spec:
          containers:
          - image: #@ data.values.image
    

    额外需要用到的配置文件(values.yaml)如下:

    #@data/values
    ---
    image:
    

    使用ytt的命令格式如下:

    ytt -f k8s/deploy.yaml -f k8s/values.yaml --data-value image=$image | kubectl apply -f-
    

    version的自动生成与增长

    treeder/bump镜像可以帮助实现版本的自动增长,用法参考treeder/bump

    可以用如下脚本来实现version的自动生成与增长:

    #!/bin/bash
    
    set -e
    
    env="$1"
    versionFile=".VERSION"
    
    if [ -z "$env" ]; then
        env="stage"
    fi
    
    echo "deploy $env"
    
    
    if [ ! -f "$versionFile" ]; then
        echo "0.0.0" > "$versionFile"
    fi
    
    echo "bump version"
    docker run --rm -v "$PWD":/app treeder/bump --filename "$versionFile"
    version=`cat $versionFile`
    

    也可单独创建version.sh文件,用于生成version:

    #!/bin/bash
    set -e
    
    versionFile="$1"
    # if versionFile not given, set default file name
    if [ -z "$versionFile" ]; then
        versionFile=".VERSION"
    fi
    
    # if file not exists, set default version
    if [ ! -f "$versionFile" ]; then
        echo "0.0.0" > "$versionFile"
    fi
    
    echo "bump version"
    # using treeder/bump to bump version
    docker run --rm -v "$PWD":/app treeder/bump --filename "$versionFile"
    
  • 相关阅读:
    Silverlight 自定义表格 转
    Application_BeginRequest事件过滤恶意提交
    存储过程学习1
    我是博客园新博客
    努力将SQL Server像玩游戏一样熟练
    【Demo 0003】支持交互的应用
    【Demo 0003】支持交互的应用
    linux终端快捷键
    vim与windows/linux之间的复制粘贴小结
    vimgrep简单使用
  • 原文地址:https://www.cnblogs.com/windchen/p/12860371.html
Copyright © 2011-2022 走看看