Kubernetes持续部署Docker Apps

简介: 本文讲的是Kubernetes持续部署Docker Apps【编者的话】本文是Codeship系列文章(Continuous Deployment for Docker Apps to Kubernetes)的第二篇,介绍了Codeship的相关配置项。
本文讲的是Kubernetes持续部署Docker Apps【编者的话】本文是Codeship系列文章(Continuous Deployment for Docker Apps to Kubernetes)的第二篇,介绍了Codeship的相关配置项。如果已经等不及了,你可以下载电子书《 Continuous Deployment for Docker Apps to Kubernetes

这一系列文章中,我们介绍过了 using Kubernetes for deployments。本篇我们开始集成Codeship到工作流中。
假设已经有了Kubernetes的Deployment(注意我们上篇文章中已经讨论了“Deployment”和Kubernetes中“Deployment”这两个概念的区别),现在我们该如何集成到我们自己的Codeship工作流中呢?最终答案取决于Kubernetes的部署模式,因为Kubernetes官方文档使用Google Cloud作为案例,我也会使用这个部署模式。

集成Codeship到Kubernetes

Codeship开发了相关 Google Cloud 功能集成到他们的CI平台,方便用户认证与部署新的image到Google Cloud。

但是,在开始前,我们要使用Codeship CLI工具创建加密的环境文件,帮助我们更方便地认证到Google Cloud。 Codeship已经有一篇教程 关于怎么创建环境文件,所以这里不会详细介绍。但是牢记要设置以下环境变量:
  • a Google Cloud Key - GOOGLE_AUTH_JSON
  • a Google Authentication Email – GOOGLE_AUTH_EMAIL
  • a Google Project ID – GOOGLE_PROJECT_ID

一旦加密环境文件准备好(并且保存环境变量到 gc.env.encrypted ),下一步我们要在 codeship-services.yml 中定义Google Cloud服务。
001.png

注意需要定义两个服务,而不是一个。这是因为一个服务负责与Google Cloud交互( google_cloud_deployment ),另一个服务负责
push Docker image到Google Cloud Registry( gcr_dockercfg )。我们已经 为你提供了一个模板

到这里我们已经解决了一半的难题。虽然它创建了必要的服务与Google Cloud交互,它却不能自动地部署新构建的image或者更新一个Kubernetes Deployment。

Push到Google Container Registry

感谢Codeship 内建的push步骤 ,使得部署Docker image到远程的registry非常的平滑。使用 gcr_dockercfg 服务实现上面的功能,我们需要做的就是在 codeshipsteps.yml 添加Google Container Registry的URL作为目的地址。

下面非常重要,因为我们要部署应用镜像了,注意把下面的服务名替换成你自己的。
002.png

上面的参数名很好地说明它们的含义,它的基本思想是app image会被push到Google Container Registry,使用之前定义好的 gcr_dockercfg 服务实现认证。

虽然这里更新的image被push到registry,但是会有一个问题。我们没有定义image的tag,Codeship默认tag为 latest 。本身而言这还不是件糟糕的事,但是为了触发Kubernetes Deployment自动更新,我们要为每次push的image设置不同的tag。

Codeship提供了 image_tag 参数声明image的tag, Codeship有一个变量列表 来帮助我们声明image的参数;但是,为了简化,我们使用当下的Unix时间戳,因为它是独一无二的,无法替代。

有了 image_tag ,之前的配置就变成下面这样了:
003.png

现在,当我们push app image到Google Container Registry时,image的tag会被标记为当下的Unix时间戳。

本篇文章到这里告一段落,记得检查新的教程。

原文连接:Continuous Deployment of Docker Apps to Kubernetes(翻译:adolphlwq)

=========================================
译者介绍

adolphlwq,博客地址:QuanTalk

原文发布时间为:2017-01-14

本文作者:adolphlwq

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:Kubernetes持续部署Docker Apps

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
2739 4
|
6月前
|
Java 应用服务中间件 API
【App Service】部署War包到Azure云上遇404错误
Java应用部署至Azure App Service for Windows后报404,本地运行正常。经排查,日志提示类文件版本不兼容:应用由Java 17(class file version 61.0)编译,但环境仅支持到Java 11(55.0)。错误根源为Java版本不匹配。调整App Service的Java版本至17后问题解决,成功访问接口。
544 5
|
6月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
317 5
|
6月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
2028 9
|
6月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
5658 8
|
6月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
929 4
|
SQL 网络安全 Windows
|
6月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1129 139

热门文章

最新文章

下一篇
开通oss服务