728x90
728x90
# 요구사항
- 한 앱이 메모리 누수가 있는데, 당장 고칠 개발팀 리소스가 부족함
- 일단은 매일 새벽에 한번씩 restart 시켜주는 크론잡 만들어주기로 함
- BlueGreen 배포 전략을 사용하느라, argo Rollout 객체를 사용함
# 이름 정리
- 앱 이름 : `honglab-app`
- 네임스페이스 : `application`
# 필요 객체
크론잡과, RBAC을 위한 SA, Role, RoleBinding이 필요함
애플리케이션과 크론잡은 같은 클러스터, 같은 네임스페이스에 위치시켜 RBAC을 위한 과정을 최소화 함.
1) ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
name: restart-honglab-app-sa
namespace: application
2) Role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: restart-honglab-app-role
namespace: application
rules:
- apiGroups:
- argoproj.io
resourceNames:
- honglab-app
resources:
- rollouts
verbs:
- get
- patch
3) RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: restart-honglab-app-role
namespace: application
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: restart-honglab-app-role
subjects:
- kind: ServiceAccount
name: restart-honglab-app-sa
namespace: application
4) CronJob
Rollout Restart를 위해서는 Argo Plugin이 필요하다. 플러그인이 깔려있는 이미지를 누가 만들어놨길래 그걸 사용하기로 결정했다.
https://hub.docker.com/r/codefresh/cf-argo-plugin/tags
apiVersion: batch/v1
kind: CronJob
metadata:
name: restart-honglab-app
spec:
timeZone: "Asia/Seoul"
schedule: "0 3 * * *" # 매일 새벽 3시에 실행
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
concurrencyPolicy: Replace
jobTemplate:
spec:
backoffLimit: 2
template:
spec:
serviceAccountName: restart-honglab-app-sa
restartPolicy: OnFailure
containers:
- name: restart-honglab-app
image: codefresh/cf-argo-plugin:0.1.0
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- kubectl argo rollouts restart honglab-app -n application
resources:
limits:
cpu: 1
memory: 1G
requests:
cpu: 0.1
memory: 1G
끝
728x90
728x90
'공부 > Kubernetes' 카테고리의 다른 글
[external-dns] 특정 ingress만 무시하기 (exclude) (0) | 2024.04.30 |
---|---|
[ingress-nginx] 413 Request Entity Too Large (0) | 2024.04.24 |
[elasticsearch/helm] bitnami chart로 elasticsearch & kibana 설치하기 (0) | 2024.04.24 |
[k8s/helm] 자체 helm chart 만들고 Artifact HUB 에 올려보기 (0) | 2024.04.21 |
[k8s/github] github workflow 실행시키는 k8s cronjob (0) | 2024.04.19 |
댓글