我有一个cloudbuild.yaml
运行Bazel命令的简单文件。该命令以日志输出形式返回Kubernetes配置。
我的目标是取得第一步的输出,并将其应用于我的Kubernetes集群。
steps:
- name: gcr.io/cloud-builders/bazel
args: ["run", "//:kubernetes"]
- name: "gcr.io/cloud-builders/kubectl"
args: ["apply", "<log output of previous step>"]
env:
- "CLOUDSDK_COMPUTE_ZONE=europe-west3-a"
- "CLOUDSDK_CONTAINER_CLUSTER=cents-ideas"
我尝试了以下方法:
- name: gcr.io/cloud-builders/bazel
entrypoint: /bin/bash
args:
[
"bazel",
"run",
"//:kubernetes",
" > kubernetes.yaml",
]
- name: "gcr.io/cloud-builders/kubectl"
args: ["apply", "-f", "kubernetes.yaml"]
env:
- "CLOUDSDK_COMPUTE_ZONE=europe-west3-a"
- "CLOUDSDK_CONTAINER_CLUSTER=cents-ideas"
但是然后我得到这个错误:
Running: kubectl apply -f kubernetes.yaml
error: the path "kubernetes.yaml" does not exist
正如大家已经在这里建议的那样使用卷。
cloudbuild.yaml
像这样调整您的文件:
- name: gcr.io/cloud-builders/bazel
entrypoint: /bin/bash
args:
[
"bazel",
"run",
"//:kubernetes",
" > /workspace/kubernetes.yaml",
]
- name: "gcr.io/cloud-builders/kubectl"
args: ["apply", "-f", "/workspace/kubernetes.yaml"]
env:
- "CLOUDSDK_COMPUTE_ZONE=europe-west3-a"
- "CLOUDSDK_CONTAINER_CLUSTER=cents-ideas"
但您的代码段未提及
volumes
为方便起见,/ workspace是所有容器共享的默认卷。您不需要显式安装它。您可以按照提供的文档附加自定义卷。
好的,我会尝试的!
不幸:
error: the path "/workspace/kubernetes.yaml" does not exist
我用这个示例自己进行了测试,无论是自定义卷还是
/workspace
默认卷,它都可以正常工作。因此,错误起源于步骤1中的bazel run
。您能否/stdout
仅通过运行来检查它在构建过程中是否实际输出任何内容args: ["run", "//:kubernetes"]
?如果它不输出任何内容,则kubernetes.yaml
不会创建,并在下一步中导致错误。同样,您在第一步中不需要“ bazel”参数。默认情况下它在那里。