kubernetes - Bazel k8s_deploy不将Kubernetes资源应用于集群

标签 kubernetes google-kubernetes-engine bazel google-cloud-build

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

  • 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"
      },
    )
    
  • services:
  • k8s_object(
      name = "k8s_service",
      kind = "service",
      template = ":ideas.service.yaml",
    )
    

    然后将所有这些k8s_object放到一个像this这样的单一k8s_objects中:
    load("@io_bazel_rules_k8s//k8s:objects.bzl", "k8s_objects")
    k8s_objects(
        name = "k8s",
        objects = [
          ":k8s_deployment",
          ":k8s_service"
        ]
    )
    

    最后,我有一个运行cloudbuild.yaml规则的 k8s_objects 文件:
    steps:
      - id: 'push docker images and deploy changes to kubernetes'
        name: gcr.io/cloud-builders/bazel
        args: ['run', '//:kubernetes']
    

    但是,尽管Cloud Build成功,但Kubernetes资源并未应用于集群:
    cloud build

    Here是完整的构建日志。

    因此,基本上将图像推送到容器注册表,然后记录已修改的.yaml文件,但是而不是应用于我的Google Kubernetes Engine集群。

    最佳答案

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

    因此,您需要以下内容:

    bazel run //:k8s.create
    

    其中k8s是您的目标名称。

    关于kubernetes - Bazel k8s_deploy不将Kubernetes资源应用于集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60025908/

    相关文章:

    java - 如何将输入传递到 Kubernetes 容器内的 Java 应用程序?

    udp - Kubernetes UDP 服务未与 Google Cloud 负载平衡器一起运行

    bazel - 了解 Bazel "inputs"操作的 "run"参数

    c++ - 如何将 libm.so 和 libdl.so 与我的 bazel 项目链接?

    java - gRPC + Bazel + Envoy Json Proxy - 如何导入 google/api/annotations.proto

    docker - Kubernetes Web UI(仪表板)不显示图表

    kubernetes - Terraform:模块输出未被识别为变量

    git - 使用 Wea​​veworks Flux 从 Kubernetes 中删除资源

    kubernetes - 源 IP 白名单 Kubernetes 入口 GCE

    kubernetes - dnsConfig 在 GKE 中被跳过