В инструкции рассмотрим пример создания пода с постоянным хранилищем Object Storage, бакет которого создан заранее.
Проверьте, что в проекте подключен сервис Object Storage.
Для работы с объектным хранилищем на сервисный аккаунт необходимо назначить роли s3e.editor и s3e.viewer.
Создайте кластер Managed Kubernetes и хотя бы одну группу узлов.
При создании кластера выберите сервисный аккаунт, созданный на предыдущем шаге. Можно также использовать сервисный аккаунт, который создается автоматически, тогда все необходимые роли будут назначены сразу.
Создайте SNAT-шлюз для доступа к образу, который будете развертывать на поде.
Создайте cloudru-s3-pv-static.yaml и сохраните манифест:
apiVersion: v1kind: PersistentVolumemetadata:name: cloudru-s3-pv-staticspec:storageClassName: ""accessModes:- ReadWriteManycapacity:storage: 10Gicsi:driver: s3.mk8s.csi.cloud.ruvolumeHandle: <bucket-id>
Где:
storageClassName — название класса хранилища. Следует оставить параметр незаполненным.
spec.accessModes — режим доступа к тому. Необходимо указать ReadWriteMany.
spec.capacity.storage — размер постоянного тома. Вы можете указать произвольное значение. В любом случае размер тома будет ограничен размером бакета Object Storage.
spec.csi.driver — название драйвера, который будет использован для предоставления тома.
spec.csi.volumeHandle — идентификатор бакета Object Storage. ID можно скопировать из URL бакета.
Выполните команду:
kubectl create -f cloudru-s3-pv-static.yaml
Убедитесь, что постоянный том создан, а его статус Available:
kubectl describe pv cloudru-s3-pv-static
Создайте файл cloudru-s3-pvc-static.yaml и сохраните манифест:
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: cloudru-s3-pvc-staticspec:storageClassName: ""accessModes:- ReadWriteManyresources:requests:storage: 10Gi
Где spec.accessModes — режим доступа к тому. Необходимо указать ReadWriteMany.
Выполните команду:
kubectl create -f cloudru-s3-pvc-static.yaml
Убедитесь, что PVC создан:
kubectl describe pvc cloudru-s3-pvc-static
Отобразится подробная информация о созданном PVC.
Проверьте статус постоянного тома:
kubectl get pv cloudru-s3-pv-static
После создания PVC статус постоянного тома должен измениться на Bound.
Создайте cloudru-s3-pod-static.yaml и сохраните следующий манифест:
apiVersion: v1kind: Podmetadata:name: cloudru-s3-pod-staticspec:containers:- name: web-serverimage: nginxvolumeMounts:- mountPath: /pvname: cloudru-s3-pv-staticvolumes:- name: cloudru-s3-pv-staticpersistentVolumeClaim:claimName: cloudru-s3-pvc-static
Где:
spec.containers.image — образ для развертывания в контейнере.
spec.volumeMounts — параметры монтирования тома в контейнере.
spec.volumeMounts.name — название подключаемого тома.
spec.volumes.persistentVolumeClaim.claimName — название PVC-объекта.
Выполните команду:
kubectl create -f cloudru-s3-pod-static.yaml
Проверьте статус Deployment:
kubectl get pod cloudru-s3-pod-static
Результат:
NAME READY UP-TO-DATE AVAILABLE AGEcloudru-s3-pod-static 1/1 1 1 61s
Создайте файл в контейнере /pv/s3_file:
kubectl exec -ti cloudru-s3-pod-static -- touch /pv/s3_file
Проверьте, что файл попал в бакет.
Если вы завершили работу с примером, удалите ресурсы.
Выполните последовательно команды:
kubectl delete pod cloudru-s3-pod-statickubectl delete pvc cloudru-s3-pvc-statickubectl delete pv cloudru-s3-pv-static