# Configurando o Redis usando um ConfigMap

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

Esta página fornece um exemplo prático de como configurar o Redis usando um ConfigMap e baseia-se na tarefa
[Configurar um Pod para usar um ConfigMap](/pt-br/docs/tasks/configure-pod-container/configure-pod-configmap/).



## Objetivos


* Criar um ConfigMap com valores de configuração para o Redis.
* Criar um Pod do Redis que monte e use o ConfigMap criado.
* Verificar se a configuração foi aplicada corretamente.


## Antes de você começar


<p>Você precisa ter um cluster do Kubernetes e a ferramenta de linha de comando kubectl deve estar configurada para se comunicar com seu cluster. É recomendado executar esse tutorial em um cluster com pelo menos dois nós que não estejam atuando como hosts de camada de gerenciamento. Se você ainda não possui um cluster, pode criar um usando o <a href="/pt-br/docs/tasks/tools/#minikube">minikube</a> ou pode usar um dos seguintes ambientes:</p>
<ul>
<li><a href="https://labs.iximiuz.com/playgrounds?category=kubernetes&filter=all">iximiuz Labs</a></li>
<li><a href="https://killercoda.com/playgrounds/scenario/kubernetes">Killercoda</a></li>
<li><a href="https://kodekloud.com/public-playgrounds">KodeKloud</a></li>
</ul>
 
  <p>Para verificar a versão, digite  <code>kubectl version</code>.</p>


* O exemplo mostrado nesta página funciona com `kubectl` 1.14 ou superior.
* Entenda [Configurar um Pod para usar um ConfigMap](/pt-br/docs/tasks/configure-pod-container/configure-pod-configmap/).


<!-- lessoncontent -->


## Exemplo prático: Configurando o Redis usando um ConfigMap

Siga os passos abaixo para configurar um cache Redis usando dados armazenados em um ConfigMap.

Primeiro, crie um ConfigMap com um bloco de configuração vazio:

```shell
cat <<EOF >./example-redis-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: example-redis-config
data:
  redis-config: ""
EOF
```
Aplique o ConfigMap criado acima, juntamente com o manifesto de Pod Redis:

```shell
kubectl apply -f example-redis-config.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/config/redis-pod.yaml
```

Examine o conteúdo do manifesto do Pod Redis e observe o seguinte:

* Um volume chamado `config` é criado em `spec.volumes[1]`
* A `key` e o `path` em `spec.volumes[1].configMap.items[0]` expõem a chave `redis-config` do ConfigMap
  `example-redis-config` como um arquivo chamado `redis.conf` no volume `config`.
* O volume `config` é então montado em `/redis-master` por `spec.containers[0].volumeMounts[1]`.

O efeito final é expor os dados de `data.redis-config` do ConfigMap `example-redis-config`
acima como `/redis-master/redis.conf` dentro do Pod.























<div class="highlight code-sample">
    <div class="copy-code-icon">
    <a href="https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/config/redis-pod.yaml" download="pods/config/redis-pod.yaml"><code>pods/config/redis-pod.yaml</code>
    </a><img src="/images/copycode.svg" class="icon-copycode" onclick="copyCode('pods-config-redis-pod-yaml')" title="Copiar pods/config/redis-pod.yaml para a área de transferência"></img></div>
    <div class="includecode" id="pods-config-redis-pod-yaml"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">Pod</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">redis</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">containers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">redis</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">redis:8.0.2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">command</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">redis-server</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;/redis-master/redis.conf&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">env</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">MASTER</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;true&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="nt">containerPort</span><span class="p">:</span><span class="w"> </span><span class="m">6379</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">resources</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">limits</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;0.1&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">volumeMounts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/redis-master-data</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/redis-master</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">emptyDir</span><span class="p">:</span><span class="w"> </span>{}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">configMap</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">example-redis-config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">items</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span>- <span class="nt">key</span><span class="p">:</span><span class="w"> </span><span class="l">redis-config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">redis.conf</span><span class="w">
</span></span></span></code></pre></div></div>
</div>

Examine os objetos criados:

```shell
kubectl get pod/redis configmap/example-redis-config
```

Você deverá ver a seguinte saída:

```
NAME        READY   STATUS    RESTARTS   AGE
pod/redis   1/1     Running   0          8s

NAME                             DATA   AGE
configmap/example-redis-config   1      14s
```

