[k8s] Argo 설치 후 살펴본 기능들
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 |