• 订阅消息组件由 redis 改为 rabbitmq


    刚开始测试 dapr 时为了图省事,使用了 pubsub.redis,现在准备上生产环境,改用支持消息持久化的 pubsub.rabbitmq。

    之前使用的 pubsub.redis 资源清单如下

    apiVersion: dapr.io/v1alpha1
    kind: Component
    metadata:
      name: pubsub
      namespace: production
    spec:
      type: pubsub.redis
      version: v1
      metadata:
        - name: redisHost
          value: redis-master.production.svc.cluster.local:6379
        - name: redisPassword
          secretKeyRef:
            name: redis
            key: redis-password
    

    用 helm 安装 rabbitmq,使用 chart 的是 bitnami/rabbitmq

    $ helm repo add bitnami https://charts.bitnami.com/bitnami
    $ helm install rabbitmq bitnami/rabbitmq
    

    Persistent volume 是通过 kubernets dynamic volume provisioning 动态创建,StorageClass 用的是阿里云 nas。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: sc-nas-production-pvs
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      volumeAs: subpath
      server: xxxxxx.cn-hangzhou.extreme.nas.aliyuncs.com:/production/k8s-pvs/
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    

    pubsub.rabbitmq 的资源清单如下

    apiVersion: dapr.io/v1alpha1
    kind: Component
    metadata:
      name: pubsub
      namespace: production
    spec:
      type: pubsub.rabbitmq
      version: v1
      metadata:
        - name: host
          value: "amqp://user:password@rabbitmq.production.svc.cluster.local:5672"
        - name: durable
          value: true
    

    需要注意的是 host 参数部分,user:password 是连接 rabbitmq 的用户名与密码, 用 bitnami/rabbitmq chart 创建的 rabbitmq 默认用户名就是 user,密码在 secret 中,可以通过下面的命令获取

    kubectl get secret --namespace "production" rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode
    

    Apply 上面的 rabbitmq-pubsub.yaml,发布/订阅消息组件就变成 rabbitmq,不用改1行应用代码,dapr 的优势立马体现。

  • 相关阅读:
    Python创建空DataFrame及添加行数据
    Python读取Excel文件
    Python拆分DataFrame
    Python中识别DataFrame中的nan
    Python线性回归算法【解析解,sklearn机器学习库】
    Python鸢尾花分类实现
    Python机器学习入门
    Python使用map,reduce高阶函数模拟实现Spark的reduceByKey算子功能
    Python参数传递(传值&传引用)
    Python迭代器
  • 原文地址:https://www.cnblogs.com/dudu/p/15640056.html
Copyright © 2020-2023  润新知