How-To: 限定组件作用范围在一或多个应用

    Dapr 组件的名称空间(注意与 Kubernetes 名称空间概念区分),这意味着 Dapr runtime 实例只能访问已部署到同一名称空间的组件。

    当 Dapr 运行时,它将自己的配置名称空间与其加载的组件的命名空间进行匹配,并且仅初始化与其名称空间匹配的组件。 并且不会加载不同命名空间中的所有其他组件。

    名称空间可用于限制组件访问特定的 Dapr 实例。

    在自托管模式下,开发人员可以通过设置 NAMESPACE 环境变量来指定 Dapr 实例的名称空间。 如果设置了 NAMESPACE 环境变量,Dapr 只会加载其元数据中指定相同名称空间的组件。

    例如,将此组件 production 命名空间中

    MacOS/Linux:

    1. # run Dapr as usual

    Windows:

    让我们考虑在 Kubernetes 中的以下组件:

    1. apiVersion: dapr.io/v1alpha1
    2. kind: Component
    3. metadata:
    4. namespace: production
    5. spec:
    6. type: state.redis
    7. metadata:
    8. - name: redisHost
    9. value: redis-master:6379

    在此示例中,只有运行在 production 名称空间内的 Dapr 实例才能访问 Redis 组件。

    在服务调用时使用名称空间

    在名称空间中使用服务调用应用程序时,您必须将其与名称空间进行限定。 例如,在 上调用 ping 方法,该方法限定范围为 production 名称空间。

    MacOS/Linux:

    1. curl -i -d '{ "message": "hello" }' \
    2. -H "Content-type: application/json" \
    3. -H "dapr-api-token: ${API_TOKEN}" \
    4. https://api.demo.dapr.team/v1.0/invoke/myapp.production/method/ping

    Read for more information on scoping components.

    对具有作用域的组件的应用程序访问

    开发人员和操作员可能希望将一个数据库的访问权限限制为某个应用程序或一组特定应用程序。 为此,Dapr 允许您在组件 YAML 上指定scopes`作用域。 添加到组件的这些应用程序作用域仅限制具有特定 ID 的应用程序才能使用该组件。

    下面的示例演示如何给予两个启用的Dapr应用访问权限, 使用 app1` 和 `app2` 两个应用程序可以访问名为 `statestore` 的 Redis 组件,这个组件部署在 `production` 命名空间

    `

    相关链接