Использование зашифрованных дисков для постоянных томов
В Managed Service for Kubernetes для постоянных томов поддерживается использование дисков Compute Cloud, зашифрованных с помощью пользовательских симметричных ключей Yandex Key Management Service.
Примечание
Чтобы использовать зашифрованные диски, у облачного сервисного аккаунта, назначенного кластеру Managed Service for Kubernetes, должна быть роль kms.keys.encrypterDecrypter на ключ или каталог.
Вы можете использовать зашифрованные диски как для статической, так и для динамической подготовки постоянных томов.
Статическая подготовка тома
-
Создайте симметричный ключ в Key Management Service.
-
Создайте зашифрованный диск с использованием ключа, созданного ранее.
Сохраните идентификатор диска, он понадобится в дальнейшем.
-
Назначьте облачному сервисному аккаунту кластера Managed Service for Kubernetes роль
kms.keys.encrypterDecrypterна ключ или каталог. -
Подготовьте постоянный том. В манифесте объекта
PersistentVolumeукажите идентификатор созданного диска в параметреspec:csi:volumeHandle.
Динамическая подготовка тома
-
Создайте симметричный ключ в Key Management Service.
Сохраните идентификатор ключа, он понадобится в дальнейшем.
-
Назначьте облачному сервисному аккаунту кластера Managed Service for Kubernetes роль
kms.keys.encrypterDecrypterна ключ или каталог. -
Установите kubectl
и настройте его на работу с созданным кластером. -
В файле
encrypted-storage-class.yamlсформируйте манифест для нового класса хранилища:kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: <название_класса_хранилища> provisioner: disk-csi-driver.mks.ycloud.io volumeBindingMode: WaitForFirstConsumer parameters: type: <тип_диска> csi.storage.k8s.io/fstype: ext4 kmsKeyId: <идентификатора_симметричного_ключа> allowVolumeExpansion: true reclaimPolicy: DeleteГде:
metadata:name— произвольное название класса хранилища.parameters:type— тип диска в Compute Cloud. Возможные значения:network-ssd— сетевой SSD-диск.network-hdd— сетевой HDD-диск.network-ssd-nonreplicated— нереплицируемый SSD-диск.network-ssd-io-m3— сверхбыстрое сетевое хранилище с тремя репликами (SSD).
parameters:kmsKeyId— идентификатор симметричного ключа.
-
Создайте класс хранилища:
kubectl apply -f encrypted-storage-class.yaml -
В файле
encrypted-pvc.yamlсформируйте манифест для нового объектаPersistentVolumeClaim:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: <название_PVC> spec: accessModes: - ReadWriteOnce storageClassName: <название_класса_хранилища> resources: requests: storage: 4GiГде:
metadata:name— произвольное название для объектаPersistentVolumeClaim.spec:storageClassName— название класса хранилища, созданного ранее.
-
Создайте объект
PersistentVolumeClaim:kubectl apply -f encrypted-pvc.yaml -
В файле
pod-with-encrypted-pvc.yamlсформируйте манифест для пода с динамически подготовленным постоянным томом:apiVersion: v1 kind: Pod metadata: name: <название_пода> spec: containers: - name: app image: ubuntu command: ["/bin/sh"] args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"] volumeMounts: - name: persistent-storage mountPath: /data volumes: - name: persistent-storage persistentVolumeClaim: claimName: <название_PVC>Где:
metadata:name— произвольное название для пода.spec:volumes:persistentVolumeClaim:claimName— название объектаPersistentVolumeClaim, созданного ранее.
-
Создайте под:
kubectl apply -f pod-with-encrypted-pvc.yamlПосле создания пода в консоли управления
в сервисе Compute Cloud в разделе Диски появится новый зашифрованный диск с префиксомk8s-csiв имени.