Crossplane是一个开源的Kubernetes插件,通过扩展KubernetesAPI解决了云资源的配置问题。使用Crossplane时,您可以声明性地定义需要创建哪些云资源以使您的应用程序正常工作,而无需编写任何代码。这些云资源的定义可以直接通过创建相关的CRD对象来完成,可以看作是云原生版的Terraform。VCluster是一种通过轻量级虚拟Kubernetes集群提供灵活性和成本节约的工具。使用VCluster,您可以在Kubernetes集群中创建一个隔离的虚拟Kubernetes集群。这大大降低了创建和维护Kubernetes集群控制平面的复杂性。下表比较了使用命名空间、vcluster和Kubernetes集群的隔离级别和管理复杂度:那么当我们将Crossplane和VCluster这两个工具组合在一起时会发生什么?下面我们通过一个例子来说明两者的结合使用。示例在这个示例中,我们想要实现如下内容:拥有一个可以接收请求以启动新集群环境的集群这些环境将能够使用Helm来安装应用程序请求新环境的团队不关心在哪里集群已创建,因此使用VCluster或在云提供商中创建Kubernetes集群应该为最终用户提供类似的体验。这里我在本地环境中使用KinD进行演示,相关资源列表可以在https://github.com/salaboy/from-monolith-to-k8s/tree/main/platform/crossplane-vcluster找到(需要你的自己安装kubectl,helm,提前实物)。如上图所示,我们只需要创建一个KinD集群(当然也可以是任何其他Kuberentes集群),然后在集群上安装Crossplane和CrossplaneHelmProvider,因为我们这里还没有创建任何云资源,因此我们不需要配置任何其他CrossplaneProvider(如GCP、AWS、Azure等)。安装Crossplane接下来我们可以使用KinD创建一个Kubernetes集群。$kindcreatecluster创建集群"kind"...?确保节点镜像(kindest/node:v1.23.4)
