NKS 에서 운영 중인 클러스터의 시스템로그를 백업해야했는데, 여러 방법을 찾아보다가 Initscript를 Daemonset으로 실행시키는 방법이 있어서 공유합니다.
https://guide.ncloud-docs.com/docs/k8s-k8suse-init-script
네이버 클라우드 플랫폼의 Ncloud Kubernetes Service는 InitScript를 통해 미리 작성해 둔 스크립트를 실행하여 노드의 초기 환경 관리를 진행할 수 있습니다. InitScript는 DaemonSet으로 생성되어 각 노드에 스케줄링됩니다.
주의InitScript는 DaemonSet으로 동작하므로 CRI(Container Runtime Interface), Kubelet의 설정에는 관여하지 않아야 합니다.InitScript는 Kubernetes에서 동작하므로 서버 생성 스크립트와 유사하지만 다른 방식입니다.스크립트 내용에 보안 침해가 있을 수 있는 내용은 포함하지 않아야 합니다.
저희 아키텍쳐는 gitops 방식을 사용하기 때문에 공식문서에서 제공하는 yaml 을 헬름 차트 템플릿에 넣어서 사용하였습니다.
argocd 혹은 다른 cd 서비스를 사용하지 않는다면 kubectl 로 직접 apply 하시면 됩니다.
kind: DaemonSet
apiVersion: apps/v1
metadata:
name: init-script
namespace: kube-system
labels:
app: init-script
spec:
selector:
matchLabels:
name: init-script
template:
metadata:
labels:
name: init-script
spec:
hostPID: true
containers:
- name: init-script
image: nks.kr.private-ncr.ntruss.com/initscript-installer:v0.0.2
imagePullPolicy: Always
securityContext:
privileged: true
volumeMounts:
- name: install-init-script
mountPath: /etc/kubernetes
env:
- name: STARTUP_SCRIPT
value: |
IyEvYmluL2Jhc2gKCmVjaG8ga3ViZXJuZXRlcyBzZXJ2aWNlCg==
volumes:
- name: install-init-script
hostPath:
path: /etc/kubernetes
주의) 리전에 따라 사용되는 이미지가 다릅니다.
위의 yaml 을 배포하면 클러스터의 모든 노드에 파드가 스케쥴링되어 kube-system 네임스페이스에 Daemonset으로 Init-Script 파드가 생성됩니다.
미리 생성해 둔 스크립트 파일을 base64 인코딩하여 STARTUP_SCRIPT 변수로 설정하면 노드가 생성될 때 데몬셋으로 인해 해당 스크립트가 실행되게 됩니다!
'NCloud' 카테고리의 다른 글
[NCloud] FleuntBit 와 NCP Object Storage 연동 (0) | 2024.07.06 |
---|---|
[NCloud] Velero (0) | 2024.07.06 |