sharetwitterlinkedIn

Pulsar Resources Operator for Kubernetes 正式开源

September 07, 2022
head img

我们很高兴地宣布 Pulsar Resources Operator 正式开源,它遵循 Apache License V2 协议。Pulsar Resources Operator 对 Kubernetes 上的关键 Pulsar 资源提供了声明式管理功能。

什么是 Pulsar Resources Operator?

Pulsar Resources Operator 是一个独立的控制器,它可以使用清单文件自动管理 Kubernetes 上的 Pulsar 资源。Pulsar Resources Operator 为以下 Pulsar 资源提供完整的生命周期管理,包括创建、更新和删除:

为何使用 Pulsar Resources Operator?

虽然你可以使用如 pulsar-admin 和 pulsarctl 等命令行工具或者客户端 SDK 管理 Pulsar 资源,但是当你在 Kubernetes 上运行 Pulsar 集群时,这些都不是最佳实践。通过应用清单文件创建 Pulsar 资源简单且有用,特别是如果你想在创建新的 Pulsar 集群时在 CI 工作流程中初始化一些基本的 Pulsar 资源。

开始使用 Pulsar Resources Operator

你可以使用官方支持的 pulsar-resources-operator Helm chart 安装 Pulsar Resources Operator。它提供了CRD(自定义资源定义,Custom Resource Definition)和控制器来管理 Pulsar 。

  • 安装与集群兼容的 kubectl(v1.16 - v1.24 版本)(+/- 1 你的集群最小的发布版本)
  • 安装 Helm(v3.0.2 或更高版本)
  • 准备一个 Kubernetes 集群(v1.16 - v1.24 版本)
  • 准备一个 Pulsar 集群

要安装 Pulsar Resources Operator,执行以下步骤:

  1. 添加 StreamNative chart 仓库。

    helm repo add streamnative https://charts.streamnative.io
    helm repo update
    
  2. 使用 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>
    
  3. 若要升级 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

PulsarConnection 包含 Pulsar 集群的地址和授权信息。Operator 通过它访问 Pulsar 集群并创建其他资源。创建 PulsarConnection 的步骤如下:

  1. 定义一个名为 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
    
  2. 应用该 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 资源

Pulsar Resources Operator 可以使用 YAML 文件在 Kubernetes 上快速创建 Pulsar 资源,如 PulsarTenant 和 PulsarNamespace。以下示例演示了如何在 Kubernetes 上创建 PulsarTenant 对象。

  1. 创建一个名为 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
    
  2. 应用该 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。

© 北京原流科技有限公司Apache、Apache Pulsar、Apache BookKeeper、Apache Flink 及相关开源项目名称均为 Apache 软件基金会商标。条款隐私