티스토리 뷰

카테고리 없음

K8S ARGOCD 일반 설치

미니대왕님 2022. 7. 6. 20:43

2022.07.16 - [분류 전체보기] - argocd rollout Blue-Green 배포

2022.07.04 - [분류 전체보기] - ARGOCD 헬름챠트로 설치/ rollout 설치및 기동

1. 아르고 CD 설치

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

그러면 argocdArgo CD 서비스 및 애플리케이션 리소스가 위치할 새 네임스페이스가 생성됩니다.

경고

설치 매니페스트에는 네임스페이스 ClusterRoleBinding를 참조하는 리소스가 포함됩니다 argocd. Argo CD를 다른 네임스페이스에 설치하는 경우 네임스페이스 참조를 업데이트해야 합니다.

UI, SSO, 다중 클러스터 기능에 관심이 없다면 핵심 Argo CD 구성 요소만 설치할 수 있습니다.

 

CLI 액세스 argocd login --core를 구성 하고 3-5단계를 건너뛰는 데 사용 합니다.

2. 아르고 CD CLI 다운로드

https://github.com/argoproj/argo-cd/releases/latest 에서 최신 Argo CD 버전을 다운로드 하십시오 . 자세한 설치 지침은 CLI 설치 설명서 를 통해 찾을 수 있습니다 .

Mac, Linux 및 WSL Homebrew에서도 사용 가능:

brew install argocd

3. Argo CD API 서버에 액세스

기본적으로 Argo CD API 서버는 외부 IP로 노출되지 않습니다. API 서버에 액세스하려면 다음 기술 중 하나를 선택하여 Argo CD API 서버를 노출합니다.

서비스 유형 로드 밸런서

argocd-server 서비스 유형을 LoadBalancer다음 으로 변경하십시오.

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

입구

Ingress 로 Argo CD를 구성하는 방법에 대한 Ingress 문서 를 따르십시오 .

포트 포워딩

Kubectl 포트 포워딩을 사용하여 서비스를 노출하지 않고 API 서버에 연결할 수도 있습니다.

kubectl port-forward svc/argocd-server -n argocd 8080:443

그런 다음 https://localhost:8080을 사용하여 API 서버에 액세스할 수 있습니다.

혹은 노드 포트로 변경할것!
k edit svc argocd-server -n argocd

*Argo CD CLI 설치

Argo CD CLI 설치

argocd cli 설치
## (argocd 버전) https://github.com/argoproj/argo-cd/releases

$ VERSION=v2.4.4; curl -sL -o argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64
$ chmod +x argocd
$ sudo mv argocd /usr/local/bin/argocd

4. 로그인방법

ID : admin

pass: 암호화로 되어있을겁니다. 암호 변경은 4-1을 참조하세요

계정 의 초기 비밀번호 는 자동 생성되어 Argo CD 설치 네임스페이스에 이름이 지정된 비밀 admin필드에 일반 텍스트로 저장됩니다 . 다음을 사용하여 이 비밀번호를 간단히 검색할 수 있습니다 .passwordargocd-initial-admin-secretkubectl

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

경고

argocd-initial-admin-secret암호를 변경한 후에는 Argo CD 네임스페이스에서 삭제해야 합니다. 비밀은 초기에 생성된 암호를 명확하게 저장하고 언제든지 안전하게 삭제할 수 있는 것 외에 다른 용도로 사용되지 않습니다. 새 관리자 암호를 다시 생성해야 하는 경우 Argo CD에서 요청 시 다시 생성됩니다.

4-1. 위 의 사용자 이름 admin과 암호를 사용하여 Argo CD의 IP 또는 호스트 이름에 로그인합니다.

ykq4w--YP1wTBrzH

 

#argocd login IP

 argocd account update-password
 
 argocd login 192.168.100.10
WARNING: server certificate had error: x509: cannot validate certificate for 10.96.178.5 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? y
Username: admin
Password: 9pZFe4FQVrTTNLHX

argocd login <ARGOCD_SERVER>
이 서버 아이피 궁금하신분들 많을텐데요 이건 nodeport 의 아이피를 적어야 됩니다. 
local 서버의 ip : 
pod의 service ip : 
(admin-k8s:argocd) root@k8s9-m:/home/master/argocd# k get svc
NAME                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
argocd-applicationset-controller          ClusterIP   10.109.60.10     <none>        7000/TCP,8080/TCP            14m
argocd-server                             NodePort    10.96.178.5      <none>        80:31444/TCP,443:30841/TCP   14m

http://192.168.100.10:31444/

CLI 환경은 Argo CD API 서버와 통신할 수 있어야 합니다. 위의 3단계에서 설명한 대로 직접 액세스할 수 없는 경우 다음 메커니즘 중 하나를 통해 포트 전달을 사용하여 액세스하도록 CLI에 지시할 수 있습니다. 1) --port-forward-namespace argocd모든 CLI 명령에 플래그를 추가합니다. 또는 2) ARGOCD_OPTS환경 변수 설정: export ARGOCD_OPTS='--port-forward-namespace argocd'.

