27.16.2. 설치 및 설정
기능은 외부 프로비저너에서 제공합니다. OpenShift Container Platform 클러스터에 설치하고 구성해야 합니다.
27.16.2.1. 외부 프로비저너 시작
외부 프로비저너 서비스는 컨테이너 이미지로 배포되며, 일반적으로 OpenShift Container Platform 클러스터에서 실행할 수 있습니다.
API 오브젝트를 관리하는 컨테이너를 허용하려면 필수 역할 기반 액세스 제어(RBAC) 규칙을 클러스터 관리자로 구성합니다.
ServiceAccount
를 생성합니다.apiVersion: v1 kind: ServiceAccount metadata: name: manila-provisioner-runner
ClusterRole
을 생성합니다.kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: manila-provisioner-role rules: - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "create", "delete"] - apiGroups: [""] resources: ["persistentvolumeclaims"] verbs: ["get", "list", "watch", "update"] - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["events"] verbs: ["list", "watch", "create", "update", "patch"]
ClusterRoleBinding
을 통해 규칙을 바인딩합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: manila-provisioner roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: manila-provisioner-role subjects: - kind: ServiceAccount name: manila-provisioner-runner namespace: default
새
스토리지
클래스를 만듭니다.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: "manila-share" provisioner: "externalstorage.k8s.io/manila" parameters: type: "default" 1 zones: "nova" 2
- 1
- 볼륨에 프로비저너가 만들 Manila 공유 유형입니다.
- 2
- 볼륨이 생성될 수 있는 Manila 가용 영역 세트입니다.
환경 변수를 사용하여 Manila servicesvic에 연결, 인증 및 권한을 부여하도록 프로비저너를 구성합니다. 다음 목록에서 설치 환경 변수의 적절한 조합을 선택합니다.
OS_USERNAME OS_PASSWORD OS_AUTH_URL OS_DOMAIN_NAME OS_TENANT_NAME
OS_USERID OS_PASSWORD OS_AUTH_URL OS_TENANT_ID
OS_USERNAME OS_PASSWORD OS_AUTH_URL OS_DOMAIN_ID OS_TENANT_NAME
OS_USERNAME OS_PASSWORD OS_AUTH_URL OS_DOMAIN_ID OS_TENANT_ID
변수를 프로비저너에 전달하려면 Secret
(시크릿)을 사용합니다. 다음 예는 첫 번째 변수 조합에 대해 구성된
보안을 보여줍니다.
apiVersion: v1 kind: Secret metadata: name: manila-provisioner-env type: Opaque data: os_username: <base64 encoded Manila username> os_password: <base64 encoded password> os_auth_url: <base64 encoded OpenStack Keystone URL> os_domain_name: <base64 encoded Manila service Domain> os_tenant_name: <base64 encoded Manila service Tenant/Project name>
최신 OpenStack 버전에서는 "테넌트" 대신 "프로젝트"를 사용합니다. 그러나 프로비저너에서 사용하는 환경 변수는 이름에 TENANT를
사용해야 합니다.
마지막 단계는 배포를 사용하여 프로비저너 자체를 시작하는 것입니다.
kind: Deployment apiVersion: extensions/v1beta1 metadata: name: manila-provisioner spec: replicas: 1 strategy: type: Recreate template: metadata: labels: app: manila-provisioner spec: serviceAccountName: manila-provisioner-runner containers: - image: "registry.redhat.io/openshift3/manila-provisioner:latest" imagePullPolicy: "IfNotPresent" name: manila-provisioner env: - name: "OS_USERNAME" valueFrom: secretKeyRef: name: manila-provisioner-env key: os_username - name: "OS_PASSWORD" valueFrom: secretKeyRef: name: manila-provisioner-env key: os_password - name: "OS_AUTH_URL" valueFrom: secretKeyRef: name: manila-provisioner-env key: os_auth_url - name: "OS_DOMAIN_NAME" valueFrom: secretKeyRef: name: manila-provisioner-env key: os_domain_name - name: "OS_TENANT_NAME" valueFrom: secretKeyRef: name: manila-provisioner-env key: os_tenant_name