Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Configuring Redis using a ConfigMap
컨피그맵을 사용해서 Redis 설정하기
이 페이지에서는 컨피그맵(ConfigMap)을 사용해서 Redis를 설정하는 방법에 대한 실세계 예제를 제공하고, 컨피그맵을 사용해서 파드 설정하기 태스크로 빌드를 한다.
목적
- Redis 설정값으로 컨피그맵을 생성한다.
- 생성된 컨피그맵을 마운트하고 사용하는 Redis 파드를 생성한다.
- 설정이 잘 적용되었는지 확인한다.
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.
버전 확인을 위해서, 다음 커맨드를 실행 kubectl version.
- 예시는
kubectl1.14 이상 버전에서 동작한다. - 컨피그맵을 사용해서 파드 설정하기를 이해한다.
실세상 예제: 컨피그맵을 사용해서 Redis 설정하기
아래 단계를 통해서, 컨피그맵에 저장된 데이터를 사용하는 Redis 캐시를 설정한다.
우선, 비어 있는 설정으로 컨피그맵을 생성한다.
cat <<EOF >./example-redis-config.yaml apiVersion: v1 kind: ConfigMap metadata: name: example-redis-config data: redis-config: "" EOF 위에서 생성한 컨피그맵을 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 Redis 파드 매니페스트의 내용을 검토하고 다음의 사항을 염두에 둔다.
config라는 이름의 볼륨은spec.volumes[1]에 의해서 생성된다.spec.volumes[1].configMap.items[0]내부의key와path는config볼륨에redis.conf라는 파일명으로 지정된example-redis-config컨피그맵의redis-config키를 노출시킨다.- 그리고
config볼륨은spec.containers[0].volumeMounts[1]에 의해서/redis-master에 마운트된다.
이 내용은 위의 example-redis-config 컨피그맵의 data.redis-config 내부 데이터를 파드 안에 있는 /redis-master/redis.conf 파일의 내용으로 노출시키는 순효과(net effect)를 낸다.
apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis:5.0.4 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 생성된 오브젝트를 확인한다.
kubectl get pod/redis configmap/example-redis-config 다음의 결과를 볼 수 있다.
NAME READY STATUS RESTARTS AGE pod/redis 1/1 Running 0 8s NAME DATA AGE configmap/example-redis-config 1 14s example-redis-config 컨피그맵의 redis-config 키를 공란으로 둔 것을 기억하자.
kubectl describe configmap/example-redis-config redis-config 키가 비어 있는 것을 확인할 수 있다.
Name: example-redis-config Namespace: default Labels: <none> Annotations: <none> Data ==== redis-config: kubectl exec 를 사용하여 파드에 접속하고, 현재 설정 확인을 위해서 redis-cli 도구를 실행한다.
kubectl exec -it redis -- redis-cli maxmemory 를 확인한다.
127.0.0.1:6379> CONFIG GET maxmemory 기본값인 0을 볼 수 있을 것이다.
1) "maxmemory" 2) "0" 유사하게, maxmemory-policy 를 확인한다.
127.0.0.1:6379> CONFIG GET maxmemory-policy 이것도 기본값인 noeviction 을 보여줄 것이다.
1) "maxmemory-policy" 2) "noeviction" 이제 example-redis-config 컨피그맵에 몇 가지 설정값을 추가해 본다.
apiVersion: v1 kind: ConfigMap metadata: name: example-redis-config data: redis-config: | maxmemory 2mb maxmemory-policy allkeys-lru 갱신된 컨피그맵을 적용한다.
kubectl apply -f example-redis-config.yaml 컨피그맵이 갱신된 것을 확인한다.
kubectl describe configmap/example-redis-config 방금 추가한 설정값을 확인할 수 있을 것이다.
Name: example-redis-config Namespace: default Labels: <none> Annotations: <none> Data ==== redis-config: ---- maxmemory 2mb maxmemory-policy allkeys-lru 설정이 적용되었는지 확인하려면, kubectl exec 를 통한 redis-cli 로 Redis 파드를 다시 확인한다.
kubectl exec -it redis -- redis-cli maxmemory 를 확인한다.
127.0.0.1:6379> CONFIG GET maxmemory 기본값인 0을 볼 수 있을 것이다.
1) "maxmemory" 2) "0" 유사하게, maxmemory-policy 도 기본 설정인 noeviction 을 보여줄 것이다.
127.0.0.1:6379> CONFIG GET maxmemory-policy 위의 명령은 다음을 반환한다.
1) "maxmemory-policy" 2) "noeviction" 파드는 연관된 컨피그맵에서 갱신된 값을 인지하기 위해서 재시작이 필요하므로 해당 설정값이 변경되지 않은 상태이다. 파드를 삭제하고 다시 생성한다.
kubectl delete pod redis kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/config/redis-pod.yaml 이제 마지막으로 설정값을 다시 확인해 본다.
kubectl exec -it redis -- redis-cli maxmemory 를 확인한다.
127.0.0.1:6379> CONFIG GET maxmemory 이것은 이제 갱신된 값인 2097152를 반환한다.
1) "maxmemory" 2) "2097152" 유사하게, maxmemory-policy 도 갱신되어 있다.
127.0.0.1:6379> CONFIG GET maxmemory-policy 이것은 원하는 값인 allkeys-lru 를 반환한다.
1) "maxmemory-policy" 2) "allkeys-lru" 생성된 자원을 삭제하여 작업을 정리한다.
kubectl delete pod/redis configmap/example-redis-config 다음 내용
- 컨피그맵 배우기.