我有一个Deployment Manager脚本,如下所示: cluster.py创建kubernetes集群,当脚本仅为k8集群创建运行时,它成功 - 因此这意味着cluster.py 在创建k8集群时没有问题
cluster.py
也暴露了输出:
cluster.py的一小段内容如下:
outputs.append({
'name': 'v1endpoint' ,
'value': type_name + type_suffix })
return {'resources': resources, 'outputs': outputs}
如果我尝试将以下dmnginxservice
资源中的公开输出作为$(ref.dmcluster.v1endpoint)
访问,则会在未找到资源的情况下收到错误
imports:
- path: cluster.py
- path: nodeport.py
resources:
- name: dmcluster
type: cluster.py
properties:
zone: us-central1-a
- name: dmnginxservice
type: nodeport.py
properties:
cluster: $(ref.dmcluster.v1endpoint)
image: gcr.io/pr1/nginx:latest
port: 342
nodeport: 32123
ERROR: (gcloud.deployment-manager.deployments.create) Error in Operation [operation-1519960432614-566655da89a70-a2f917ad-69eab05a]: errors:
- code: CONDITION_NOT_MET
message: Referenced resource yaml%dmcluster could not be found. At resource
gke-cluster-dmnginxservice.
答案 0 :(得分:1)
我试图重现一个类似的实现,我已经能够部署它,没有任何问题,使用你的输出非常相同的sintax。
我部署了2个VM和一个新网络。我会发布你的代码,也许你会找到一些关于输出的有趣提示。
请记住:
这可能会变得棘手,因为资源的创建顺序很重要;您无法将虚拟机实例添加到不存在的网络,也无法附加不存在的永久磁盘。此外,默认情况下,Deployment Manager会并行创建所有资源,因此无法保证以正确的顺序创建相关资源。
我会跳过那是一样的。如果你提供你的代码,我可以尝试帮助你调试它,但是从错误代码看来,DM似乎并不知道第一个元素已经被创建,但是从提供的信息中不清楚原因。
此外,如果我是你,我会尽量明确设定dmnginxservice
取决于dmcluster
使用metadata。通过这种方式,您可以仔细检查它是否实际上正在等待第一个资源。
<强>更新强>
我已经能够通过更简单的配置重现错误,主要取决于我如何引用变量,行为是不同的,并且由于某种原因属性扩展到$(ref.yaml%vm-1.paolo)
,似乎是项目的组合群集引用会导致麻烦。
#'name': context.properties["debug"],WORKING
#'name': context.env["project"],WORKING
'name': context.properties["debug"]+context.env["project"],#NOT WORKING
如果需要,您可以查看配置here。