gpt4 book ai didi

kubernetes - 如何使用 crossplane 将 helm charts(使用 provider-helm)安装到其他集群中

转载 作者:行者123 更新时间:2023-12-05 02:38:08 25 4
gpt4 key购买 nike

我正在评估将 crossplane 用作我们的首选工具来为我们的客户部署不同的解决方案,并且一直在努力解决一个问题:

我们想在 GCP 上的一个集群(我们手动创建)上安装 crossplane,并使用该 crossplane 来提供新的集群,我们可以在上面安装 helm charts 并照常部署。到目前为止的主要问题是我们还没有弄清楚如何告诉 crossplane 将 helm charts 安装到除它自己之外的其他集群中。

这就是我们尝试过的目的:

示例中的提供者配置:

apiVersion: helm.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: helm-provider
spec:
credentials:
source: InjectedIdentity

...可以工作,但会将所有内容安装到与 crossplane 相同的集群中。

另一个例子:

apiVersion: helm.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
credentials:
source: Secret
secretRef:
name: cluster-credentials
namespace: crossplane-system
key: kubeconfig

...这需要大量的 makefile 脚本才能更容易地为新集群生成 kubeconfig,并且 kubecoinfig 仍然会给出很多错误(但确实开始在新集群中创建一些东西,但它并不能一直工作方式。获取错误,如:"PodUnschedulable Cannot schedule pod: gvisor}).

我只尝试过 crossplane 几天,所以我知道我可能从一个完全错误的角度来处理这个问题,但与 Terraform 等相比,我确实喜欢 crossplane 的 promise 及其方法。

所以问题是:我的想法完全错误,或者我遗漏了一些明显的东西。使用 kubeconfig 的第二个测试现在感觉相当复杂(许多步骤以正确的顺序实现)。

谢谢

最佳答案

正如您所注意到的,ProviderConfigInjectedIdentity 适用于 provider-helm 将 helm 版本安装到同一集群中的情况。

要部署到其他集群,provider-helm 需要远程集群的 kubeconfig 文件,该文件需要作为 Kubernetes secret 提供并从 ProviderConfig 引用。因此,只要您向可从您的 Crossplane 集群(也称为控制平面)访问的外部集群提供适当的 kubeconfig, provider-helm 应该能够将发布部署到远程集群。

因此,看起来您在配置 provider-helm 方面走在正确的轨道上,并且由于您观察到某些东西被部署到外部集群,因此您提供了有效的 kubeconfig 和 provider-helm可以访问集群并对其进行身份验证。

您遇到的最后一个错误听起来像是您的集群和版本之间存在某种不兼容,例如外部集群只允许带有 gvisor 的 pod,而您要使用 provider helm 安装的应用程序没有相应的标签。

作为故障排除步骤,您可以尝试使用您构建的相同 kubeconfig 通过 helm cli 将具有完全相同配置的 helm chart 安装到外部集群。

关于您提到的构建 Kubeconfig 的不便之处,provider-helm 需要一种访问外部 Kubernetes 集群的方法,因为 kubeconfig 是实现此目的的最常用方法。但是,如果您看到另一种替代方法可以使某些常见用例的操作变得更容易,则可以实现这种方法,如果您可以为此在存储库中创建功能请求,那就太好了。

最后,我想知道您是如何创建这些外部集群的。如果也可以使用 Crossplane 创建它们,例如如果 GKE 带有 provider-gcp,那么,你可以 compose一个 helm ProviderConfig 和一个 GKE 集群资源,当你创建一个新的集群时,它只会创建适当的 secret 和 ProviderConfig,你可以检查这个作为例子:https://github.com/crossplane-contrib/provider-helm/blob/master/examples/in-composition/composition.yaml#L147

关于kubernetes - 如何使用 crossplane 将 helm charts(使用 provider-helm)安装到其他集群中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69764792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com