我正在评估 crossplane 作为我们的首选工具来部署客户不同的解决方案,并且一直在解决一个问题:
我们希望将 crossplane 安装到 GCP 上的一个集群(我们手动创建),并使用该 crossplane 来配置新集群,我们可以在该集群上安装 Helm Charts 并像往常一样进行部署。到目前为止,主要问题是我们还没有弄清楚如何告诉 crossplane 将 helm Chart 安装到除自身之外的其他集群中。
这就是我们尝试的目的:
示例中的提供者配置:
apiVersion: helm.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: helm-provider
spec:
credentials:
source: InjectedIdentity
Run Code Online (Sandbox Code Playgroud)
...它可以工作,但将所有内容安装到与 crossplane 相同的集群中。
另一个例子:
apiVersion: helm.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
credentials:
source: Secret
secretRef:
name: cluster-credentials
namespace: crossplane-system
key: kubeconfig
Run Code Online (Sandbox Code Playgroud)
...这需要大量的 makefile 脚本来更容易地为新集群生成 kubeconfig,并且 kubecoinfig 仍然会给出很多错误(但确实开始在新集群中创建一些东西,但它并不能一直工作。错误如:“ PodUnschedulable 无法调度 pod:gvisor})。
我只尝试了 crossplane 几天,所以我知道我可能会从完全错误的角度来处理这个问题,但与 Terraform 等相比,我确实喜欢 crossplane 的承诺及其方法。
所以问题是:我的想法完全错误,或者我错过了一些明显的东西。使用 kubeconfig 进行的第二次测试现在感觉相当复杂(要实现它需要按正确顺序执行许多步骤)。
谢谢