Skip to content

Commit 9a1e7e2

Browse files
committed
feat: add configMap cache docs
1 parent ef8c94f commit 9a1e7e2

1 file changed

Lines changed: 62 additions & 4 deletions

File tree

docs/zh/client/java-sdk-user-guide.md

Lines changed: 62 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ request.timeout=2000
163163
batch=2000
164164
```
165165

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

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

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

@@ -427,8 +427,66 @@ value:内容为对应的配置信息的json格式字符串
427427
> cluster是应用使用的集群,一般在本地模式下没有做过配置的话,是default
428428
> namespace就是应用使用的配置namespace,一般是application
429429
430-
// TODO 开读写权限的指南
431-
430+
如何授权一个Pod的Service Account具有对ConfigMap的读写权限:
431+
1. 创建Service Account: 如果还没有Service Account,你需要创建一个。
432+
```apiVersion: v1
433+
kind: ServiceAccount
434+
metadata:
435+
name: my-service-account
436+
namespace: my-namespace
437+
```
438+
2. 创建Role或ClusterRole: 定义一个Role或ClusterRole,授予对特定ConfigMap的读写权限。如果ConfigMap是跨多个Namespace使用的,应该使用ClusterRole。
439+
440+
```
441+
apiVersion: rbac.authorization.k8s.io/v1
442+
kind: Role
443+
metadata:
444+
namespace: my-namespace
445+
name: configmap-reader
446+
rules:
447+
- apiGroups: [""]
448+
resources: ["configmaps"]
449+
verbs: ["get", "watch", "list", "update", "patch"]
450+
```
451+
3. 绑定Service Account到Role或ClusterRole: 使用RoleBinding或ClusterRoleBinding将Service Account绑定到上面创建的Role或ClusterRole。
452+
```
453+
apiVersion: rbac.authorization.k8s.io/v1
454+
kind: RoleBinding
455+
metadata:
456+
name: configmap-reader-binding
457+
namespace: my-namespace
458+
subjects:
459+
- kind: ServiceAccount
460+
name: my-service-account
461+
namespace: my-namespace
462+
roleRef:
463+
kind: Role
464+
name: configmap-reader
465+
apiGroup: rbac.authorization.k8s.io
466+
```
467+
1. 在Pod配置中指定Service Account: 确保Pod的配置中使用了上面创建的Service Account。
468+
```
469+
apiVersion: v1
470+
kind: Pod
471+
metadata:
472+
name: my-pod
473+
namespace: my-namespace
474+
spec:
475+
serviceAccountName: my-service-account
476+
containers:
477+
- name: my-container
478+
image: my-image
479+
```
480+
1. 应用配置: 使用kubectl命令行工具应用这些配置。
481+
```
482+
kubectl apply -f service-account.yaml
483+
kubectl apply -f role.yaml
484+
kubectl apply -f role-binding.yaml
485+
kubectl apply -f pod.yaml
486+
```
487+
这些步骤使Pod中的Service Account具有对指定ConfigMap的读写权限。
488+
489+
如果ConfigMap是跨Namespace的,使用ClusterRole和ClusterRoleBinding代替Role和RoleBinding,并确保在所有需要访问ConfigMap的Namespace中应用这些配置。
432490
# 二、Maven Dependency
433491
Apollo的客户端jar包已经上传到中央仓库,应用在实际使用时只需要按照如下方式引入即可。
434492
```xml

0 commit comments

Comments
 (0)