kubernetes - 有没有办法根据在 Google Container Registry 中创建的新镜像自动部署到 GCE?

标签 kubernetes google-kubernetes-engine google-container-registry google-container-builder

我在 GCE 上有一个 Kubernetes 部署,我希望根据在 Google Container Registry 中创建的新镜像(最好通过构建触发器)自动更新。有没有办法做到这一点?

提前致谢。

-标记

最佳答案

我能够使用 GCR 和 Cloud Builder 和 cloudbuild.yaml 来做到这一点。文件如下。为了使其工作,服务帐户的名称类似于 xyz@cloudbuild.gserviceaccount.com必须通过单击项目 -> 编辑器分配 IAM 权限。这是必需的,以便 Cloud Build 服务可以制作 SSH key 并将它们添加到您的 GCE 元数据中,以允许 Cloud Builder 进行 SSH 连接。此 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'

奖金专业提示:
  • substitutions如果有一天你支持一个新服务器并想用它来代替,这很好
  • 使用 --log-driver=gcplogs使您的 Docker 日志显示在适当的“GCE VM 实例”中的 Google Cloud Console 的 Stackdriver Logging 中。请务必选择“所有日志”和“任何日志级别”,因为 Docker 日志没有日志级别,也不是 syslogactivity_log留言
  • 关于kubernetes - 有没有办法根据在 Google Container Registry 中创建的新镜像自动部署到 GCE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46349803/

    相关文章:

    docker - 如何使用 SELinux 在 Kubernetes 中挂载 HostPath 卷

    azure - AKS 添加非 Azure 节点

    Google Kubernetes Engine (GKE) 中的 Windows Server 容器

    kubernetes - 每次将图像推送到 GCR 时自动更新 pod

    docker - Dockerfile是否可用于Google Container Registry上的Google示例图像?

    kubernetes - 如何在 master 上重新启动 kubelet 以更改标志选项以及如何在 terraform 中应用它

    nginx - ASP.NET Core 2.0,Kubernetes,https缺少回复地址吗?

    在 gRPC 服务前使用 Envoy 代理时出现 SSL 错误 ERR_CERT_AUTHORITY_INVALID

    docker - Kubernetes:runContainer:API错误(500):无法启动容器(docker无法卸载)

    docker - Google Cloud Build - 摘要状态显示失败,所有步骤均成功