是否有一种方法可以根据Google容器注册表中创建的新图像自动部署到GCE



我在GCE上进行了kubernetes部署,我想根据Google Container Registry中创建的新图像自动更新,该图像(理想情况下是通过构建触发器)。有办法做到吗?

预先感谢。

-mark

我能够使用带有cloudbuild.yaml文件的GCR和Cloud Builder进行此操作。为了使其工作,具有xyz@cloudbuild.gserviceaccount.com之类的名称的服务帐户必须通过单击项目 ->编辑器来分配IAM权限。这是必需的,以便云构建服务可以制作SSH键并将其添加到您的GCE元数据中,以允许云构建器进入SSH。这是有效地在GCE VM服务器上运行任何命令的大型工作。

steps:
# Build Docker image: docker build -f Dockerfile -t gcr.io/my-project/my-image:latest .
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-f', 'Dockerfile', '-t', 'gcr.io/my-project/my-image:latest', '.']
# Push to GCR: gcloud docker -- push gcr.io/my-project/my-image:latest
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/my-project/my-image:latest']
# Connect to GCE server and pull new image
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['compute', 'ssh', '$_SERVER', '--zone', '$_ZONE', '--command', 'gcloud docker -- pull gcr.io/my-project/my-image:latest']
# Connect to server and stop current container
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['compute', 'ssh', '$_SERVER', '--zone', '$_ZONE',  '--command', 'docker stop my-image']
# Connect to server and stop current container
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['compute', 'ssh', '$_SERVER', '--zone', '$_ZONE',  '--command', 'docker rm my-image']
  # Connect to server and start new container
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['compute', 'ssh', '$_SERVER', '--zone', '$_ZONE',  '--command', 'docker run  --restart always --name my-image -d -p 443:443  --log-driver=gcplogs  gcr.io/my-project/my-image:latest']

substitutions:
  _SERVER: 'my-gce-vm-server'
  _ZONE: 'us-east1-c'

奖励专业提示:

  1. substitutions很不错,以防您有一天支撑新服务器并想使用它
  2. 使用--log-driver=gcplogs使您的Docker日志显示在您的Google Cloud Console的StackDriver日志登录中,以适当的" GCE VM实例"。只需确保选择"所有日志"one_answers"所有日志级别",因为Docker日志没有日志级别,并且不是syslogactivity_log消息

另一个选项:我们的一些用户使用kubectl构建步骤在其构建结束时触发部署。

您可以在构建步骤中调用任何kubectl命令,前提是您已经设置了适当的IAM权限作为构建的一部分。(请参阅README。)此示例调用kubectl get pods

请注意,仅在完成的构建结束时自动推动图像,因此要在一个构建中构建图像并将其部署在一个构建中,您需要在部署步骤之前插入自己的docker push构建步骤。

您可以使用Google Cloud Pub/sub来收听Google Container注册表中的更改。此页面概述了此功能。您可能需要为应用程序使用推动模型。

但是,请注意,这是一个alpha功能,其行为可能会在未来版本中发生变化。

如果您不希望Pub/sub提供的外部控制,则您的构建脚本应执行以下操作,

  1. 标记图像并上传到容器注册表
  2. 部署脚本中更新图像版本
  3. 运行部署脚本又将拉动最新图像

相关内容

  • 没有找到相关文章

最新更新