Este documento pode estar desatualizado

Este documento possui uma data de atualização mais antiga que o documento original. Portanto, este conteúdo pode estar desatualizado. Se você lê inglês, veja a versão em inglês para acessar a versão mais atualizada: Configuring Redis using a ConfigMap

Configurando o Redis usando um ConfigMap

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.

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

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 minikube ou pode usar um dos seguintes ambientes:

Para verificar a versão, digite kubectl version.

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:

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:

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.

apiVersion: v1 kind: Pod metadata:  name: redis spec:  containers:  - name: redis  image: redis:8.0.2  command:  - redis-server  - "/redis-master/redis.conf"  env:  - name: MASTER  value: "true"  ports:  - containerPort: 6379  resources:  limits:  cpu: "0.1"  volumeMounts:  - mountPath: /redis-master-data  name: data  - mountPath: /redis-master  name: config  volumes:  - name: data  emptyDir: {}  - name: config  configMap:  name: example-redis-config  items:  - key: redis-config  path: redis.conf 

Examine os objetos criados:

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:

kubectl describe configmap/example-redis-config 

Você deverá ver uma chave redis-config vazia:

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:

kubectl exec -it redis -- redis-cli 

Verifique maxmemory:

127.0.0.1:6379> CONFIG GET maxmemory 

Ele deve mostrar o valor padrão 0:

1) "maxmemory" 2) "0" 

Da mesma forma, verifique maxmemory-policy:

127.0.0.1:6379> CONFIG GET maxmemory-policy 

O que também deve retornar seu valor padrão noeviction:

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

Agora, vamos adicionar alguns valores de configuração ao ConfigMap example-redis-config:

apiVersion: v1 kind: ConfigMap metadata:  name: example-redis-config data:  redis-config: |  maxmemory 2mb  maxmemory-policy allkeys-lru 

Aplique o ConfigMap atualizado:

kubectl apply -f example-redis-config.yaml 

Confirme que o ConfigMap foi atualizado:

kubectl describe configmap/example-redis-config 

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

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:

kubectl exec -it redis -- redis-cli 

Verifique maxmemory:

127.0.0.1:6379> CONFIG GET maxmemory 

Ele permanece no valor padrão de 0:

1) "maxmemory" 2) "0" 

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

127.0.0.1:6379> CONFIG GET maxmemory-policy 

Retorna:

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:

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:

kubectl exec -it redis -- redis-cli 

Verifique maxmemory:

127.0.0.1:6379> CONFIG GET maxmemory 

Ele agora deve retornar o valor atualizado de 2097152:

1) "maxmemory" 2) "2097152" 

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

127.0.0.1:6379> CONFIG GET maxmemory-policy 

Ele agora reflete o valor desejado de allkeys-lru:

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

Limpe o ambiente excluindo os recursos criados:

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

Próximos passos