@@ -163,7 +163,7 @@ request.timeout=2000
163163batch =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
433491Apollo的客户端jar包已经上传到中央仓库,应用在实际使用时只需要按照如下方式引入即可。
434492``` xml
0 commit comments