使用容器镜像服务触发器自动更新容器服务应用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文介绍如何使用容器镜像服务触发器自动更新应用中心应用的应用模板并同步部署到实际运行环境中。

阿里云镜像服务为每个仓库提供了触发器的功能,帮助用户在镜像构建成功后进行消息的推送,实现持续集成的后续流程。本文将演示如何在镜像构建成功后,自动触发容器服务上应用中心拉取新的镜像,并进行重新部署。


本示例的演示内容如下所示:

1)创建编排模板,模板中应用容器镜像版本为liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:blue

2)使用应用中心创建应用并将其部署至容器集群,访问当前应用

3)在应用中心中创建触发器并记录触发器URL

4)在容器镜像服务中配置触发器

5)向容器镜像服务推送新版本容器镜像,liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:red

6)查看容器集群中应用版本是否已经自动更新为liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:red



1)创建编排模板

image.png

本示例中应用编排模板内容如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: demo
  name: demo
spec:
  minReadySeconds: 5
  progressDeadlineSeconds: 60
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: demo
  strategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      annotations:
        prometheus.io/port: "9797"
        prometheus.io/scrape: "true"
      creationTimestamp: null
      labels:
        app: demo
    spec:
      containers:
      - image: liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:blue
        imagePullPolicy: IfNotPresent
        name: demo
        ports:
        - containerPort: 8080
          name: http
          protocol: TCP
        readinessProbe:
          initialDelaySeconds: 5
          tcpSocket:
            port: 8080
          timeoutSeconds: 5
        resources:
          limits:
            cpu: "2"
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 64Mi
status: {}
---
apiVersion: v1
kind: Service
metadata:
  name: demo-svc
spec:
  selector:
    app: demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: demo
  labels:
    app: demo
spec:
  rules:
    - host: app.demo.example.com
      http:
        paths:
          - backend:
              serviceName: demo-svc
              servicePort: 80
---

2) 创建示例应用

应用中心(公测)-> 创建应用:

image.png

应用来源选择YAML模板,点击下一步:

image.png

输入应用名称,选择步骤1)中创建的模板并点击下一步:

image.png

选择需要发布应用到哪个目标集群和命名空间,点击开始发布:

image.png

发布确认:

image.png

应用发布完毕后,在应用详情页面可以看到应用资源拓扑图和子资源运行状态,如下所示:

image.png

通过Ingress资源访问应用如下如所示,应用版本为blue:

image.png


3)应用中心内未应用生成触发器

进入应用详情页面->点击触发器按钮->点击创建生成触发器

image.png

image.png

复制并保存触发器地址,请妥善保管触发器URL,以免泄露。

4)liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:blue镜像所在的镜像仓库中创建触发器,本示例中触发器名称为appcenter_trigger_demo,触发器URL为步骤3)中生成的触发器地址,触发方式为全部触发,容器镜像服务触发器的使用说明参见https://help.aliyun.com/document_detail/60949.html

image.png

5) 向liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:blue所在镜像仓库推送一个新镜像 liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green

docker pull registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:green
docker tag registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:green liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green
docker push liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green

6)   查看容器镜像服务触发器的访问记录,触发器执行如有异常,可以在详情信息Response Body中查看具体原因:

image.png

image.png

7)查看编排模板版本是否更新且应用镜像是否更新为liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green

image.png

8)验证运行于实际环境中的应用版本是否已更新为green

image.png

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
29天前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
117 21
|
1月前
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
|
2月前
|
人工智能 运维 Kubernetes
阿里云容器服务AI助手2.0 - 新一代容器智能运维能力
2024年11月,阿里云容器服务团队进一步深度融合现有运维可观测体系,在场景上覆盖了K8s用户的全生命周期,正式推出升级版AI助手2.0,旨在更好地为用户使用和运维K8S保驾护航。
|
2月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
87 5
|
2月前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
87 4
|
3月前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
108 1
|
3月前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
142 0
|
3月前
|
存储 Cloud Native 开发者
深入探索容器化技术——Docker的实战应用
深入探索容器化技术——Docker的实战应用
59 0
|
3月前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
3月前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用

热门文章

最新文章

相关产品

  • 容器镜像服务
  • 容器计算服务