다음 명령을 사용하여 암호를 변경합니다.

argocd account update-password

5. 앱을 배포할 클러스터 등록(선택 사항)

이 단계는 클러스터의 자격 증명을 Argo CD에 등록하며 외부 클러스터에 배포할 때만 필요합니다. Argo CD가 실행 중인 동일한 클러스터에 내부적으로 배포할 때 https://kubernetes.default.svc를 애플리케이션의 K8s API 서버 주소로 사용해야 합니다.

먼저 현재 kubeconfig의 모든 클러스터 컨텍스트를 나열합니다.

kubectl config get-contexts -o name

목록에서 컨텍스트 이름을 선택하고 에 제공하십시오 argocd cluster add CONTEXTNAME. 예를 들어 docker-desktop 컨텍스트의 경우 다음을 실행합니다.

argocd cluster add docker-desktop

argocd-manager위의 명령 은 해당 kubectl 컨텍스트의 kube-system 네임스페이스에 ServiceAccount( )를 설치하고 서비스 계정을 관리자 수준 ClusterRole에 바인딩합니다. Argo CD는 이 서비스 계정 토큰을 사용하여 관리 작업(예: 배포/모니터링)을 수행합니다.

메모

역할 의 규칙은 제한된 이름 공간 , 그룹 , 종류 집합  대한 권한 argocd-manager-role만 갖도록 수정할 수 있습니다 . 그러나 Argo CD 가 작동하려면 클러스터 범위 에서 권한이 필요합니다.createupdatepatchdeletegetlistwatch

6. Git 리포지토리에서 애플리케이션 생성

Argo CD의 작동 방식을 보여주기 위해 방명록 애플리케이션이 포함된 예제 저장소가 https://github.com/argoproj/argocd-example-apps.git 에서 제공됩니다.

CLI를 통해 앱 만들기

다음 명령을 사용하여 예제 방명록 애플리케이션을 만듭니다.

argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default

UI를 통해 앱 만들기

Argo CD 외부 UI에 대한 브라우저를 열고 브라우저에서 IP/호스트 이름을 방문하여 로그인하고 4단계에서 설정한 자격 증명을 사용합니다.

 

로그인 후 아래와 같이 + New App 버튼을 클릭합니다.

앱에 이름 guestbook을 지정하고 프로젝트를 사용 하고 동기화 정책을 다음 default과 같이 둡니다 .Manual

리포지토리 URL을 github repo url로 설정 하여 https://github.com/argoproj/argocd-example-apps.git repo를 Argo CD에 연결하고 개정판을 그대로 두고 HEAD경로를 guestbook다음 으로 설정합니다.

Destination 의 경우 클러스터 URL을 https://kubernetes.default.svc(또는 in-cluster클러스터 이름의 경우)로 설정하고 네임스페이스를 default다음 으로 설정합니다.

위의 정보를 입력한 후 UI 상단의 Createguestbook 를 클릭하여 애플리케이션을 생성합니다.

7. 애플리케이션 동기화(배포)

CLI를 통한 동기화

방명록 애플리케이션이 생성되면 이제 상태를 볼 수 있습니다.

$ argocd app get guestbook
Name:               guestbook
Server:             https://kubernetes.default.svc
Namespace:          default
URL:                https://10.97.164.88/applications/guestbook
Repo:               https://github.com/argoproj/argocd-example-apps.git
Target:
Path:               guestbook
Sync Policy:        <none>
Sync Status:        OutOfSync from  (1ff8a67)
Health Status:      Missing

GROUP  KIND        NAMESPACE  NAME          STATUS     HEALTH
apps   Deployment  default    guestbook-ui  OutOfSync  Missing
       Service     default    guestbook-ui  OutOfSync  Missing

OutOfSync애플리케이션 상태는 애플리케이션이 아직 배포되지 않았으며 Kubernetes 리소스가 생성되지 않았기 때문에 초기 상태입니다 . 애플리케이션을 동기화(배포)하려면 다음을 실행합니다.

argocd app sync guestbook

이 명령은 저장소에서 매니페스트를 검색하고 매니페스트를 수행합니다 kubectl apply. 이제 방명록 앱이 실행 중이며 이제 해당 리소스 구성 요소, 로그, 이벤트 및 평가된 상태를 볼 수 있습니다.

UI를 통한 동기화

 

# argocd app create dev-project --repo https://github.com/tommypagychoi/argocd-demo.git --path kustomize-demo --dest-server https://kubernetes.default.svc --dest-namespace dev

 

오류 참고 url :

https://rtfm.co.ua/en/argocd-an-overview-ssl-configuration-and-an-application-deploy/

 

ArgoCD: an overview, SSL configuration, and an application deploy

ArgoCD for the GitOps - an overview, installation in Kubernetes, a LoadBalancer and SSL configuration in AWS, and an example application ndpeloy

rtfm.co.ua

 

댓글