使用.jinja模板文件进行容器部署

时间:2018-11-20 21:00:39

标签: google-cloud-platform yaml containers jinja2 google-kubernetes-engine

我正在尝试在.jinja文件中部署容器,我知道可以使用.yaml文件来完成此操作,但希望通过单个.yaml文件调用来完成我的部署多个.jinja文件。

这是我目前在.jinja文件中用于容器部署的内容:

resources:
- name: test-cluster
  type: container.v1.cluster
  properties:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80

并且我目前收到错误消息:

ERROR: (gcloud.deployment-manager.deployments.create) Error in Operation [operation-1542747397856-57b1edea09b01-d7bff680-2f96dfe0]: errors:
- code: CONDITION_NOT_MET
  location: /deployments/deployment-test/resources/test-cluster->$.properties->$.cluster.name
  message: |-
    InputMapping for field [cluster.name] for method [create] could not be set from input, mapping was: [$.ifNull($.resource.properties.cluster.name, $.resource.name)

1 个答案:

答案 0 :(得分:0)

This github repo是您要整体完成的示例。请注意,在文件cluster.jinja的属性下,有一个称为“集群”的列表,该列表指定群集本身的属性,例如节点数等。下面复制/粘贴。在提供的文件中,您要指定container.v1.cluster类型,但没有指定该类型所隐含的含义(创建集群所必需的)。该错误表明该程序正在寻找“群集:名称:{{CLUSTER_NAME}}”,但它不存在。container.v1.cluster类型需要类似以下内容。

resources:
- name: {{ CLUSTER_NAME }}
type: container.v1.cluster
properties:
    zone: {{ properties['zone'] }}
    cluster:
      name: {{ CLUSTER_NAME }}
      initialNodeCount: {{ properties['initialNodeCount'] }}
      nodeConfig:...

该github存储库中还有一个名为deployment.jinja的文件,其中包含用于部署Pod的语法。您应该尝试复制类似于该文件的内容来指定Pod