728x90
Kubernetes EnvVar
Application은 서비스 접근, 분리 등등 다양한 케이스에서 설정이 필요
Application 내부에 환경변수를 설정하는것은 옳지 않음
Container영역에서 사용할 수 있도록 해주는 것이 EnvVar
👎bad case, 하드코딩된 기본 설정값을 사용하는 방식
예전에 Dockerfile에 대해 공부할 때 사용했던 ENV 명령어로 직접 정의 가능
https://dev-chicken.tistory.com/22
이렇게 설정한 뒤 각 언어에 맞게 환경변수에 접근하면 사용가능
package main
import "os"
import "fmt"
func main() {
fmt.Println("NODE_ENV:", os.Getenv("NODE_ENV"))
}
$ go run main.go
NODE_ENV: production
하지만 이런 방식으로 직접 실행하면 Dockerfile에 하드 코딩된 기본 값이 사용됨
👍good case, docker run시 환경변수를 설정하거나 kubernetes pod 명세로 env설정
docker run -e NODE_ENV=production
이런식으로 docker run -e 옵션으로 환경변수를 설정하거나
apiVersion: v1
kind: Pod
metadata:
name: ~~
spec:
containers:
- image: ~~
name: ~~
env: #환경변수 설정
- name: NODE_ENV
value: production
...
이런식으로 환경 변수를 명세로 관리하여 override하여 사용하는 것을 추천
환경변수는 안전하지 않고 많아질수록 어려운 관리 등 사소하지만 관리해야할 포인트들이 많음
보편적으로 사용해야하고 다양한 수준에서 변수를 설정할 수 있기 때문에 한곳에서 중점적으로 관리하는 것이 중요
앞선 envVar방식으로 손쉽게 사용하는 것이 좋고, 간단한 사례에만 적용하는 것이 좋음
복잡한 설정에 대해서는 제한사항이 많이 존재하고 hot reload 변경이 불가능하여 무조건 재시작해야함
이러한 문제점을 해결하기 위해 kubernetes에서는 configmap을 지원, 해당 부분도 공부예정
반응형
'개발 > 개발공부' 카테고리의 다른 글
Kubernetes Deployment / 쿠버네티스, 패턴, pattern, 선언적 배포, 디플로이먼트 (2) | 2023.01.26 |
---|---|
Kubernetes ConfigMap / 쿠버네티스, 패턴, pattern, 환경변수, 설정, 컨피그맵, CM (6) | 2023.01.25 |
Kubernetes Sidecar Container / 쿠버네티스, 사이드카, 컨테이너, 패턴, pattern (2) | 2023.01.23 |
Kubernetes Pod Lifecycle / container, pod, 수명주기, 관리 (0) | 2023.01.22 |
Kubernetes 클러스터 접근 구성하기 / kubeconfig, User Account, Service Account (0) | 2023.01.21 |
댓글