OpenShift의 Kubernetes 클러스터 요구사항
BlueXP를 사용하여 자체 관리되는 OpenShift Kubernetes 클러스터를 추가하고 관리할 수 있습니다. 클러스터를 BlueXP에 추가하려면 다음 요구 사항을 충족해야 합니다.
요구 사항
- 아스트라 트리덴트
-
Astra Trident의 최신 버전 4개 중 하나가 필요합니다. BlueXP에서 Astra Trident를 직접 설치하거나 업그레이드할 수 있습니다. 당신은 해야 한다 "사전 요구 사항을 검토합니다" Astra Trident를 설치하기 전
- Cloud Volumes ONTAP
-
Cloud Volumes ONTAP를 클러스터에 대한 백엔드 스토리지로 설정해야 합니다. "구성 단계를 보려면 Astra Trident 문서로 이동합니다".
- BlueXP 커넥터
-
Kubernetes 클러스터를 가져오고 관리하려면 BlueXP Connector가 필요합니다. 새 Connector를 만들거나 클라우드 공급자에 대한 필수 권한이 있는 기존 Connector를 사용해야 합니다.
- 네트워크 연결
-
Kubernetes 클러스터와 Connector 간, Kubernetes 클러스터와 Cloud Volumes ONTAP 사이에 네트워크 연결이 필요합니다.
- RBAC 권한이 있는 Kubernetes 구성 파일(kubecononfig)
-
OpenShift 클러스터를 가져오려면 다른 기능을 활성화하는 데 필요한 RBAC 권한이 있는 kubecononfig 파일이 필요합니다. kubecononfig 파일을 생성합니다.
-
백업 및 복원: 백업 및 복원에는 기본 인증만 필요합니다.
-
스토리지 클래스 추가: BlueXP를 사용하여 스토리지 클래스를 추가하고 클러스터에서 백엔드의 변경 사항을 모니터링하려면 확장된 인증이 필요합니다.
-
Astra Trident 설치: BlueXP에 Astra Trident를 설치하려면 전체 인증을 제공해야 합니다.
Astra Trident를 설치할 때 BlueXP는 Astra Trident가 스토리지 클러스터와 통신해야 하는 자격 증명이 포함된 Astra Trident 백엔드 및 Kubernetes 암호를 설치합니다.
-
kubecononfig 파일을 생성합니다
OpenShift CLI를 사용하여 kubecon무화과 파일을 만들어 BlueXP로 가져옵니다.
-
관리 사용자가 있는 공용 URL에서 OC 로그인을 사용하여 OpenShift CLI에 로그인합니다.
-
다음과 같이 서비스 계정을 생성합니다.
-
OC-SERVICE-ACCOUNT.YAML이라는 서비스 계정 파일을 생성합니다.
필요에 따라 이름 및 네임스페이스를 조정합니다. 여기에서 변경한 경우 다음 단계에서 동일한 변경 사항을 적용해야 합니다.
oc-service-account.yaml
+
apiVersion: v1 kind: ServiceAccount metadata: name: oc-service-account namespace: default
-
서비스 계정 적용:
kubectl apply -f oc-service-account.yaml
-
-
인증 요구 사항에 따라 사용자 지정 역할 바인딩을 만듭니다.
-
OC-clusterrobinding.YAML이라는 ClusterRoleBinding 파일을 만듭니다.
oc-clusterrolebinding.yaml
-
클러스터에 필요한 RBAC 승인을 구성합니다.
백업/복원Kubernetes 클러스터의 백업 및 복원을 위한 기본 인증을 추가하십시오.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: cloudmanager-access-clusterrole rules: - apiGroups: - '' resources: - namespaces verbs: - list - watch - apiGroups: - '' resources: - persistentvolumes verbs: - list - watch - apiGroups: - '' resources: - pods - pods/exec verbs: - get - list - watch - apiGroups: - '' resources: - persistentvolumeclaims verbs: - list - create - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - list - apiGroups: - trident.netapp.io resources: - tridentbackends verbs: - list - watch - apiGroups: - trident.netapp.io resources: - tridentorchestrators verbs: - get - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: k8s-access-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cloudmanager-access-clusterrole subjects: - kind: ServiceAccount name: oc-service-account namespace: default
스토리지 클래스BlueXP를 사용하여 저장소 클래스를 추가하려면 확장된 권한을 추가합니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: cloudmanager-access-clusterrole rules: - apiGroups: - '' resources: - secrets - namespaces - persistentvolumeclaims - persistentvolumes - pods - pods/exec verbs: - get - list - watch - create - delete - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - create - list - watch - delete - patch - apiGroups: - trident.netapp.io resources: - tridentbackends - tridentorchestrators - tridentbackendconfigs verbs: - get - list - watch - create - delete - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: k8s-access-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cloudmanager-access-clusterrole subjects: - kind: ServiceAccount name: oc-service-account namespace: default
Trident 설치전체 관리자 권한을 부여하고 BlueXP에서 Astra Trident를 설치할 수 있습니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: cloudmanager-access-clusterrole roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: oc-service-account namespace: default
-
클러스터 역할 바인딩을 적용합니다.
kubectl apply -f oc-clusterrolebinding.yaml
-
-
'<context>'을(를) 설치에 적합한 컨텍스트로 대체하여 서비스 계정 암호를 나열합니다.
kubectl get serviceaccount oc-service-account --context <context> --namespace default -o json
출력의 끝은 다음과 유사합니다.
"secrets": [ { "name": "oc-service-account-dockercfg-vhz87"}, { "name": "oc-service-account-token-r59kr"} ]
제탑 배열의 각 요소에 대한 지수는 0으로 시작합니다. 위의 예에서 OC-SERVICE-ACCOUNT-dockercfg-vhz87 인덱스는 0이고 OC-SERVICE-ACCOUNT-TOKEN-r59kr 인덱스는 1입니다. 출력에서 "token"이라는 단어가 포함된 서비스 계정 이름의 인덱스를 기록해 둡니다.
-
다음과 같이 kubecononfig를 생성합니다.
-
create-kubecononfig.sh 파일을 만듭니다. 다음 스크립트 시작 부분의 token_index를 올바른 값으로 바꿉니다.
create-kubeconfig.sh
# Update these to match your environment. # Replace TOKEN_INDEX with the correct value # from the output in the previous step. If you # didn't change anything else above, don't change # anything else here. SERVICE_ACCOUNT_NAME=oc-service-account NAMESPACE=default NEW_CONTEXT=oc KUBECONFIG_FILE='kubeconfig-sa' CONTEXT=$(kubectl config current-context) SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.secrets[TOKEN_INDEX].name}') TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.data.token}') TOKEN=$(echo ${TOKEN_DATA} | base64 -d) # Create dedicated kubeconfig # Create a full copy kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp # Switch working context to correct context kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT} # Minify kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \ config view --flatten --minify > ${KUBECONFIG_FILE}.tmp # Rename context kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ rename-context ${CONTEXT} ${NEW_CONTEXT} # Create token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-credentials ${CONTEXT}-${NAMESPACE}-token-user \ --token ${TOKEN} # Set context to use token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user # Set context to correct namespace kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --namespace ${NAMESPACE} # Flatten/minify kubeconfig kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ view --flatten --minify > ${KUBECONFIG_FILE} # Remove tmp rm ${KUBECONFIG_FILE}.full.tmp rm ${KUBECONFIG_FILE}.tmp
-
Kubernetes 클러스터에 적용할 명령을 소스 하십시오.
source create-kubeconfig.sh
-
결과를 사용합니다 kubeconfig-sa
파일 - BlueXP에 OpenShift 클러스터를 추가할 수 있습니다.