[k8s] Argo 설치 후 살펴본 기능들

Server/k8s|2020. 3. 11. 19:52

k8s 환경만 있다면 Argo 설치는 간단했습니다.

 

Argo 설치

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

네임스페이스(argo)를 만들고

yaml 파일을 apply 하면 끝 입니다.

 

Argo 설치 후 Pod 확인

kubectl get pod -n argo
NAME                                   READY   STATUS    RESTARTS   AGE
argo-server-55f5985454-gwlkv           1/1     Running   60         6d11h
workflow-controller-7dffbf956c-nv8vn   1/1     Running   0          6d11h

그리고 생성한 네임스페이스에 떠있는 pod을 확인해보면

두가지가 있는데(이전에 생성했던거라 AGE가 올라가 있습니다)

argo-server, workflow-controller 입니다.

 

 

Argo-Server

argo-server는 argo-ui로 기본적으로 2746을 포트로 하고 있고 브라우저를 통해 접속해보면

flow를 작성해서 submit 한다거나 모니터링이 가능합니다.

최근 2.5에서는 cron도 추가 된것을 확인 할 수 있습니다.

보통 저는 사용이 필요할때

kubectl -n argo port-forward deployment/argo-server 2746:2746

커맨드를 통해서 포트포워딩 하여 활용하고 있습니다.

 

Workflow-Controller

workflow-controller는 argo에서 사용하는 crd(커스텀 리소스)인 wf(WorkFlow)나 cwf(cronWorkFlow) 를 처리 합니다

 

 

Argo 기능들

Argo는 Step과 DAG(그래프 방식) 지원하지만

추가적인 기능들도 제공하고 있습니다.

 

 

 

추후 Argo를 통해 제공해야할 업무가 있어서

추가적인 기능들을 하나씩 파악하며 예제를 돌려보았습니다.

 

suspend & resume
- suspend 초, 분, 시, 일 단위 가능, 시간을 안주면 approve 방식으로도 가능
- resume은 UI에서 가능, argo cli에서도 가능


retry
- 재처리 duration(s,m,h,day)
- maxDuration, 이 시간동안 성공안하면 실패
- limit 

exit-handlers
- 워크플로우 상태에 따라 처리할수 있도록, {{workflow.status}}
- 마지막 종료 실패 결과를 운영자에게 알리기 위해서 주로 활용할듯 함(이메일, SMS)

volumeMounts
- 기존에 만들어둔 Volume을 마운트 시키거나, Flow내 LifeCycle을 갖는 Volume을 마운트 하여 Step간 파일 전달

Daemon Containers
- 워크 플로우가 실행되는 동안 사용될 컨테이너를 실행할 수 있음
- Step중에 Daemon으로 설정하게 되면 해당 Pod은 내려가지 않고 다음 Step 실행

Sidecars
- 실행하는 Step의 Pod에 sidecar(한 pod 안에 같이 뜨는 컨테이너)를 지정할 수 있음

 

 

 

이미지 출처 : https://github.com/argoproj/argo/blob/master/docs/architecture.md

'Server > k8s' 카테고리의 다른 글

[k8s] MINIO  (0) 2020.02.21
[k8s] Argo  (0) 2020.02.20

댓글()