일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- golang
- macos
- Shell script
- Android
- docker
- dart
- ffmpeg
- Java
- Sysinternals
- configmap
- namespace
- service
- android studio
- HLS
- aws cli
- Windows10
- kubectl
- Python
- 행정구역분류
- Flutter
- aws
- Pod
- RTMP
- wireshark
- nginx-media-server
- VSCode
- Kubernetes
- deployment
- spring cloud config
- ebpf
Archives
- Today
- Total
woonizzooni
Kubernetes - ConfigMap 이용한 환경 설정 (redis.conf, nginx.conf, os environment variables 등) 본문
Kubernetes
Kubernetes - ConfigMap 이용한 환경 설정 (redis.conf, nginx.conf, os environment variables 등)
woonizzooni 2020. 11. 5. 13:45
1. (선택) Namespace 생성/지정
apiVersion: v1 kind: Namespace metadata: name: my-ns |
$ kubectl apply -f ./my_ns.yaml
$ kubectl get ns
2. ConfigMap 생성/작성(설정)
1) 설정 파일의 경우
(ex1) redis.conf apiVersion: v1 kind: ConfigMap metadata: namespace: my-ns name: my-redis-config data: redis-conf: | maxmemory ..... ... 설정 내용 작성 |
(ex2) nginx.conf apiVersion: v1 kind: ConfigMap metadata: namespace: my-ns name: my-nginx-conf data: nginx-conf: | user nginx; worker_processes 2; err_log /var/log/nginx/err.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; .... include /etc/nginx/conf.d/*.conf; } |
2) 환경 변수로 받고 싶은 경우
apiVersion: v1 kind: ConfigMap metadata: namespace: my-ns name: my-env data: redis_addr: "redis:6379" zookeeper_addr: "zoo:2181" server_conf: '{"web":{"listen_port":8888,..' |
$ kubectl apply -f ./myConfigMap.yaml
$ kubectl get configmap -n my-ns
$ kubectl describe configmap -n my-ns my-env
3. Pod에서 ConfigMap 사용하기
1) 환경 변수로 접근/가져오기 : getenv() / os.Getenv / System.getenv() 등으로 접근
apiVersion: v1 kind: Pod metadata: namespace: my-ns name: my-app spec: containers: - name: my-app image: {{myContainerImage:latest}} ... env: - name: REDIS_ADDR valueFrom: configMapKeyRef: name: my-env key: redis_addr - name: ZOOKEEPER_ADDR valueFrom: configMapKeyRef: name: my-env key: zookeeper_addr - name: SERVER_CONF valueFrom: configMapKeyRef: name: my-env key: server_conf .... |
2) 파일로 접근/로딩하기
- 특정 디렉토리로 mount하는 과정에서 다른 파일과의 공존이 필요하다면 'subPath'을 이용할 수 있다.
다만, 다음과 같은 제약이 따른다.
"ConfigMap을 subPath 볼륨 마운트로 사용하는 컨테이너는 ConfigMap 업데이트를 수신하지 않는다."
apiVersion: v1 kind: Pod metadata: namespace: my-redis name: my-redis spec: containers: - name: my-redis image: redis:latest command: .. env: - name: .. ... volumeMounts: - mountPath: /redis-master name: config ... volumes: - name: config configMap: name: my-redis-config items: - key: redis-conf path: redis.conf ... |
apiVersion: apps/v1 kind: Deployment metadata: namespace: my-ns name: my-nginx spec: replicas: 1 selector: matchLabels: app: my-nginx template: metadata: labels: app: my-nginx spec: containers: - name: my-nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: #방법1 : config을 /etc/nginx/nginx.conf 로 마운트 - mountPath: /etc/nginx/nginx.conf # readOnly: true name: config subPath: nginx.conf #방법2: config을 /etc/nginx 에 마운트 - mountPath: /etc/nginx readOnly: true name: config volumes: - name: config configMap: name: my-nginx-conf items: - key: nginx-conf path: nginx.conf |
[참고]
kubernetes.io/ko/docs/concepts/configuration/configmap/
kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/
kubernetes.io/ko/docs/concepts/storage/volumes/
'Kubernetes' 카테고리의 다른 글
kubernetes - kube-prompt (0) | 2020.11.05 |
---|---|
kubernetes - redis 실행하기 (개발 환경용) (0) | 2020.11.05 |
Kubernetes - Secret 이용한 환경 설정 (0) | 2020.11.05 |
Kubernetes 다중 클러스터 접근 (Configure Access to Multiple Clusters) (0) | 2020.03.30 |
로컬에 Kubernetes 실행 환경 만들기 (0) | 2020.03.29 |
Comments