Kubernetes GKE使用不同映像自动部署多个部署/服务

Kubernetes GKE使用不同映像自动部署多个部署/服务,kubernetes,google-kubernetes-engine,google-cloud-build,cloudbuild.yaml,Kubernetes,Google Kubernetes Engine,Google Cloud Build,Cloudbuild.yaml,我现在正在看GKE和一些关于谷歌云的教程。我在这里关注这个(源代码) 此示例有3个部署和一个服务。示例教程让您通过命令行部署所有内容,这很好,而且所有内容都可以使用。然后,我开始研究如何通过云构建自动化部署,并发现: 这些文档说,您可以为您的应用程序创建一个构建配置,并触发一个触发器(例如推送到一个特定的回购协议),它将触发构建。他们为此展示的yaml示例如下: # deploy container image to GKE - name: "gcr.io/cloud-builder

我现在正在看GKE和一些关于谷歌云的教程。我在这里关注这个(源代码)

此示例有3个部署和一个服务。示例教程让您通过命令行部署所有内容,这很好,而且所有内容都可以使用。然后,我开始研究如何通过云构建自动化部署,并发现:

这些文档说,您可以为您的应用程序创建一个构建配置,并触发一个触发器(例如推送到一个特定的回购协议),它将触发构建。他们为此展示的yaml示例如下:

# deploy container image to GKE
- name: "gcr.io/cloud-builders/gke-deploy"
  args:
  - run
  - --filename=kubernetes-resource-file
  - --image=gcr.io/project-id/image:tag
  - --location=${_CLOUDSDK_COMPUTE_ZONE}
  - --cluster=${_CLOUDSDK_CONTAINER_CLUSTER}
我了解如何传入位置和集群参数,这些文档还介绍了以下关于资源文件(filename参数)和图像参数的内容:

kubernetes资源文件是kubernetes配置文件的文件路径或包含kubernetes资源文件的目录路径

image是容器映像所需的名称,通常是应用程序名称

将此与演示应用程序repo联系起来,其中所有服务都在一个repo中,我相信我可以提供文件名参数的文件夹路径,例如repo中的config文件夹

但这里的问题是,这些资源文件本身有一个image属性,所以我不知道这与云构建触发器yaml的image属性有什么关系。我也不知道如何在触发器yaml中有多个“映像”属性,其中每个部署都有自己的容器映像

一般来说,我对GKE和Kubernetes都是新手,所以我想知道我是否误解了Kubernetes资源文件在本例中应该是什么

但是,当多个部署/服务都捆绑到一个repo中时,是否可以以这种方式自动部署它们?或者谷歌在本教程中过于简化了一些东西——事实上,大多数服务都会在自己的repo中,以便单独构建/测试/部署

无论如何,
image
属性与部署yaml中已经定义了映像这一事实有何关系?e、 g:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    name: photoalbum-app
  name: photoalbum-app
spec:
  replicas: 3
  selector:
    matchLabels:
      name: photoalbum-app
  template:
    metadata:
      labels:
        name: photoalbum-app
    spec:
      containers:
      - name: photoalbum-app
        image: gcr.io/[PROJECT_ID]/photoalbum-app@[DIGEST]
        tty: true
        ports:
        - containerPort: 8080
        env:
        - name: PROJECT_ID
          value: "[PROJECT_ID]"

 

您使用的命令非常适合测试一个映像的部署。但是当您使用Kubernetes(K8S)和GCP的托管版本(GKE)时,通常不会这样做

您可以使用YAML文件来描述您的部署、服务和所有其他需要的K8S对象。部署时,您可以执行如下操作

kubectl apply -f <file.yaml>
如果希望只使用一个文件,可以使用
--


抱歉,我有点困惑,这将如何与云构建的连续部署一起工作?我是否只是省略了cloud build deployment yaml的image参数并依赖于config文件夹?不,您需要更新yaml文件,然后应用它们。或者重建它们。对不起,我还不确定我是否遵循。我想在提交到repo的基础上触发cloudbuild,并按照教程中的说明构建所有3个部署和服务。你是说这不是一条可行的道路,还是说云构建在提交上是不可能的?我注意到gke deploy页面上有以下评论:“gke deploy只能引用构建配置文件中的一个映像。如果Kubernetes资源文件包含多个映像引用,则只有以gcr/project id/image开头的映像将更新为引用指定的标记。”我会使用一个内联构建脚本吗?我相信我已经找到了与这个代码库相关的repo,我相信这就是我需要调查的内容。在github repo的第65行中,您可以看到如何替换yaml文件中的最新图像名。下面一行应用了更改。
kubectl apply -f config/*.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-nginx-svc
  labels:
    app: nginx
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  labels:
    app: nginx
spec:...
...