[Azure/Spring] ArgoCD 설정하기
[Azure/Spring] ArgoCD 설정하기
GitOps 경로 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
gitops
.gitignore
│
└─backend
├─base
│ configmap.yaml
│ deployment.yaml
│ kustomization.yaml
│ secret.yaml
│ service.yaml
│
└─overlays
└─dev
deployment-patches.yaml
kustomization.yaml
service-patches.yaml
- 기본이 되는
yaml
은 일반적으로/base
경로에 설정한다. - 개발 환경이나 운영 환경은 각각
overlays
에 dev, prd 형식으로 상속 방식으로 구성을 한다.
deployment.yaml
base/kustomization.yaml
1
2
3
4
5
6
7
8
9
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: journeyjinni
resources:
- secret.yaml
- configmap.yaml
- deployment.yaml
- service.yaml
- 확장성을 고려해 기본적인 정보만 작성한다.
- 자세한 정보는 각 환경에 따른
kustomization.yaml
에 작성
overlays/dev/kustomization.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: journeyjinni
images:
- name: jinnicontainerregistry.azurecr.io/jinni
newTag: "20241119015211"
resources:
- ../../base
patches:
- path: deployment-patches.yaml
- path: service-patches.yaml
base
는 deprcated 됨,resources
를 사용해 부모를 가져옴patches
를 사용해 같은 디렉토리 내의 상세 yaml을 가져온다.images
를 통해 이용할 이미지의 태그를 저장
/base/deployment.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
kind: Deployment
apiVersion: apps/v1
metadata:
name: journeyjinni-backend
namespace: journeyjinni
spec:
selector:
matchLabels:
app: journeyjinni-backend
template:
metadata:
labels:
app: journeyjinni-backend
spec:
containers:
- name: journeyjinni-backend
image: placeholder-image # 오버레이에서 패치
- 기본이 되는 deployment.yaml
image: placeholder-image
는 뒤의 patch.yaml에서 적절한 image로 대체되어진다.
/overlays/dev/kustomization.yaml
1
2
3
images:
- name: jinnicontainerregistry.azurecr.io/jinni
newTag: "20241119015211"
ACR(Azure Container Registry)에서 이미지의 현재 태그를 지속적으로 갱신
/overlays/dev/deployment-patches.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: apps/v1
kind: Deployment
metadata:
name: journeyjinni-backend
namespace: journeyjinni
spec:
template:
spec:
containers:
- name: journeyjinni-backend
image: jinnicontainerregistry.azurecr.io/jinni
ports:
- containerPort: 8080
image
를 미리 설정했기에 deployment에서 태그 값을 설정해줄 필요는 없다.- port만 지정하는 방식으로 설정
service.yaml
service-patches.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: v1 # API 버전
kind: Service # 리소스 유형
metadata: # 서비스 이름, 네임스페이스, 리소스 식별을 위한 라벨 설정
name: journeyjinni-backend
namespace: journeyjinni
labels:
app: journeyjinni-backend
chart: journeyjinni-backend-1.0.0
release: journeyjinni-backend-dev
spec: # 서비스의 특성과 동작을 정의
ports:
- name: http
protocol: TCP
port: 80 # 서비스의 외부 포트
targetPort: 8080 # 서비스가 연결한 백엔드 파드의 포트
selector: # pod를 선택
app: journeyjinni-backend
chart: journeyjinni-backend-1.0.0
release: journeyjinni-backend-dev
type: LoadBalancer
sessionAffinity: None
- port
- pod 자체가 80포트에서 열려 있고 해당 요청을 8080포트로 연결되어 있는 pod안의 해당 service로 유도를 한다.
- selector
- 해당 서비스를 라우팅 하는 pod를 어떤걸 고를지 정함
- 지정된 레이블(app, chart, release)가 모두 일치 해야 연결됨
- type
- 서비스 유형을 LoadBalancer로 설정함으로써, 외부 네트워크에서 접근을 허용함
- 이걸 해야 EXTERNAL-IP가 활성화 된다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.