Использование зашифрованных дисков для постоянных томов
В 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
в имени.