メインコンテンツまでスキップ

PVC snapshot の削除をスケジュールする

FPT Cloud では、PVC 名、namespace、保持期間(時間または日数)を指定して PVC snapshot の削除をスケジュールできます。

snapshot クリーンアップ用の CronJob スケジュールを設定する​

  1. CronJob がクラスター内で権限を持てるように ServiceAccount を作成します。

    apiVersion: v1
    kind: ServiceAccount
    metadata:
    name: cleanup-snapshot-sa
    namespace: default #or any other namespace that you want to deploy the cronjob
  2. その ServiceAccount に権限を付与する ClusterRoleBinding を apply します。subjects には、上記で作成したすべての namespace の ServiceAccount を含めてください。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: grant-cleanup-snapshot-sa-admin
    subjects:
    - kind: ServiceAccount
    name: cleanup-snapshot-sa
    namespace: default #or any other namespace that you want to deploy the cronjob
    - kind: ServiceAccount
    name: cleanup-snapshot-sa
    namespace: namespace1 #if user wants to have multiple cronjob in multiple namespace
    roleRef:
    kind: ClusterRole
    name: cluster-admin
    apiGroup: rbac.authorization.k8s.io

    次のコマンドで確認します。

    kubectl get clusterrolebinding grant-cleanup-snapshot-sa-admin
  3. PVC snapshot を自動削除する CronJob を apply します。

    apiVersion: batch/v1
    kind: CronJob
    metadata:
    name: cleanup-snapshots
    spec:
    schedule: "0 2 * * *" #Adjust this (minute hour day(month) month day(week))
    timeZone: "Asia/Saigon"
    jobTemplate:
    spec:
    template:
    spec:
    serviceAccountName: cleanup-snapshot-sa #match with service account name
    containers:
    - name: snapshot-cleanup
    image: registry.fke.fptcloud.com/xplat-fke/cleanup-snapshot-pvc:v0.1.0
    env:
    - name: NAMESPACE
    value: "your-pvc-namespace" #Replace with your PVC namespace
    - name: PVC_NAME
    value: "your-pvc" #Replace with your PVC name
    - name: RETENTION_MAX
    value: "7" #or any int > 0
    - name: RETENTION_UNITS
    value: "days" #or "hours"
    restartPolicy: OnFailure

クリーンアップ用 CronJob を削除する​

PVC のスケジュール削除を停止するには、対応する CronJob を削除します。