{"id":23564182,"url":"https://github.com/selectel/mks-csi-snapshotter","last_synced_at":"2026-01-25T15:03:46.751Z","repository":{"id":188803391,"uuid":"674574550","full_name":"selectel/mks-csi-snapshotter","owner":"selectel","description":null,"archived":false,"fork":false,"pushed_at":"2023-08-16T22:40:05.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-16T04:34:35.611Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selectel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-04T09:17:55.000Z","updated_at":"2023-08-17T07:47:42.000Z","dependencies_parsed_at":"2023-08-16T23:38:58.966Z","dependency_job_id":null,"html_url":"https://github.com/selectel/mks-csi-snapshotter","commit_stats":null,"previous_names":["selectel/mks-csi-snapshotter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/selectel/mks-csi-snapshotter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fmks-csi-snapshotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fmks-csi-snapshotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fmks-csi-snapshotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fmks-csi-snapshotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selectel","download_url":"https://codeload.github.com/selectel/mks-csi-snapshotter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fmks-csi-snapshotter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28754807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T13:59:49.818Z","status":"ssl_error","status_checked_at":"2026-01-25T13:59:33.728Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-26T17:13:13.798Z","updated_at":"2026-01-25T15:03:46.731Z","avatar_url":"https://github.com/selectel.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Настройка External snapshotter для создания снапшотов pvc в Managed Kubernetes\n\nНиже представлен процесс настройки и использования External snapshotter в Kubernetes для создания снапшотов Persistent Volume Claims (PVC).\nExternal snapshotter - это инструмент, который позволяет создавать и управлять снапшотами PVC в Kubernetes, используя средства облачной платформы на базе OpenStack. Мы рассмотрим шаги по установке и настройке External snapshotter, а также демонстрируем его использование для создания и восстановления снапшотов PVC в Managed Kubernetes. В данном случае, мы будем использовать [CSI Snapshotter](https://github.com/kubernetes-csi/external-snapshotter).\n\nВам потребуется установить в кластер external-snapshotter, snapshot-controller и создать Custom Resource Definitions (CRDs) для снапшотов. Для этого выполним команду:\n\n```shell\nkubectl apply -f https://raw.githubusercontent.com/selectel/mks-csi-snapshotter/master/deploy/setup-snapshot-controller.yaml\n```\n\nПосле применения манифеста, проверяем, что созданные нами поды корректно развернуты. Для этого выполняем команду:\n\n```shell\nkubectl get pod -l app=snapshot-controller --namespace=kube-system\n```\n\nДля того, что бы протестировать развернутое нами решение создаем Persistent Volume Claim (PVC) и StorageClass для последующего создания снапшота. В данном случае, мы будем использовать кластер в зоне ru-3b. Создание PVC и StorageClass для ru-3b выполняется при помощи манифеста:\n\n```yaml\n---\n# pvc.yaml\nkind: StorageClass\napiVersion: storage.k8s.io/v1\nmetadata:\n  name: fast.ru-3b\nprovisioner: cinder.csi.openstack.org\nparameters:\n  type: fast.ru-3b\n  availability: ru-3b\n  fsType: ext4\nallowVolumeExpansion: true\n\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: my-pv-claim\nspec:\n  storageClassName: fast.ru-3b\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 10Gi\n```\n\nПрименяем манифест командой `kubectl apply -f pvc.yaml`.\n\nДалее, по аналогии с PVC и StorageClass, создаем манифест `VolumeSnapshotClass` и `VolumeSnapshot`:\n\n```yaml\n# Snapshot.yaml\n---\napiVersion: snapshot.storage.k8s.io/v1\nkind: VolumeSnapshotClass\nmetadata:\n  name: csi-hostpath-snapclass-v1\ndriver: cinder.csi.openstack.org\ndeletionPolicy: Delete\nparameters:\n  force-create: \"true\"\n---\napiVersion: snapshot.storage.k8s.io/v1\nkind: VolumeSnapshot\nmetadata:\n  name: new-snapshot-demo\nspec:\n  volumeSnapshotClassName: csi-hostpath-snapclass-v1 #\u003c-- Тут необходимо использовать название SnapshotClass'а, созданного нами выше.\n  source:\n    persistentVolumeClaimName: my-pv-claim #\u003c-- Тут необходимо использовать название PVC, снапшот которого вы собираетесь создать.\n```\n\nПрименяем созданный нами манифест, выполнив команду `kubectl apply -f snapshot.yaml`.\n\n## Восстановление из снапшота\n\nДля восстановления PVC из созданного ранее снапшота необходимо создать дополнительный манифест.\nПример такого манифеста можно найти в нашем репозитории по ссылке. Давайте рассмотрим его более подробно.\n\n```yaml\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: snapshot-demo-restore #\u003c-- Тут необходимо дать название нового PVC\nspec:\n  storageClassName: fast.ru-3b\n  dataSource:\n    name: new-snapshot-demo #\u003c-- Тут необходимо дать название ранее созданного снапшота, из которого выполняется восстановление\n    kind: VolumeSnapshot\n    apiGroup: snapshot.storage.k8s.io\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 10Gi\n```\n\nПрименяем данный манифест командой `kubectl apply -f snapshot-restore.yaml`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselectel%2Fmks-csi-snapshotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselectel%2Fmks-csi-snapshotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselectel%2Fmks-csi-snapshotter/lists"}