我们很高兴地宣布 Pulsar Resources Operator 正式开源,它遵循 Apache License V2 协议。Pulsar Resources Operator 对 Kubernetes 上的关键 Pulsar 资源提供了声明式管理功能。
Pulsar Resources Operator 是一个独立的控制器,它可以使用清单文件自动管理 Kubernetes 上的 Pulsar 资源。Pulsar Resources Operator 为以下 Pulsar 资源提供完整的生命周期管理,包括创建、更新和删除:
虽然你可以使用如 pulsar-admin 和 pulsarctl 等命令行工具或者客户端 SDK 管理 Pulsar 资源,但是当你在 Kubernetes 上运行 Pulsar 集群时,这些都不是最佳实践。通过应用清单文件创建 Pulsar 资源简单且有用,特别是如果你想在创建新的 Pulsar 集群时在 CI 工作流程中初始化一些基本的 Pulsar 资源。
你可以使用官方支持的 pulsar-resources-operator
Helm chart 安装 Pulsar Resources Operator。它提供了CRD(自定义资源定义,Custom Resource Definition)和控制器来管理 Pulsar 。
要安装 Pulsar Resources Operator,执行以下步骤:
添加 StreamNative chart 仓库。
helm repo add streamnative https://charts.streamnative.io
helm repo update
使用 pulsar-resources-operator
Helm chart 安装 operator。
helm install <release-name> streamnative/pulsar-resources-operator -n <k8s-namespace> --create-namespace
kubectl get pods -n <k8s-namespace>
若要升级 operator ,使用下面的命令。你需要拉取 chart 文件,解压 TGZ 文件,然后应用 CRD。
helm repo update
helm pull streamnative/pulsar-resources-operator
tar -zxvf pulsar-resources-operator-v0.1.0.tgz
kubectl apply -f pulsar-resources-operator/crds
helm upgrade <release-name> streamnative/pulsar-resources-operator -n <k8s-namespace>
更多安装的详情,请在 GitHub 上查看安装文档。
PulsarConnection 包含 Pulsar 集群的地址和授权信息。Operator 通过它访问 Pulsar 集群并创建其他资源。创建 PulsarConnection 的步骤如下:
定义一个名为 pulsar-connection
的连接,包含下面代码所示字段。
apiVersion: pulsar.streamnative.io/v1alpha1
kind: PulsarConnection
metadata:
name: pulsar-connection
namespace: <k8s-namespace>
spec:
adminServiceURL: http://pulsar-sn-platform-broker.test.svc.cluster.local:8080
应用该 YAML 文件创建 PulsarConnection 并检查其状态。
kubectl apply -f connection.yaml
kubectl get pulsarconnections -n <k8s-namespace>
NAME ADMIN_SERVICE_URL GENERATION OBSERVED_GENERATION READY
pulsar-connection http://pulsar-xxxx:8080 1 1 True
Pulsar Resources Operator 可以使用 YAML 文件在 Kubernetes 上快速创建 Pulsar 资源,如 PulsarTenant 和 PulsarNamespace。以下示例演示了如何在 Kubernetes 上创建 PulsarTenant 对象。
创建一个名为 pulsar-tenant 的 YAML 文件,包含下面代码所示字段。
apiVersion: pulsar.streamnative.io/v1alpha1
kind: PulsarTenant
metadata:
name: pulsar-tenant
namespace: <k8s-namespace>
spec:
name: pulsar-tenant
connectionRef:
name: pulsar-connection
adminRoles:
- admin
- ops
应用该 YAML 文件创建 tenant 并检查其状态。
kubectl apply -f tenant.yaml
kubectl get pulsartenants -n <k8s-namespace>
NAME RESOURCE_NAME GENERATION OBSERVED_GENERATION READY
pulsar-tenant pulsar-tenant 1 1 True
你可以通过查看 Github 仓库和教程了解更多 Pulsar 资源的不同配置。欢迎大家使用 Pulsar Resources Operator。如果遇到疑问,可以在 GitHub 上创建 issue。