Bazel k8s_deploy 没有将 Kubernetes 资源应用到集群

Bazel k8s_deploy Does not Apply Kubernetes Resources to Cluster

我有多个用于部署 Kubernetes 的 Bazel 规则

  1. deployments:
load("@k8s_deploy//:defaults.bzl", "k8s_deploy")
k8s_object(
  name = "k8s_deployment",
  kind = "deployment",
  cluster = "cents-ideas",
  template = ":ideas.deployment.yaml",
  images = {
    "gcr.io/cents-ideas/ideas:latest": ":image"
  },
)
  1. services:
k8s_object(
  name = "k8s_service",
  kind = "service",
  template = ":ideas.service.yaml",
)

我已经将所有这些 k8s_object 放在一个 k8s_objects 中,例如 this:

load("@io_bazel_rules_k8s//k8s:objects.bzl", "k8s_objects")
k8s_objects(
    name = "k8s",
    objects = [
      ":k8s_deployment",
      ":k8s_service"
    ]
)

最后,我有一个运行 k8s_objects 规则的 cloudbuild.yaml 文件:

steps:
  - id: 'push docker images and deploy changes to kubernetes'
    name: gcr.io/cloud-builders/bazel
    args: ['run', '//:kubernetes']

虽然Cloud Build成功,但Kubernetes资源并没有应用到集群上:

Here 是完整的构建日志。

所以基本上图像被推送到容器注册表,然后修改的 .yaml 文件被记录下来,但是 没有 应用于我的 Google Kubernetes 引擎群集。

我认为您需要为目标加上“.create”或“.replace”后缀,请参阅docs

所以你会想要这样的东西:

bazel run //:k8s.create

其中 k8s 是您的目标名称。