argocd로 배포하면서 가장 크게 좋았던 점은
배포하기 전에 변경되는 점이무엇인지 비교하기 쉬웠다는 점이다.
argocd도 버전도 업그레이드 해주거나 설정을 변경하거나 gitops로 관리하면 편해지기 때문에
gitops로 관리하는 방법을 공유한다. (helm차트 배포 X)
Argocd In Argocd
▪️ step 1. kustomization.yaml 파일 만들기
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: argocd
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.9.6/manifests/install.yaml
argocd 공식 설치 방식은 kubectl 명령어를 이용한 설치이다.
kustomization을 사용해서 기본 설치 방식을 할 수 있도록 파일을 생성하고 소스저장소에 push한다.
▪️ step 2. argocd를 설치한다.
$ kubectl create ns argocd
namespace/argocd created
$ kustomize build . | kubectl apply -n argocd -f -
customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
serviceaccount/argocd-application-controller created
serviceaccount/argocd-applicationset-controller created
serviceaccount/argocd-dex-server created
serviceaccount/argocd-notifications-controller created
serviceaccount/argocd-redis created
serviceaccount/argocd-repo-server created
serviceaccount/argocd-server created
role.rbac.authorization.k8s.io/argocd-application-controller created
role.rbac.authorization.k8s.io/argocd-applicationset-controller created
role.rbac.authorization.k8s.io/argocd-dex-server created
role.rbac.authorization.k8s.io/argocd-notifications-controller created
role.rbac.authorization.k8s.io/argocd-server created
clusterrole.rbac.authorization.k8s.io/argocd-application-controller created
clusterrole.rbac.authorization.k8s.io/argocd-server created
rolebinding.rbac.authorization.k8s.io/argocd-application-controller created
rolebinding.rbac.authorization.k8s.io/argocd-applicationset-controller created
rolebinding.rbac.authorization.k8s.io/argocd-dex-server created
rolebinding.rbac.authorization.k8s.io/argocd-notifications-controller created
rolebinding.rbac.authorization.k8s.io/argocd-server created
clusterrolebinding.rbac.authorization.k8s.io/argocd-application-controller created
clusterrolebinding.rbac.authorization.k8s.io/argocd-server created
configmap/argocd-cm created
configmap/argocd-cmd-params-cm created
configmap/argocd-gpg-keys-cm created
configmap/argocd-notifications-cm created
configmap/argocd-rbac-cm created
configmap/argocd-ssh-known-hosts-cm created
configmap/argocd-tls-certs-cm created
secret/argocd-notifications-secret created
secret/argocd-secret created
service/argocd-applicationset-controller created
service/argocd-dex-server created
service/argocd-metrics created
service/argocd-notifications-controller-metrics created
service/argocd-redis created
service/argocd-repo-server created
service/argocd-server created
service/argocd-server-metrics created
deployment.apps/argocd-applicationset-controller created
deployment.apps/argocd-dex-server created
deployment.apps/argocd-notifications-controller created
deployment.apps/argocd-redis created
deployment.apps/argocd-repo-server created
deployment.apps/argocd-server created
statefulset.apps/argocd-application-controller created
networkpolicy.networking.k8s.io/argocd-application-controller-network-policy created
networkpolicy.networking.k8s.io/argocd-applicationset-controller-network-policy created
networkpolicy.networking.k8s.io/argocd-dex-server-network-policy created
networkpolicy.networking.k8s.io/argocd-notifications-controller-network-policy created
networkpolicy.networking.k8s.io/argocd-redis-network-policy created
networkpolicy.networking.k8s.io/argocd-repo-server-network-policy created
networkpolicy.networking.k8s.io/argocd-server-network-policy created
▪️ step 3. argocd 앱 생성 후 다시 재배포
이렇게 배포 후, gitops 방식을 통해 쉽게 관리할 수 있습니다.
Argocd Gitops로 관리하기
▪️ 추가 1. 업그레이드 방법
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: argocd
resources:
#- https://raw.githubusercontent.com/argoproj/argo-cd/v2.9.6/manifests/install.yaml
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.10.0/manifests/install.yaml
위처럼 버전 정보만 변경해서 push해주면 바뀐 버전으로 배포할 수 있다.
그리고 변경할 버전을 배포하기 전에 바뀐 곳을 미리확인할 수 있다.
▪️ 추가 2. admin 계정 비밀번호 고정시키기
처음에 argocd를 배포하면 초기 admin 계정이 생성된다.
$ kubectl get secrets -n argocd
NAME TYPE DATA AGE
argocd-initial-admin-secret Opaque 1 31m
argocd-notifications-secret Opaque 0 32m
argocd-secret Opaque 5 32m
이계정이 아니라 다른 계정으로 사용하고자 한다면 다음의 방법을 따라하면 된다
step 1 ) 비밀번호 키 생성
argocd cli을 설치한 뒤 비밀번호 키를 생성한다.
$ argocd account bcrypt --password << 비밀번호 입력 >>
$2a$10$9MCAX3o6EOIrXxkGAKK4qOUB3hN8ywx9LI61NQX7eq09D7Ijz4uqu%
step 2 ) 날짜 정보 생성
그리고 생성 날짜도 확인한다
$ date +%FT%T%Z
2024-02-10T13:38:38KST
step 3 ) 소스저장소에 push 후 배포
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: argocd
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.9.6/manifests/install.yaml
patches:
- path: ./overlays/argocd-secret.yaml # 기존 argocd-secret에 추가
# overlays/argocd-secret.yaml
apiVersion: v1
kind: Secret
metadata:
labels:
app.kubernetes.io/instance: argocd
app.kubernetes.io/name: argocd-secret
app.kubernetes.io/part-of: argocd
name: argocd-secret
type: Opaque
stringData:
admin.password: $2a$10$9MCAX3o6EOIrXxkGAKK4qOUB3hN8ywx9LI61NQX7eq09D7Ijz4uqu%
admin.passwordMtime: 2024-02-10T13:38:38KST
이 값을 argocd-secret에 추가해 준 뒤 push하고 배포한다.
step 4 ) 초기 비밀번호가 담긴 secret 삭제
$ kubectl delete secret argocd-initial-admin-secret -n argocd
secret "argocd-initial-admin-secret" deleted
이렇게 하면 admin 계정을 업데이트하거나 고정시켜 사용할 수 있다.
GitHub - nueavv/argocd-in-argocd
Contribute to nueavv/argocd-in-argocd development by creating an account on GitHub.
github.com
여기서 구조를 확인해볼 수 있습니다.
'K8S > argocd' 카테고리의 다른 글
argocd의 로컬 계정 비밀번호 고정하기 (admin 비번 고정 방법) (0) | 2024.09.17 |
---|---|
ArgoCD에 EKS 클러스터를 등록하는 3가지 방법 (0) | 2024.09.10 |
argocd 코드 수정을 위해 로컬에서 빌드하기 (feat OSSCA) (0) | 2024.08.17 |
argocd 플러그인(CMP) 추가로 istio 배포하기 (1) | 2024.02.11 |
argocd에 helm gitops로 배포하기 (0) | 2024.02.10 |