Skip to content

Commit

Permalink
feat: add configMap cache docs
Browse files Browse the repository at this point in the history
  • Loading branch information
dyx1234 committed Sep 28, 2024
1 parent ef8c94f commit 9a1e7e2
Showing 1 changed file with 62 additions and 4 deletions.
66 changes: 62 additions & 4 deletions docs/zh/client/java-sdk-user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ request.timeout=2000
batch=2000
```

> 注:若部署在Kubernetes环境,可以同时开启configMap缓存以进一步提高可用性
> 注:部署在Kubernetes环境使用configmap缓存模式时,也会同时开启本地文件缓存以进一步提高可用性
#### 1.2.3.1 自定义缓存路径

Expand Down Expand Up @@ -406,7 +406,7 @@ apollo.label=YOUR-APOLLO-LABEL
在2.4.0版本开始,客户端在Kubernetes环境下的可用性得到了加强,开启configMap缓存后,客户端会将从服务端拉取到的配置信息在configMap中缓存一份,在服务不可用,或网络不通,且本地缓存文件丢失的情况下,依然能从configMap恢复配置。以下是相关配置

> 由于需要对configmap进行读写操作,所以客户端所在pod必须有相应读写权限,具体配置方法见[]()
> 由于需要对configmap进行读写操作,所以客户端所在pod必须有相应读写权限,具体配置方法可参考下文
`apollo.cache.kubernetes.enable`:是否启动configMap缓存机制,默认false

Expand All @@ -427,8 +427,66 @@ value:内容为对应的配置信息的json格式字符串
> cluster是应用使用的集群,一般在本地模式下没有做过配置的话,是default
> namespace就是应用使用的配置namespace,一般是application
// TODO 开读写权限的指南

如何授权一个Pod的Service Account具有对ConfigMap的读写权限:
1. 创建Service Account: 如果还没有Service Account,你需要创建一个。
```apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
namespace: my-namespace
```
2. 创建Role或ClusterRole: 定义一个Role或ClusterRole,授予对特定ConfigMap的读写权限。如果ConfigMap是跨多个Namespace使用的,应该使用ClusterRole。

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: my-namespace
name: configmap-reader
rules:
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "watch", "list", "update", "patch"]
```
3. 绑定Service Account到Role或ClusterRole: 使用RoleBinding或ClusterRoleBinding将Service Account绑定到上面创建的Role或ClusterRole。
```
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: configmap-reader-binding
namespace: my-namespace
subjects:
- kind: ServiceAccount
name: my-service-account
namespace: my-namespace
roleRef:
kind: Role
name: configmap-reader
apiGroup: rbac.authorization.k8s.io
```
1. 在Pod配置中指定Service Account: 确保Pod的配置中使用了上面创建的Service Account。
```
apiVersion: v1
kind: Pod
metadata:
name: my-pod
namespace: my-namespace
spec:
serviceAccountName: my-service-account
containers:
- name: my-container
image: my-image
```
1. 应用配置: 使用kubectl命令行工具应用这些配置。
```
kubectl apply -f service-account.yaml
kubectl apply -f role.yaml
kubectl apply -f role-binding.yaml
kubectl apply -f pod.yaml
```
这些步骤使Pod中的Service Account具有对指定ConfigMap的读写权限。

如果ConfigMap是跨Namespace的,使用ClusterRole和ClusterRoleBinding代替Role和RoleBinding,并确保在所有需要访问ConfigMap的Namespace中应用这些配置。
# 二、Maven Dependency
Apollo的客户端jar包已经上传到中央仓库,应用在实际使用时只需要按照如下方式引入即可。
```xml
Expand Down

0 comments on commit 9a1e7e2

Please sign in to comment.