docker registry 触发部署

Spinnaker可以通过Docker镜像的变化来触发部署,这种方法允许你在Docker镜像发生变化时自动启动新的部署流程

示例原理下图所示
在这里插入图片描述
以下是如何在Spinnaker实现基于Docker Registry触发部署配置流程。最终实现效果如下

  1. 基于jenkins CI构建docker镜像推送阿里云ACR镜像仓库;
  2. spinnaker pipeline跟踪镜像仓库指定镜像tag变化,检测到新tag使用新的镜像tag更新kubernetes yaml文件image字段;
  3. spinnaker pipelineyaml文件部署kubernetes集群

前置要求:

镜像仓库默认存在一个latest标签nginx官方镜像。
在这里插入图片描述

启用 dockerregistry provider

官方文档https://spinnaker.io/docs/setup/install/providers/docker-registry/

配置spinnaker,启用dockerregistry提供程序:

hal config provider docker-registry enable

假设您的注册表具有地址 $ADDRESS存储$REPOSITORIES用户名 $USERNAME密码 $PASSWORD

ADDRESS=registry.cn-shenzhen.aliyuncs.com
REPOSITORIES=cnmirror/nginx
USERNAME=xxx@mail.com
PASSWORD=xxxxxx

运行以下 hal 的帐户添加到 Docker 注册表帐户列表中

hal config provider docker-registry account add aliyun-acr 
    --address $ADDRESS 
    --repositories $REPOSITORIES 
    --track-digests=true 
    --username $USERNAME 
    --password $PASSWORD

注意:参数track-digests=true一个重要的参数,因此即使标签已经存在内容摘要哈希值)更改管道可以自动触发

重新部署spinnaker,以使配置生效

hal deploy apply

创建spinnaker应用

创建应用

点击右侧Create Application
在这里插入图片描述
配置名称邮箱
在这里插入图片描述

创建PIPELINES

在这里插入图片描述

修改Configuration 阶段

选择Automated Triggers点击Add Trigger
在这里插入图片描述
在Type选框中搜索Docker Registry,并选择以下参数
在这里插入图片描述

在下方Artifact Constraints中,定义一个新的Artifact
在这里插入图片描述

填写相关参数

Docker image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx
Object pathregistry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:${parameters['VERSION']}

创建deploy阶段

点击 Add stage
在这里插入图片描述
选择Type类型为Deploy(Manifest),选择Account应用部署的Namespace最后配置Manifest。
在这里插入图片描述
示例Manifest如下

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-app
  name: nginx-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-app
  template:
    metadata:
      labels:
        app: nginx-app
    spec:
      containers:
        - image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx
          name: nginx-app
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-app
  labels:
    run: nginx-app
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx-app

选择Required Artifacts to Bind
在这里插入图片描述

点击右下方的Save Changes。

测试触发部署

这里准备一个nginx镜像作为示例应用jenkins镜像构建部分省略,作为演示使用手动方式上传镜像到镜像仓库

docker pull docker.io/library/nginx:latest
docker tag docker.io/library/nginx:latest registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0
docker push registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0

等待片刻,点击PIPELINES,查看部署是否成功
在这里插入图片描述
连接kubernetes集群,查看部署的nginx-app pods以及service

root@node40:~# kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
nginx-app-7bf7d4d4cd-hhrtj   1/1     Running   0          26s
root@node40:~# 
root@node40:~# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   74m
nginx-app    ClusterIP   10.96.3.41   <none>        80/TCP    63m

查看镜像

root@node40:~# kubectl get pods -l app=nginx-app -o yaml | grep image:
    - image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0
      image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0

推送新的镜像到镜像仓库模拟jenkins镜像构建

docker tag docker.io/library/nginx:latest registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.1
docker push registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.1

确认新的PIPELINES部署已自动执行
在这里插入图片描述
查看镜像,已更新v1.1版本

root@node40:~# kubectl get pods -l app=nginx-app -o yaml | grep image:
    - image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.1
      image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0

参考
https://docs.armory.io/continuous-deployment/spinnaker-user-guides/kubernetes-deployments/

原文地址:https://blog.csdn.net/networken/article/details/134639678

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_20198.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注