实现微信绑定登录网站,网站手机端的优势,自己建设网站教程,软件商店哪个好docker registry 触发部署
Spinnaker可以通过Docker镜像的变化来触发部署#xff0c;这种方法允许你在Docker镜像发生变化时自动启动新的部署流程。
示例原理如下图所示#xff1a; 以下是如何在Spinnaker中实现基于Docker Registry触发部署的配置流程。最终实现的效果如下…docker registry 触发部署
Spinnaker可以通过Docker镜像的变化来触发部署这种方法允许你在Docker镜像发生变化时自动启动新的部署流程。
示例原理如下图所示 以下是如何在Spinnaker中实现基于Docker Registry触发部署的配置流程。最终实现的效果如下
基于jenkins CI构建docker镜像推送到阿里云ACR镜像仓库;spinnaker pipeline跟踪镜像仓库中指定镜像tag变化检测到新tag则使用新的镜像tag更新kubernetes yaml文件image字段;spinnaker pipeline将yaml文件部署到kubernetes集群。
前置要求
已在kubernetes集群中部署spinnaker准备可用的docker镜像仓库由于阿里云ACR镜像仓库个人版可免费使用并且国内访问比较流畅以下以阿里云镜像仓库为例。
镜像仓库默认存在一个latest标签的nginx官方镜像。
启用 docker-registry provider
官方文档https://spinnaker.io/docs/setup/install/providers/docker-registry/
配置spinnaker启用docker-registry提供程序:
hal config provider docker-registry enable假设您的注册表具有地址 $ADDRESS 、存储库 $REPOSITORIES 、用户名 $USERNAME 和密码 $PASSWORD
ADDRESSregistry.cn-shenzhen.aliyuncs.com
REPOSITORIEScnmirror/nginx
USERNAMExxxmail.com
PASSWORDxxxxxx运行以下 hal 的帐户添加到 Docker 注册表帐户列表中
hal config provider docker-registry account add aliyun-acr \--address $ADDRESS \--repositories $REPOSITORIES \--track-digeststrue \--username $USERNAME \--password $PASSWORD注意参数–track-digeststrue是一个重要的参数因此即使标签已经存在但内容随摘要哈希值更改管道也可以自动触发。
重新部署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类型为DeployManifest选择Account及应用部署的Namespace最后配置Manifest。 示例Manifest如下
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-appname: nginx-app
spec:replicas: 1selector:matchLabels:app: nginx-apptemplate:metadata:labels:app: nginx-appspec:containers:- image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginxname: nginx-appports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: nginx-applabels:run: nginx-app
spec:ports:- port: 80protocol: TCPtargetPort: 80selector: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
rootnode40:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-app-7bf7d4d4cd-hhrtj 1/1 Running 0 26s
rootnode40:~#
rootnode40:~# 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查看镜像
rootnode40:~# kubectl get pods -l appnginx-app -o yaml | grep image:- image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0image: 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版本
rootnode40:~# kubectl get pods -l appnginx-app -o yaml | grep image:- image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.1image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0参考 https://docs.armory.io/continuous-deployment/spinnaker-user-guides/kubernetes-deployments/