kubernetes 控制Pulumi创建k8s名称空间的位置

okxuctiv  于 2023-04-20  发布在  Kubernetes
关注(0)|答案(1)|浏览(185)

我需要写一个新的Pulumi程序来做一些k8s的事情。一个任务是在不同的集群中创建新的名称空间。
我想做的事情应该是这样的:

const ns1 = new k8s.core.v1.Namespace("foo-ns", {cluster: "foo_cluster"});
    const ns2 = new k8s.core.v1.Namespace("bar-ns", {cluster: "bar_cluster"});

我看了Namespaces(https://www.pulumi.com/registry/packages/kubernetes/api-docs/core/v1/namespace/)的文档,我不太确定如何控制命名空间的创建位置。我看到有一个传入集群名称的选项(https://www.pulumi.com/registry/packages/kubernetes/api-docs/core/v1/namespace/#clustername_nodejs),但文档说
对象所属集群的名称,用于区分不同集群中同名同姓的资源。该字段目前没有设置,如果在create或update请求中设置,apiserver会忽略
(重点是我的)
所以现在我想知道:如果我告诉Pulumi创建一个新的命名空间,命名空间将在哪个集群中创建?
(我还想问一下在不同GCP项目的不同GKE环境中的相似命名集群中创建命名空间的问题-因为这可能是这段代码的下一阶段,但如果我不能在同一个项目中指定不同的集群,我看不出有什么意义)

cnjp1d6j

cnjp1d6j1#

您可以使用资源提供程序(具体地说,是显式资源提供程序)来实现这一点
Kubernetes resource provider支持多种方式来配置对集群的访问,例如传递kubeconfig或Kubernetes上下文:

import * as k8s from "@pulumi/kubernetes";

const cluster1 = new k8s.Provider("cluster1", {
  cluster: "cluster1" // use the cluster with name "cluster1" in your default kubeconfig
});

const cluster2 = new k8s.Provider("cluster2", {
  kubeconfig: fs.readFileSync(path.resolve(__dirname, "./kubeconfig.yaml") // use a different kubeconfig entirely
});

 const ns1 = new k8s.core.v1.Namespace("foo-ns", {}, {provider: cluster1});
 const ns2 = new k8s.core.v1.Namespace("bar-ns", {}, {provider: cluster2});

相关问题