前言
基于Gitlab,Gitlab-Runner和Gitlab集成的CICD的DevOps工作流部署容器应用到测试或生产环境,可以快速方便的通过代码迭代自动部署到相应环境中,我已经提前准备好了容器内环境的Gitlab和Gitlab-Runner,有需要的同学可以鉴别参考,以及准备好Harbor私有镜像仓用来镜像的存储和转移,以此为前提进行我们的实践。
参考
gitlab-runner + k8s 实现自动部署_慕课手记 (imooc.com)
一、打通Gitlab和K8S的工作流
这里我会介绍两个办法,一个是通过安装好Kubectl软件的镜像来导入k8s-api-config去和我们的K8S集群进行互动。另一个则是在Gitlab-Runner的镜像去直接导入。
1.配置文件变量导入镜像法
(1)构建镜像
构建一个Kubectl镜像来方便我们部署的时候进行操作,下面我们用一个dockerfile来构建
FROM alpine:latest
ARG KUBE_LATEST_VERSION=v1.23.10
# 使用alpine:latest作为基础镜像
# 下载kubectl二进制文件并设置可执行权限
RUN apk add --update -t deps curl && \
curl -L https://storage.googleapis.com/kubernetes-release/release/${KUBE_LATEST_VERSION}/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl && \
chmod +x /usr/local/bin/kubectl
# 安装必要的依赖(curl),并下载kubectl二进制文件到/usr/local/bin目录,并赋予可执行权限
# 清理安装过程中的临时文件和缓存
RUN apk del --purge deps && \
rm /var/cache/apk/*
# 删除已安装的依赖包及其依赖,以及清理apk缓存,减小镜像体积
使用docker build来构建,构建完后,打上标签,然后登录harbor仓库给推送过去方便我们的统一管理和维护性迭代。
docker build --build-arg KUBE_LATEST_VERSION="v1.23.10" -t kubectl:v1.23.10 .
docke