Lembre-se de que deixamos a chave `redis-config` no ConfigMap `example-redis-config` em branco:

```shell
kubectl describe configmap/example-redis-config
```
Você deverá ver uma chave `redis-config` vazia:

```shell
Name:         example-redis-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
redis-config:
```

Use `kubectl exec` para entrar no pod e executar a ferramenta `redis-cli` para verificar a configuração atual:

```shell
kubectl exec -it pod/redis -- redis-cli
```

Verifique `maxmemory`:

```shell
127.0.0.1:6379> CONFIG GET maxmemory
```

Ele deve mostrar o valor padrão 0:

```shell
1) "maxmemory"
2) "0"
```
Da mesma forma, verifique `maxmemory-policy`:

```shell
127.0.0.1:6379> CONFIG GET maxmemory-policy
```
O que também deve retornar seu valor padrão `noeviction`:

```shell
1) "maxmemory-policy"
2) "noeviction"
```
Agora, vamos adicionar alguns valores de configuração ao ConfigMap `example-redis-config`:























<div class="highlight code-sample">
    <div class="copy-code-icon">
    <a href="https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/config/example-redis-config.yaml" download="pods/config/example-redis-config.yaml"><code>pods/config/example-redis-config.yaml</code>
    </a><img src="/images/copycode.svg" class="icon-copycode" onclick="copyCode('pods-config-example-redis-config-yaml')" title="Copiar pods/config/example-redis-config.yaml para a área de transferência"></img></div>
    <div class="includecode" id="pods-config-example-redis-config-yaml"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">ConfigMap</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">example-redis-config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">data</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">redis-config</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd">    maxmemory 2mb
</span></span></span><span class="line"><span class="cl"><span class="sd">    maxmemory-policy allkeys-lru</span><span class="w">
</span></span></span></code></pre></div></div>
</div>

Aplique o ConfigMap atualizado:

```shell
kubectl apply -f example-redis-config.yaml
```

Confirme que o ConfigMap foi atualizado:

```shell
kubectl describe configmap/example-redis-config
```

Você deverá ver os valores de configuração que acabamos de adicionar:

```shell
Name:         example-redis-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
redis-config:
----
maxmemory 2mb
maxmemory-policy allkeys-lru
```

Verifique novamente o Pod Redis usando `redis-cli` via `kubectl exec` para confirmar se a configuração foi aplicada:

```shell
kubectl exec -it pod/redis -- redis-cli
```

Verifique `maxmemory`:

```shell
127.0.0.1:6379> CONFIG GET maxmemory
```

Ele permanece no valor padrão de 0:

```shell
1) "maxmemory"
2) "0"
```

Da mesma forma, `maxmemory-policy` permanece com a configuração padrão `noeviction`:

```shell
127.0.0.1:6379> CONFIG GET maxmemory-policy
```

Retorna:

```shell
1) "maxmemory-policy"
2) "noeviction"
```

Os valores de configuração não mudaram porque o Pod precisa ser reiniciado para carregar os valores atualizados dos ConfigMaps associados. Vamos excluir e recriar o Pod:

```shell
kubectl delete pod redis
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/config/redis-pod.yaml
```

Agora verifique os valores de configuração mais uma vez:

```shell
kubectl exec -it pod/redis -- redis-cli
```

Verifique `maxmemory`:

```shell
127.0.0.1:6379> CONFIG GET maxmemory
```

Ele agora deve retornar o valor atualizado de 2097152:

```shell
1) "maxmemory"
2) "2097152"
```

Da mesma forma, `maxmemory-policy` também foi atualizado:

```shell
127.0.0.1:6379> CONFIG GET maxmemory-policy
```

Ele agora reflete o valor desejado de `allkeys-lru`:

```shell
1) "maxmemory-policy"
2) "allkeys-lru"
```

Limpe o ambiente excluindo os recursos criados:

```shell
kubectl delete pod/redis configmap/example-redis-config
```

## Próximos passos

* Aprenda mais sobre [ConfigMaps](/pt-br/docs/tasks/configure-pod-container/configure-pod-configmap/).
* Veja um exemplo de [como atualizar configuração usando ConfigMap](/docs/tutorials/configuration/updating-configuration-via-a-configmap/).
