1. Kargo 배포 구성 파일 작성

Kargo 배포에 필요한 배포 구성 파일을 작성합니다.

Kargo를 이용한 앱 배포 시 github 소스 저장소의 main 브랜치에 저장된 소스 코드에서 쿠버네티스 리소스 구성 파일을 읽어옵니다. 구성파일의 경우 프로젝트 루트 디렉토리의 k8s 폴더 하위에 위치해야 합니다.

Kargo 배포 설정파일 폴더

Kargo에서는 k8s 폴더 하위의 kustomization.yaml 파일을 참고합니다. kustomization.yaml에서는 k8s 폴더에 함께 있는 구성 파일들을 참조하도록 작성할 수 있습니다.

kustomization.yaml

kustomization.yaml의 작성 예시는 아래와 같습니다. k8s 폴더에 함께 있는 구성 파일들(nginx.yaml, mariadb.yaml, backend.yaml, frontend.yaml)을 참조하고 있습니다.

namespace: default
resources:
  - nginx.yaml
  - mariadb.yaml
  - backend.yaml
  - frontend.yaml

각각의 쿠버네티스 구성 파일 작성 시 D2Hub 이미지 경로를 사용해서 작성해야 합니다. 크램폴린 IDE의 D2Hub 탭에서 이미지 경로를 간단하게 복사할 수 있습니다. 각 레포지토리 우측의 복사 버튼을 클릭해서 이미지 경로를 복사합니다.

D2Hub 이미지 경로 복사하기

해당 버튼을 클릭하면 다음과 같은 형식의 이미지 경로가 복사됩니다.

krmp-d2hub-idock.9rum.cc/dev-test/repo_d6dce6ccda23

이를 이용하여 쿠버네티스 구성 파일을 작성합니다. 이미지 경로의 경우 보통 구성 파일의 deployment 객체에 작성합니다. D2Hub 이미지 경로를 이용한 deployment 객체 작성 예시는 아래와 같습니다. (위 구성 예시에서는 frontend.yaml 또는 backend.yaml 파일에 작성합니다.)

apiVersion: apps/v1
kind: Deployment
spec:
    template:
        metadata:
            labels:
                app: backend
        spec:
            containers:
                - name: backend
                  # 여러분의 image 주소를 입력해주세요.
                  image: krmp-d2hub-idock.9rum.cc/dev-test/repo_d6dce6ccda23
                  imagePullPolicy: Always
                  ports:
                      - containerPort: 8080

또한 이후 단계에서 배포된 앱에 연결된 외부 접속 URL을 발급하기 위해서는 Ingress 객체에 대한 정의가 필요합니다. Ingress 객체의 IP에 외부 접속 URL을 연결하게 됩니다.

Ingress 객체의 작성 예시는 다음과 같습니다.

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
  labels:
    app.kubernetes.io/managed-by: kargocd
  name: krampoline
  namespace: default
spec:
  rules:
    - http:
        paths:
          - backend:
              serviceName: krampoline
              servicePort: 3000
              path: /
              pathType: Prefix

작업을 모두 마쳤다면 github 소스 저장소의 main 브랜치에 push 합니다.

Last updated