argocd applicationsets

ggorockee·2024년 11월 18일

devops

목록 보기
7/7

devops repository에서 시작하겠습니다. repository는 이전 포스트에서 참고하세요

우선 텔레포트부터 로그인하고

$ tsl camping
$ mkdir -p argocd/project
$ vi argocd/project/project.yaml

argocd/project/project.yaml

apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: test
  namespace: argocd
spec:
  description: authenticator
  clusterResourceWhitelist:
    - group: '*'
      kind: '*'
  destinations:
    - namespace: '*'
      server: '*'
  sourceRepos:
    - '*'

이렇게 파일을 만들고 실행시켜주겠습니다.

$ kubectl apply -f argocd/project/project.yaml
appproject.argoproj.io/test created

project를 만들었으니 구조를 잡읍시다.

argocd generator와 customizing할 수 있는 value를 따로 두어서 관리의 용이성을 챙기도록 할게요
그렇게 하기 위해 폴더 트리를 짜봅시다.

.
├── README.md
├── argocd
│   ├── applicationsets
│   │   ├── dev
│   │   └── prod
│   └── project
│       └── project.yaml
└── helm-values
    ├── dev
    └── prod

이런식으로 만들어서 개발과 운영을 분리하도록하겠습니다.

이제 환경파일을 만듭시다.

vi argocd/applicationsets/dev/nginx-test.yaml

nginx-test.yaml

env: dev
project: test
repoURL: https://charts.bitnami.com/bitnami
chartName: nginx
chartVersion: 18.2.5
appname: nginx-test
namespace: test
vi helm-values/dev/nginx-test.yaml

nginx-test.yaml

# this is override default values
replicaCount: 1

service:
  type: ClusterIP

이 2가지 파일을 푸쉬하도록 할게요
그런다음에 applicationsets을 만들어줄게요

vi argocd/applicationsets/dev/test-applicationset.yaml

test-applicationset.yaml

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: test-application
  namespace: argocd
spec:
  generators:
  - git:
      repoURL: https://github.com/ggorockee/devops-camping.git
      revision: HEAD
      files:
      - path: "argocd/applicationsets/config/dev/*-test.yaml"

  template:
    metadata:
      name: '{{appname}}'
    spec:
      project: '{{project}}'
      sources:
      - repoURL: '{{repoURL}}'
        chart: '{{chartName}}'
        targetRevision: '{{chartVersion}}'
        helm:
          valueFiles:
            - "$values/helm-values/{{env}}/{{appname}}/values.yaml"
      - repoURL: https://github.com/ggorockee/devops-camping.git
        targetRevision: HEAD
        ref: values

      destination:
        server: 'https://kubernetes.default.svc'
        namespace: '{{namespace}}'
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
          - CreateNamespace=true

이제 실행해줄겠습니다.

kubectl apply -f argocd/applicationsets/dev/test-applicationset.yaml

예쁘게 실행되었네요.

helm-values/dev/nginx-test/values.yaml

# this is override default values
replicaCount: 3

service:
  type: ClusterIP

replicaCount: 1->3

으로 변경해보겠습니다. 약 1~3분 후에 자동으로 변경되는 것을 볼 수 있습니다.

replica가 3으로 늘어났습니다. 좋네요 이제 gitops까지 되었으니 개발환경을 세팅하겠습니다.

0개의 댓글