OpenCSP/MVP 프로젝트

k3s에 lago 올려보기

miiml 2026. 3. 20. 14:55

2026.03.20 - [프로젝트] - OpenCSP (1) 프로젝트 내용 정리

 

OpenCSP (1) 프로젝트 내용 정리

진행 중인 오픈소스 프로젝트 OpenCSP의 깃허브 문서가 영어로만 있어서 한글로도 정리해보고 싶어졌다. https://github.com/h001-lab/OpenCSP-corehttps://github.com/h001-lab/OpenCSP-moduleshttps://github.com/h001-lab/OpenCSP-

miiml.tistory.com


 

위 프로젝트 관련으로 k3s에 lago를 올리면서 삽질했던 내용을 정리해보려고 한다.

 

프로비저닝은 여러 방법이 있지만 프로젝트에선 flux를 사용해서 관리하니까 kustomization.yaml, lago에 필요한 helm values.yaml이 필요하다.

 

일단 차트의 최신 버전은 아래처럼 helm으로 찾아보면 나오고

miiml@miiml ~ % helm search repo lago                                                                                                 
NAME                             	CHART VERSION	APP VERSION	DESCRIPTION                                       
lago/lago                        	1.27.1       	1.32.4     	the Lago open source billing app                  
lago/lago-config                 	0.4.0        	           	A Helm chart for Kubernetes                       
lago/lago-data                   	0.4.0        	           	A Helm chart for Kubernetes                       
lago/lago-data-api               	0.4.0        	0.1.0      	A Helm chart for Kubernetes                       
lago/lago-data-config            	0.4.0        	           	A Helm chart for Kubernetes                       
lago/lago-data-forecasted-usage  	0.4.0        	0.1.0      	A Helm chart for Kubernetes                       
lago/lago-data-worker            	0.4.0        	0.1.0      	A Helm chart for Kubernetes                       
lago/lago-events-processor-worker	0.4.0        	v1.41.2    	A Helm chart for Kubernetes                       
lago/lago-front                  	0.4.0        	v1.41.0    	A Helm chart for Kubernetes                       
lago/lago-mcp-server             	0.4.0        	0.1.0      	A Helm chart for Kubernetes                       
lago/lago-pdf                    	0.4.0        	8          	A Helm chart for the Lago PDF stack (Gotenberg ...
lago/lago-rails                  	0.4.0        	v1.41.2    	A Helm chart for Kubernetes                       
lago/lago-staging                	0.4.0        	           	A Helm chart for Kubernetes

 

release는 아래처럼 구성했는데, 코드 길어서 접어둠

더보기
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: lago
  namespace: lago
spec:
  interval: 30m
  install:
    remediation:
      retries: 3
  upgrade:
    remediation:
      retries: 3
      remediateLastFailure: true
  chart:
    spec:
      chart: lago
      version: "1.27.1"
      sourceRef:
        kind: HelmRepository
        name: lago
        namespace: flux-system
  dependsOn:
    - name: cert-manager
      namespace: flux-system
    - name: lago-postgresql
      namespace: lago
    - name: lago-redis
      namespace: lago
  valuesFrom:
    - kind: Secret
      name: lago-chart-values
      valuesKey: values.yaml

  values:
    apiUrl: "https://lago-api.domain.com"
    frontUrl: "https://lago.domain.com

    front:
      service:
        type: ClusterIP
        port: 80
      ingress:
        enabled: false
      resources:
        requests:
          cpu: 50m
          memory: 64Mi

    api:
      service:
        type: ClusterIP
        port: 3000
      ingress:
        enabled: false
      resources:
        requests:
          cpu: 100m
          memory: 256Mi

    worker:
      resources:
        requests:
          cpu: 50m
          memory: 128Mi

    clockWorker:
      resources:
        requests:
          cpu: 50m
          memory: 128Mi

    billingWorker:
      resources:
        requests:
          cpu: 50m
          memory: 128Mi

    paymentWorker:
      resources:
        requests:
          cpu: 50m
          memory: 128Mi

    webhookWorker:
      resources:
        requests:
          cpu: 50m
          memory: 128Mi

    eventsWorker:
      resources:
        requests:
          cpu: 50m
          memory: 128Mi

    pdfWorker:
      resources:
        requests:
          cpu: 50m
          memory: 128Mi

    pdf:
      resources:
        requests:
          cpu: 50m
          memory: 128Mi

    postgresql:
      enabled: false

    redis:
      enabled: false

 

 

여기서 제일 많이 삽질했던건 postgres, redis 구성하고 lago랑 연결하는 부분이었다. 

 

lago value를 찾아보면 postgresql.enabled: true 부분이 있어서 내부에서 서브차트 같은걸로 파드를 만들어 줄 거라고 생각했는데

서브차트는 없었고 저거 활성화해도 계속 DB 마이그레이션 Job이 실패만 반복한다 (연동 실패)

알고보니 구성을 별도로해줘야하고 공식 github의 Requirements 부분 보면 bitnami 차트를 사용한다고 되어있음

 

그래서 아래처럼 직접 정의해줬고

 

apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: lago-postgresql
  namespace: lago
spec:
  interval: 30m
  install:
    remediation:
      retries: 3
  upgrade:
    remediation:
      retries: 3
  chart:
    spec:
      chart: postgresql
      version: "18.5.6"
      sourceRef:
        kind: HelmRepository
        name: bitnami
        namespace: flux-system
  valuesFrom:
    - kind: Secret
      name: lago-chart-values
      valuesKey: postgresql-values.yaml
  values:
    primary:
      persistence:
        enabled: true
        size: 8Gi

 

연동에 필요한 정보들은 크레덴셜 값이라 + 프로젝트 특성상 Public 이어서 SOPS로 암호화해줬음  (이거는 https://miiml.tistory.com/5 여기에 정리해둠)

 

redis 도 같은 방식으로 구성하면 되고, 연동이 완료되면 아래처럼 여러 파드들이 뜨는걸 볼 수 있다. 

 

front 접근하면 아래처럼 UI 나오고 Sign up해서 진행하면 됨

 

 

자세한 values.yaml 들은 아래 깃허브 링크 참조

https://github.com/h001-lab/OpenCSP-core/tree/main/cluster/infrastructure/lago

 

 

 

 

 

 

 

근데 반전

 

내 프로젝트에 필요한 기능들이 프리미엄 기능으로 다 막혀있다