CCE Container Storage (Everest) поддерживает пользовательские ключи доступа. Таким образом, пользователи IAM могут использовать свои собственные пользовательские ключи доступа для монтирования тома OBS. Вы можете использовать IAM для управления правами доступа к OBS для пользователей IAM.
При создании тома OBS в консоли старой версии необходимо загрузить AK/SK, которые являются глобальными ключами доступа, используемыми для монтирования томов OBS. В результате все пользователи IAM в вашей учётной записи будут использовать одни и те же ключи для монтирования бакетов OBS как томов и получат одинаковые права доступа к бакетам. Однако данная настройка не позволяет задавать разные права доступа для отдельных пользователей IAM.
Если вы загрузили AK/SK (конкретно, если paas.longaksk существует в пространстве имён kube-system кластера), следует отключить глобальный секрет доступа, чтобы предотвратить выполнение неавторизованных операций пользователями IAM. Это гарантирует, что загруженный в консоли глобальный секрет доступа не будет использоваться при работе с томами OBS. Если вы не загрузили ни один AK/SK, пропустите этот раздел.
Чтобы отключить глобальный секрет доступа, выполните следующие действия:
echo -n xxx|base64echo -n yyy|base64
Запишите закодированные AK и SK.
apiVersion: v1data:access.key: WE5WWVhVNU*****secret.key: Nnk4emJyZ0*****kind: Secretmetadata:name: test-usernamespace: defaultlabels:secret.kubernetes.io/used-by: csitype: cfe/secure-opaque
Подробно:
Параметр | Описание |
|---|---|
access.key | Base64‑закодированный AK |
secret.key | Base64‑закодированный SK |
name | Имя Secret |
namespace | Пространство имён секрета |
secret.kubernetes.io/used-by: csi | Add this label if you want to make it available on the CCE console when you create an OBS PV/PVC. |
type | Тип секрета. Значение должно быть cfe/secure-opaque. При использовании этого типа данные, вводимые пользователями, автоматически шифруются. |
kubectl create -f test-user.yaml
После создания секрета с помощью AK/SK вы можете связать секрет с создаваемым PV, а затем использовать AK/SK в секрете для монтирования тома OBS.
apiVersion: v1kind: PersistentVolumemetadata:name: pv-obs-exampleannotations:pv.kubernetes.io/provisioned-by: everest-csi-provisionerspec:accessModes:- ReadWriteManycapacity:storage: 1Gicsi:nodePublishSecretRef:name: test-usernamespace: defaultdriver: obs.csi.everest.iofsType: obsfsvolumeAttributes:everest.io/obs-volume-type: STANDARDeverest.io/region: ru-moscow-1storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisionervolumeHandle: obs-normal-static-pvpersistentVolumeReclaimPolicy: DeletestorageClassName: csi-obs
Parameter | Description |
|---|---|
nodePublishSecretRef | Секрет, указанный во время монтирования.
|
fsType | Тип файла, который может быть s3fs или obsfs. Если значение s3fs, создаётся OBS Бакет. Если значение obsfs, создаётся параллельная файловая система OBS. |
volumeHandle | Имя тома OBS. |
kubectl create -f pv-example.yaml
После создания PV вы можете создать PVC и связать его с PV.
Пример файла YAML для PVC:
apiVersion: v1kind: PersistentVolumeClaimmetadata:annotations:csi.storage.k8s.io/node-publish-secret-name: test-usercsi.storage.k8s.io/node-publish-secret-namespace: defaultvolume.beta.kubernetes.io/storage-provisioner: everest-csi-provisionereverest.io/obs-volume-type: STANDARDcsi.storage.k8s.io/fstype: obsfsname: obs-secretnamespace: defaultspec:accessModes:- ReadWriteManyresources:requests:storage: 1GistorageClassName: csi-obsvolumeName: pv-obs-example
Параметр | Описание |
|---|---|
csi.storage.k8s.io/node-publish-secret-name | Имя секрета |
csi.storage.k8s.io/node-publish-secret-namespace | Namespace of the secret |
kubectl create -f pvc-example.yaml
После создания PVC вы можете создать рабочую нагрузку и связать её с PVC для создания томов.
При динамическом создании тома OBS вы можете использовать следующий метод для указания секрета:
apiVersion: v1kind: PersistentVolumeClaimmetadata:annotations:csi.storage.k8s.io/node-publish-secret-name: test-usercsi.storage.k8s.io/node-publish-secret-namespace: defaulteverest.io/obs-volume-type: STANDARDcsi.storage.k8s.io/fstype: obsfsname: obs-secretnamespace: defaultspec:accessModes:- ReadWriteManyresources:requests:storage: 1GistorageClassName: csi-obs
Parameter | Description |
|---|---|
csi.storage.k8s.io/node-publish-secret-name | Secret name |
csi.storage.k8s.io/node-publish-secret-namespace | Namespace of the secret |
kubectl create -f pvc-example.yaml
После создания PVC вы можете создать рабочую нагрузку и связать её с PVC для создания томов.
Вы можете использовать секрет IAM‑пользователя для монтирования OBS‑тома. Предположим, что создан workload с именем obs-secret, путь монтирования в контейнере — /temp, и у IAM‑пользователя есть разрешения CCE ReadOnlyAccess и Tenant Guest. Ожидаемые выводы: Ожидаемые выводы: Ожидаемые выводы: