为了启动和运行状态和 发布/订阅 构建块,需要两个组件。
支持的组件的完整列表可以在这里找到:
此页的其余部分描述了如何使用Redis启动和运行。
Dapr可以使用任何Redis实例–无论是在本地开发机器上的容器化的还是在托管云服务上的。 如果您已经有了Redis存储,请转到 配置 部分。
作为初始化过程的一部分,Dapr CLI 会自动在自托管环境中安装 Redis。 您都已设置完毕,可以跳转到[下一步](下一步)
您可以使用 helm 在我们的 Kubernetes 集群中快速创建 dapr 实例。 此方法需要 安装 Helm v3。
安装 Redis 到您的集群:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install redis bitnami/redis
请注意,您将需要 Redis 版本大于 5, 这是Dapr 的 发布/订阅 功能所要求的。 如果你打算将Redis仅仅作为一个状态存储(而不是用于 发布/订阅),可以使用一个低版本。
运行kubectl get pods
来查看现在正在集群中运行的Redis容器。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-0 1/1 Running 0 69s
redis-slave-0 1/1 Running 0 69s
redis-slave-1 1/1 Running 0 22s
请注意,主机名是 redis-master.default.svc.cluster.local:6379
,Kubernetes 密钥 redis
是自动创建的。
此方法需要 Azure 订阅。
xxxxxx.redis.cache.windows.net:6380
。 注意这一点,以备后用。kubectl create secret generic redis --from-literal=redis-password=*********
kubectl create secret generic redis --from-literal=redis-password=*********
kubectl create secret generic redis --from-literal=redis-password=*********
Dapr 使用组件来定义用于构建块功能的资源。 这些步骤通过如何将你上面创建的资源连接到Dapr的 状态 和 发布/订阅 。
在自托管模式下,组件文件自动创建以下内容:
%USERPROFILE%\.dapr\components\
$HOME/.dapr/components
对于Kubernetes来说,文件可以在任何目录下创建,因为它们是用kubectl
应用的。
创建名为 redis-state.yaml
的文件, 并粘贴以下内容:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
namespace: default
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: <REPLACE WITH HOSTNAME FROM ABOVE - for Redis on Kubernetes it is redis-master.default.svc.cluster.local:6379>
- name: redisPassword
secretKeyRef:
name: redis
key: redis-password
这个例子使用的是用上面的说明设置集群时创建的 kubernetes 密钥。
创建名为 redis-pubsub.yaml 的文件, 并粘贴以下内容:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: pubsub
namespace: default
spec:
type: pubsub.redis
version: v1
metadata:
- name: redisHost
value: <REPLACE WITH HOSTNAME FROM ABOVE - for Redis on Kubernetes it is redis-master.default.svc.cluster.local:6379>
- name: redisPassword
secretKeyRef:
name: redis
key: redis-password
这个例子使用的是用上面的说明设置集群时创建的 kubernetes 密钥。
仅用于开发目的,你可以跳过创建 kubernetes 密钥,直接将密码放入 Dapr 组件文件中。
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
namespace: default
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: <HOST>
- name: redisPassword
value: <PASSWORD>
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: pubsub
namespace: default
spec:
type: pubsub.redis
version: v1
metadata:
- name: redisHost
value: <HOST>
- name: redisPassword
value: <PASSWORD>
默认情况下,当你运行 dapr init
时,CLI 创建一个本地的 Redis 实例。 但是,如果你想要配置一个不同的 Redis 实例你可以:
$HOME/.dapr/components
%USERPROFILE%\.dapr\components
components
目录,其中包含YAML文件,并提供dapr run
命令的路径,标志为--components-path
。--components-path
.运行 kubectl apply -f <FILENAME>
同时适用于 状态文件 和 发布订阅文件:
kubectl apply -f redis-state.yaml
kubectl apply -f redis-pubsub.yaml