我正在评估如何使用横断面作为工具来部署我们的客户端不同的解决方案,并且一直在努力解决一个问题:
我们希望将十字平面安装到GCP上的一个集群(我们手动创建),并使用该交叉平面提供新的集群,我们可以在该集群上安装舵机图表并像往常一样进行部署。到目前为止,主要的问题是,我们还没有弄清楚如何告诉十字飞机将舵图安装到其他集群中,而不是自己。
这就是我们所努力做到的:
示例中的provider-config:
apiVersion: helm.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: helm-provider
spec:
credentials:
source: InjectedIdentity...which可以工作,但是将所有东西安装到与十字平面相同的集群中。
另一个例子是:
apiVersion: helm.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
credentials:
source: Secret
secretRef:
name: cluster-credentials
namespace: crossplane-system
key: kubeconfig...which需要大量makefile脚本才能更容易地为新集群生成kubeconfig,而kubecoinfig仍然会产生许多错误(但是它确实开始在新集群中创建一些内容,但它并不能一直工作。获取诸如:“PodUnschedulable无法调度豆荚:gvisor}之类的错误)。
我只是尝试了几天,所以我知道我可能从一个完全错误的角度来处理这个问题,但我确实喜欢与Terraform等人相比,十字面的前景和它的方法。
所以问题是:我想错了,或者我漏掉了一些显而易见的东西。使用kubeconfig进行的第二个测试现在感觉相当复杂(为了实现它,需要采取许多正确的步骤)。
谢谢
发布于 2021-10-29 09:28:15
正如您已经注意到的,ProviderConfig with InjectedIdentity适用于provider-helm将舵机发行版安装到同一个集群的情况。
要部署到其他集群,provider-helm需要远程集群的kubeconfig文件,该文件需要作为Kubernetes秘密提供,并从ProviderConfig引用。因此,只要您已经向来自跨平面集群(即.a)的外部集群提供了一个专用的 kubeconfig,该集群是可访问的。,provider-helm应该能够将发布部署到远程集群。
因此,在配置provider-helm方面,您似乎走在了正确的轨道上,并且由于您观察到一些东西被部署到外部集群,所以您提供了一个有效的kubeconfig,provider-helm可以访问并验证到集群。
最后一个错误听起来像是集群和发行版之间的不兼容,例如外部集群只允许带有gvisor的荚,并且您想要安装的应用程序与provider helm没有相应的标签。
作为故障排除步骤,您可以尝试通过helm将配置完全相同的舵图安装到外部集群,使用您构建的kubeconfig。
关于构建Kubeconfig所带来的不便,provider-helm需要一种访问外部Kubernetes集群的方法,而且由于kubeconfig是实现此目的的最常见的方法。但是,如果您看到另一种使某些常见用例更容易使用的替代方法,则可以实现这一点,如果您能够在回购中为此创建一个特性请求,那将是很棒的。
最后,我想知道您是如何创建这些外部集群的。如果用十字平面创建它们也是有意义的,例如,如果GKE与provider-gcp一起使用,那么您可以将作曲 helm ProviderConfig与GKE集群资源一起使用,后者在创建新集群时只会创建适当的秘密和ProviderConfig,则可以将其作为示例检查:https://github.com/crossplane-contrib/provider-helm/blob/master/examples/in-composition/composition.yaml#L147。
https://stackoverflow.com/questions/69764792
复制相似问题