Crossplane: 无需专家也能轻松编排基础设施|平台工具链系列04

Crossplane 是一个无需编写代码即可构建云原生控制平面的框架。它建立在 Kubernetes 的基础上,具有高度可扩展的后端,使您能够构建一个控制平面,无论应用程序和基础设施在何处运行,都可以编排它们,并且具有高度可配置的前端。Crossplane 将策略、权限和其他防护措施封装在自定义 API 后面,让用户无需成为基础设施专家即可进行自助服务。

Crossplane 是 CNCF 项目,目前在 GitHub 上已有近7400颗星。

01 Crossplane 的关键特性

开发者友好的 API

平台构建者需要一种方法来设置护栏并提供开发人员可以轻松使用的 API。由于 Crossplane 构建在 Kubernetes 之上,因此开发人员需要创建资源来请求特定服务。例如,要配置平台团队定义的 20 GB Postgres 实例,开发人员可以执行简单的 kubectl apply:

apiVersion: database.example.org/v1alpha1kind: PostgreSQLInstancemetadata:  name: my-dbnamespace: defaultspec:  parameters:    storageGB: 20  compositionSelector:    matchLabels:      provider: aws      environment: production  writeConnectionSecretToRef:    name: db-conn1234567891011121314

对于 Kubernetes 开发人员来说,这很简单。同时 Crossplane 可以丝滑融入庞大的 Kubernetes 工具生态系统。尤其是在流行 GitOps 的当下,非 Kubernetes 开发人员也可以轻松使用。

强大且灵活的组合

API 背后的实现可能相当复杂,可能涉及设置正确的云提供商资源,例如权限、网络、VPC 和数据库实例。Crossplane 的基本构建块是来自云提供商的托管资源。Crossplane 包括对AWS、Azure、GCP和阿里云的支持,并且社区正在增加对许多其他提供商的支持。

图片

这些基本构建块(绿色)作为交叉平面组合(黄色)连接在一起,并为开发人员提供的 API 提供实现。该模型体现在 Crossplane 资源模型 (XRM) 中,同时扩展了 Kubernetes 资源模型 (KRM)。这里的关键是平台构建者可以为不同的目的构建不同的组合,而开发人员可以专注于其请求的服务的属性。

在 K8s 的帮助下做好生产准备

Crossplane 创建 Kubernetes 自定义资源定义 ( CRDs) 以将外部资源表示为本机 Kubernetes 对象。作为本机 Kubernetes 对象,您可以使用标准命令,例如kubectl createkubectl describe。完整的 Kubernetes API 可用于每个 Crossplane 资源。Crossplane 充当 Kubernetes 控制器来监测外部资源的状态并提供状态执行。如果某些内容修改或删除了 Kubernetes 外部的资源,Crossplane 会撤消更改或重新创建已删除的资源。

02 快速上手 Crossplane

将Crossplane 安装到现有的 Kubernetes 集群中,创建 Crossplane Pod,从而能够安装 Crossplane Provider 资源。

如果您没有 Kubernetes 集群,请使用 Kind 在本地创建一个集群。

https://kind.sigs.k8s.io/

先决条件

  • 受支持的 Kubernetes 版本

  • Helm 版本v3.2.0或更高版本

安装 Crossplane

使用 Crossplane 发布的 Helm Chart 安装 Crossplane 。

添加 Crossplane Helm 存储库

使用helm repo add 命令添加 Crossplane 存储库

$ helm repo add crossplane-stable https://charts.crossplane.io/stable

使用 helm repo update 更新本地 Helm Chart 缓存

$ helm repo update

安装 Crossplane Helm Chart

使用 helm install 来安装 Crossplane Helm chart

查看 Crossplane 使用 helm install --dry-run --debug 选项对集群所做的更改 。Helm 会显示它应用的配置,而无需对 Kubernetes 集群进行更改。

Crossplane 创建并安装到 crossplane-system 命名空间中。

$ helm install crossplane \--namespace crossplane-system \--create-namespace crossplane-stable/crossplane

使用 kubectl get pods -n crossplane-system 查看已安装的 Crossplane Pod 。

