文章目录

  • 介绍
  • 安装helm
  • 更新helm库
  • 初始化dapr
  • 高可用方式安装
  • 卸载dapr
  • 验证
  • k8s的dapr安装rocketmq
  • 总结



介绍

Dapr(Distributed Application Runtime)是一个开源项目,旨在简化分布式应用程序的开发。它提供了一个跨语言的运行时环境,用于构建微服务应用程序,并提供了一组工具和库来解决分布式系统的常见问题,例如状态管理、消息传递、服务调用等。

以下是 Dapr 的一些关键特性和组成部分:

  1. 语言无关性:Dapr 提供了与编程语言无关的 API,可以在任何编程语言中使用。这使得开发人员可以使用他们最熟悉的编程语言来构建微服务应用程序。
  2. 状态管理:Dapr 提供了用于管理应用程序状态的 API 和组件。它支持多种状态存储后端,包括本地存储、数据库、缓存等,并提供了用于访问和操作状态的简单接口。
  3. 消息传递:Dapr 支持通过诸如 RabbitMQ、Kafka、Azure Service Bus 等消息代理实现的消息传递。它提供了一组 API 来发送和接收消息,并支持发布/订阅、队列等消息传递模式。
  4. 服务调用:Dapr 提供了用于服务间通信的 API 和组件。开发人员可以使用它来调用远程服务,而无需关心底层通信细节。Dapr 支持 HTTP、gRPC 等通信协议,并提供了服务发现、负载均衡等功能。
  5. 事件驱动:Dapr 支持基于事件的编程模型。开发人员可以定义事件触发器,并在特定事件发生时执行相应的操作。这种模型可用于构建响应式、松耦合的应用程序。
  6. 安全性:Dapr 提供了一组安全性功能,包括身份验证、访问控制等。它可以与现有的身份提供者(如 Azure Active Directory、OAuth 等)集成,以确保应用程序的安全性。
  7. 可观察性:Dapr 提供了用于监控和诊断应用程序的工具和组件。开发人员可以使用它来收集指标、跟踪请求、记录日志等,以便更好地了解应用程序的运行状况。

安装helm

三个包放到一个目录下

chmod +x get
./get
helm version

k8s 安装gitlab_centos

更新helm库

helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
helm search repo dapr --devel --versions #查看可以安装那些版本的

k8s 安装gitlab_k8s 安装gitlab_02


k8s 安装gitlab_kubernetes_03

初始化dapr

# test-dapr是k8s的命名空间
helm install dapr dapr/dapr --namespace test-dapr --wait
helm upgrade --install dapr dapr/dapr \
--version=1.2 \
--namespace test-dapr \
--create-namespace \
--wait

高可用方式安装

helm upgrade --install dapr dapr/dapr \
--version=1.2 \
--namespace test-dapr \
--create-namespace \
--set global.ha.enabled=true \
--wait

卸载dapr

helm uninstall dapr --namespace test-dapr

验证

kubectl -n test-dapr get pods

它还有页面,但是svc那要增加一个,把那个cluster修改为NodePort方式

k8s 安装gitlab_centos_04

k8s的dapr安装rocketmq

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: pubsub
  namespace: test-dapr
spec:
  type: pubsub.rabbitmq
  version: v1
  metadata:
    - name: host
      value: "amqp://l2:l2@rabbitmq:5672"
    - name: durable
      value: true
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq
  namespace: test-dapr
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      containers:
      - env:
        - name: RABBITMQ_DEFAULT_USER
          value: l2
        - name: RABBITMQ_DEFAULT_PASS
          value: l2
        image: 自己封装的镜像,可以百度找下任意的
        imagePullPolicy: IfNotPresent
        name: rabbitmq
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  namespace: test-dapr
spec:
  ports:
  - name: data-port
    nodePort: 30672
    port: 5672
    protocol: TCP
    targetPort: 5672
  - name: web-port
    nodePort: 30220
    port: 15672
    protocol: TCP
    targetPort: 15672
  selector:
    app: rabbitmq
  sessionAffinity: None
  type: NodePort

总结

本文仅仅简单介绍了k8s安装dapr的使用,以及安装rocketmq