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.
- O exemplo mostrado nesta página funciona com
kubectl1.14 ou superior. - Entenda Configurar um Pod para usar um ConfigMap.
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 emspec.volumes[1] - A
keye opathemspec.volumes[1].configMap.items[0]expõem a chaveredis-configdo ConfigMapexample-redis-configcomo um arquivo chamadoredis.confno volumeconfig. - O volume
configé então montado em/redis-masterporspec.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
- Aprenda mais sobre ConfigMaps.
- Veja um exemplo de como atualizar configuração usando ConfigMap.