Создание SharedVolume

Ресурсы

Создание SharedVolume

Роль Ansible communishift создаёт файловую систему AWS EFS и точку доступа, а затем создаёт Secret с именем communishift-имя-проекта-efs-credentials в проекте арендатора. Структура Secret выглядит следующим образом:

data:
  efs_filesystem_id: "fsap-xxxxxxxx"
  efs_accesspoint_id: "fs-xxxxxxxxxx"

Значения закодированы в base64. Чтобы получить их, выполните следующее:

oc get secret communishift-имя-проекта-efs-credentials -o jsonpath="{.data['efs_accesspoint_id']}" | base64 -d
oc get secret communishift-имя-проекта-efs-credentials -o jsonpath="{.data['efs_filesystem_id']}" | base64 -d

Затем создайте YAML-файл и заполните значения для accessPointID и fileSystemID.

apiVersion: aws-efs.managed.openshift.io/v1alpha1
kind: SharedVolume
metadata:
  name: ИМЯ_ПРОЕКТА-sharedvolume
  namespace: ИМЯ_ПРОЕКТА
spec:
  accessPointID: fsap-xxxxx
  fileSystemID: fs-xxxxx

Затем создайте объект SharedVolume:

oc apply -f имя-проекта-sharedvolume.yml

После создания оператор AWS EFS должен автоматически создать PersistentVolume, а затем PersistentVolumeClaim в пространстве имён проекта. Затем арендаторы могут монтировать этот том обычным образом.

Следующее определение Pod может быть использовано для проверки корректной работы хранилища.

apiVersion: v1
kind: Pod
metadata:
  name: volume-test
  namespace: communishift-dev-test
spec:
  securityContext:
    runAsUser: 1001
    runAsGroup: 1001
    fsGroup: 1001
    fsGroupChangePolicy: "OnRootMismatch"
  serviceAccount: volume-test
  volumes:
    - name: test-volume
      persistentVolumeClaim:
        claimName: pvc-communishift-dev-test-sharedvolume
  containers:
    - image: quay.io/operator-framework/ansible-operator:v1.23.0
      command:
        - /bin/sh
        - "-c"
        - "sleep 60m"
      imagePullPolicy: IfNotPresent
      name: alpine
      volumeMounts:
        - name: test-volume
          mountPath: /tmp/volume_test
      restartPolicy: Always
      resources:
        requests:
          memory: "2Gi"