--- reviewers: - eparis - pmorie title: 使用 ConfigMap 来配置 Redis content_template: templates/tutorial --- {{% capture overview %}} 这篇文档基于[使用 ConfigMap 来配置 Containers](/docs/tasks/configure-pod-container/configure-pod-configmap/) 这个任务,提供了一个使用 ConfigMap 来配置 Redis 的真实案例。 {{% /capture %}} {{% capture objectives %}} * * 创建一个包含以下内容的 `kustomization.yaml` 文件: * 一个 ConfigMap 生成器 * 一个使用 ConfigMap 的 Pod 资源配置 * 使用 `kubectl apply -k ./` 应用整个路径的配置 * 验证配置已经被正确应用。 {{% /capture %}} {{% capture prerequisites %}} * {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} * 此页面上显示的示例适用于 `kubectl` 1.14和在其以上的版本。 * 理解[使用ConfigMap来配置Containers](/docs/tasks/configure-pod-container/configure-pod-configmap/)。 {{% /capture %}} {{% capture lessoncontent %}} ## 真实世界的案例:使用 ConfigMap 来配置 Redis 按照下面的步骤,您可以使用ConfigMap中的数据来配置Redis缓存。 1. 根据`docs/user-guide/configmap/redis/redis-config`来创建一个ConfigMap: {{< codenew file="pods/config/redis-config" >}} ```shell curl -OL https://k8s.io/examples/pods/config/redis-config cat <./kustomization.yaml configMapGenerator: - name: example-redis-config files: - redis-config EOF ``` 将 pod 的资源配置添加到 `kustomization.yaml` 文件中: {{< codenew file="pods/config/redis-pod.yaml" >}} ```shell curl -OL https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/pods/config/redis-pod.yaml cat <>./kustomization.yaml resources: - redis-pod.yaml EOF ``` 应用整个 kustomization 文件夹以创建 ConfigMap 和 Pod 对象: ```shell kubectl apply -k . ``` 使用以下命令检查创建的对象 ```shell > kubectl get -k . NAME DATA AGE configmap/example-redis-config-dgh9dg555m 1 52s NAME READY STATUS RESTARTS AGE pod/redis 1/1 Running 0 52s ``` 在示例中,配置卷挂载在 `/redis-master` 下。 它使用 `path` 将 `redis-config` 密钥添加到名为 `redis.conf` 的文件中。 因此,redis配置的文件路径为 `/redis-master/redis.conf`。 这是镜像将在其中查找 redis master 的配置文件的位置。 使用 `kubectl exec` 进入 pod 并运行 `redis-cli` 工具来验证配置已正确应用: ```shell kubectl exec -it redis redis-cli 127.0.0.1:6379> CONFIG GET maxmemory 1) "maxmemory" 2) "2097152" 127.0.0.1:6379> CONFIG GET maxmemory-policy 1) "maxmemory-policy" 2) "allkeys-lru" ``` 删除创建的 pod: ```shell kubectl delete pod redis ``` {{% /capture %}} {{% capture whatsnext %}} * 了解有关 [ConfigMaps](/docs/tasks/configure-pod-container/configure-pod-configmap/)的更多信息。 {{% /capture %}}