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 | AK, закодированный в Base64 |
secret.key | SK, закодированный в Base64 |
name | Имя секрета |
namespace | Пространство имён секрета |
secret.kubernetes.io/used-by: csi | Добавьте эту метку, чтобы секрет был доступен для выбора в консоли CCE при создании 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 bucket. Если значение obsfs, создаётся OBS parallel file system. |
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 | Пространство имён секрета |
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 | Имя секрета |
csi.storage.k8s.io/node-publish-secret-namespace | Пространство имён секрета |
kubectl create -f pvc-example.yaml
После создания PVC вы можете создать рабочую нагрузку и связать её с PVC для создания томов.
Вы можете использовать секрет IAM‑пользователя для монтирования OBS‑тома. Предположим, что создан workload с именем obs-secret, путь монтирования в контейнере — /temp, и у IAM‑пользователя есть разрешения CCE ReadOnlyAccess и Tenant Guest. Ожидаемые выводы: Ожидаемые выводы: Ожидаемые выводы: