Dev./Kubernetes & Helm

Kubernetes: 배포 환경 구분 짓기

Ivan'show 2023. 10. 3.
728x90
반응형

배포 환경 구분 짓기

DevOps(데브옵스)의 핵심을 나타내는 문구가 “개발과 운영의 벽을 허물어 더 빨리 더 자주 배포하자” 라는 것에 동의한다. 이 개념을 바탕으로 개발 분야에서 DevSecOps, GitOps, AIOps 등의 개념으로 확장해 나아가고 있다. 개발과 운영을 빠르게 하는 부분 개발자가 신경써야하는 부분이 개발 환경이다.

실제 개발환경은 여러 환경들로 구분되어진게 일반적이다. 배포도 각 환경에 맞게 셋팅해서 배포되어야 한다.

Staging 과 Production 환경 구분은 가장 기본적인 분리라고 볼 수 있는데, 분리된 환경으로 한번 배포를 구성해보자.

 

환경 구조로 구분 짓는 방법

my_kubernetes_project/
├── app/                   # 애플리케이션 코드
│   ├── src/
│   └── Dockerfile
├── k8s/                   # 쿠버네티스 설정
│   ├── staging/           # 개발 환경 설정
│   │   ├── deployment.yaml
│   │   ├── service.yaml
│   │   └── django-secret-stg.yaml
│   ├── prod/              # 프로덕션 환경 설정
│   │   ├── deployment.yaml
│   │   ├── service.yaml
│   │   └── django-secret-prod.yaml
│   └── common/            # 공통 설정
│       └── configmap.yaml
└── README.md

이름과 레이블로 구분 짓는 방법

모든 이름들을 구분짓게 되어 직관적으로 분리가 되었다는 것을 알 수 있다.

name: db-config-stg
name: db-config-prod
...

네임 스페이스로 구분 짓는 방법

k get ns

네임스페이스 생성

k create ns production

네임스페이스로 조회

k get po -n prod
k get svc -n prod
k get deploy -n prod

네임스페이스가 새로 생성되었기 때문에 NCP 에 접근할 때 사용되는 regcred 도 존재하지 않는다.

새로 생성해주자

k create secret docker-registry regcred \\
--docker-server=${NCP_REGISTRY} \\
--docker-username=${NCP_ACCESS_KEY} \\
-docker-password=${NCP_SECRET_KEY} \\
-docker-email=${EMAIL} \\
-n prod

폴더에 있는 모든 파일들을 네임스페이스에 넣어 실행하는 명령어

k create -f . -n prod
k get po -n prod
k get po --all-namespaces

#
kimminhyeok@Ivans-Mac k8s % k get po --all-namespaces
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
...
...
prod          lion-db                                   1/1     Running   0          7m13s
prod          lion-deploy-app-6d86d57578-jvk58          1/1     Running   0          7m12s
prod          lion-deploy-app-6d86d57578-lbwr4          1/1     Running   0          7m12s
prod          lion-deploy-app-6d86d57578-w2tqz          1/1     Running   0          7m13s
stg           lion-db                                   0/1     Pending   0          5m
stg           lion-deploy-app-stg-79d465bb56-ddjkk      1/1     Running   0          5m
stg           lion-deploy-app-stg-79d465bb56-q8d2n      1/1     Running   0          5m
stg           lion-deploy-app-stg-79d465bb56-xbs9c      1/1     Running   0          5m

네임스페이스 스위칭

k set-config --current
k config set-context --current --namespace prod

네임스페이스를 삭제해서 모두 삭제하기

k delete ns prod
728x90
반응형

'Dev. > Kubernetes & Helm' 카테고리의 다른 글

Helm: 차트 작성  (0) 2023.10.05
Helm: 쿠버네티스를 관리하는 툴  (0) 2023.10.04
Kubernetes: Deployment, Rolling update  (2) 2023.10.01
Kubernetes: PersistentVolumeClaim  (0) 2023.09.27
Kubernetes: ReplicaSet 적용하기  (0) 2023.09.26

댓글