$ kubectl get pods -n crossplane-systemNAME                                       READY   STATUS    RESTARTS   AGEcrossplane-6d67f8cd9d-g2gjw                1/1     Running   0          26mcrossplane-rbac-manager-86d9b5cf9f-2vc4s   1/1     Running   0          26m

使用--version <version>安装特定版本的 Crossplane。例如,安装版本1.10.0

$ helm install crossplane \--namespace crossplane-system \--create-namespace crossplane-stable/crossplane \--version 1.10.0

已安装的部署

Crossplane 在crossplane-system命名空间中创建两个 Kubernetes deployment 来部署 Crossplane Pod。

$ kubectl get deployments -n crossplane-systemNAME                      READY   UP-TO-DATE   AVAILABLE   AGEcrossplane                1/1     1            1           8m13scrossplane-rbac-manager   1/1     1            1           8m13s

Crossplane 部署

Crossplane 部署从crossplane-init container开始。init容器将 Crossplane自定义资源定义安装到 Kubernetes 集群中。init容器完成后,crossplane Pod 管理两个 Kubernetes 控制器。

  • 包管理器控制器安装提供程序和配置包。

  • 组合控制器安装并管理跨平面组合资源定义、组合和声明。

Crossplane-rbac-manager 部署

为已安装的 Crossplane Provider及其自定义资源定义创建 crossplane-rbac-manager 和管理 Kubernetes ClusterRoles。

Crossplane RBAC Manger 设计文档包含有关已安装 ClusterRoles 的更多信息,点击查看文档:

https://github.com/crossplane/crossplane/blob/master/design/design-doc-rbac-manager.md。

03 安装选项

自定义 Crossplane Helm Chart

Crossplane 支持在安装时通过配置 Helm Chart进行自定义。使用命令行或 Helm values 文件应用自定义。

命令行定制

在命令行中应用自定义设置 helm install crossplane --set <setting>=<value>

例如,更改镜像拉取策略:

$ helm install crossplane \--namespace crossplane-system \--create-namespace \crossplane-stable/crossplane \--set image.pullPolicy=Always

Helm 支持逗号分隔的参数。例如,要更改镜像拉取策略和副本数量:

$ helm install crossplane \--namespace crossplane-system \--create-namespace \crossplane-stable/crossplane \--set image.pullPolicy=Always,replicas=2

Helm values文件

在 Helm values 文件中应用自定义设置helm install crossplane -f

YAML 文件定义自定义设置。例如,要更改镜像拉取策略和副本数量:

使用自定义设置创建 YAML。

replicas: 2image:  pullPolicy: Always

应用 helm install

helm install crossplane \--namespace crossplane-system \--create-namespace \crossplane-stable/crossplane \-f settings.yaml

功能标志

Crossplane 引入了功能标志背后的新功能。Crossplane 默认启用 Beta 功能。要启用功能标志,请在 Helm Chart 中设置args值。可以通过运行crossplane core start --help或查看下表直接找到可用的功能标志。

图片

在 values.yaml 文件中或在安装时使用--set来设置这些标志,例如:--set args=["--enable-composition-functions","--enable-composition-webhook-schema-validation"].

安装预发布的 Crossplane 版本

从 Crossplane Helm 频道安装 Crossplane 的预发行版本master。频道中的版本master正在积极开发中,可能不稳定。

注意!

不要master在生产中使用 Crossplane 版本。切记使用stable通道。master仅用于测试和开发。

添加 Crossplane master Helm 存储库

使用 helm repo add 命令添加 Crossplane 存储库。

$ helm repo add crossplane-master https://charts.crossplane.io/master/

使用 helm repo update 更新本地 Helm Chart 缓存。

$ helm repo update

安装 Crossplane master Helm Chart

使用 helm install 来安装 Crossplane master Helm chart。

提示

查看 Crossplane 使用helm install --dry-run --debug选项对集群所做的更改。Helm 会显示它应用的配置,而无需对 Kubernetes 集群进行更改。

Crossplane 创建并安装到 crossplane-system 命名空间中。

$ helm install crossplane \--namespace crossplane-system \--create-namespace crossplane-master/crossplane \--devel

参考链接:

https://blog.crossplane.io/why-crossplane-is-so-exciting/

https://docs.crossplane.io/v1.13/software/install/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值