容器技术教程:如何将Docker应用持续部署到Kubernetes我们如何将其集成到我们自己的Codeship工作流中?这个问题的具体答案取决于你实际使用的Kubernetes主机,而在今天的文章中,我们将选择谷歌云作为讨论的目标平台。 Codeship与Kubernetes结合 Codeship本身在其DockerCI平台中内置了部分谷歌云集成机制,因此我们可以直接在谷歌云上验证和部署新镜像。 在开始之前,我们还需要使用Codeship的CLI工具创建一个加密的环境文件,用于向谷歌云进行身份验证。 环境变量设置如下: GoogleCloudKey:GOOGLE_AUTH_JSON. GoogleAuthenticationEmail:GOOGLE_AUTH_EMAIL. GoogleProjectID:GOOGLE_PROJECT_ID. 环境文件加密完成后创建GoogleCloud环境变量并将其保存到gc.env.encrypted后,接下来我们需要在codeship-services.yml文件中定义GoogleCloud服务。 请注意,这里定义了两个服务,而不是一个。这是因为一个用于与GoogleCloud服务交互(google_cloud_deployment),另一个用于启用将Docker镜像推送到GoogleCloudRegistry(gcr_dockercfg)。 不过,到这里问题只解决了一半。虽然它已经创建了与谷歌云交换所需的服务,但它不能自动部署新构建的图像或更新KubernetesDeployment。 Google容器注册表推送 由于Codeship内置了推送机制,我们可以很方便地将Docker镜像部署到远程registry。使用上面定义的gcr_dockercfg服务,我们只需将GoogleContainerRegistryURL作为目标添加到codeshipsteps.yml文件中。 重要的是,由于我们需要部署自己的应用程序镜像,请确保将应用程序服务名称替换为您自己要运行的应用程序服务名称。 上面的参数已经很清楚了,相信不用过多解释,基本思路就是利用之前定义的gcr_dockercfg服务进行鉴权,将应用镜像推送到谷歌容器注册中心。 虽然此步骤将更新映像推送到注册表,但当前定义仍然存在问题。由于没有设置Docker镜像标签,Codeship会将更新后的镜像推送到latest标签。虽然这暂时不会造成什么麻烦,但是为了触发KubernetesDeployment的自动更新机制,我们还需要为每次推送设置不同的标签。 为了实现这一点,Codeship提供了一个image_tag语句,允许我们为需要推送的图片设置除latest以外的任何tag。为了简单起见,这里我们直接使用Unix时间戳来保证其唯一性和可重复性。 使用新的image_tag声明,之前的步骤如下: 现在,当我们将应用程序镜像推送到GoogleContainerRegistry时,它会被标记为当前版本的Unix时间戳。 原标题:DockerAppsContinuousDeploymentofDockerAppstoKubernetes 原作者:ZacharyFlower
