OpenShift中的Kubernetes叢集需求
您可以使用BlueXP新增及管理自我管理的OpenShift Kubernetes叢集。在您將叢集新增至BlueXP之前、請先確認符合下列需求。
需求
- Astra Trident
-
需要最新版Astra Trident的四種版本之一。您可以直接從BlueXP安裝或升級Astra Trident。您應該 "檢閱先決條件" 安裝Astra Trident之前。
- Cloud Volumes ONTAP
-
必須將其設定為叢集的後端儲存設備。Cloud Volumes ONTAP "如需組態步驟、請前往Astra Trident文件"。
- BlueXP Connector
-
需要使用BlueXP Connector來匯入及管理Kubernetes叢集。您需要建立新的Connector、或是使用具有雲端供應商所需權限的現有Connector:
- 網路連線能力
-
Kubernetes叢集和Connector之間、以及Kubernetes叢集和Cloud Volumes ONTAP 整個過程之間、都需要網路連線。
- 具有RBAC授權的Kubernetes組態檔(Kubeconfig)
-
若要匯入OpenShift叢集、您需要具備RBAC授權的Kbeconfig檔案、才能啟用不同的功能。 建立Kbeconfig檔案。
-
備份與還原:備份與還原僅需基本授權。
-
新增儲存類別:需要擴充授權、才能使用BlueXP新增儲存類別、並監控叢集是否有變更後端。
-
安裝Astra Trident:您需要提供BlueXP的完整授權、才能安裝Astra Trident。
安裝Astra Trident時、BlueXP會安裝Astra Trident後端和Kubernetes機密、其中包含Astra Trident與儲存叢集通訊所需的認證資料。
-
建立Kbeconfig檔案
使用OpenShift CLI、建立要匯入至BlueXP的Kbeconfig檔案。
-
使用管理使用者在公共URL上的「ocLogin」(身分登入)登入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-clusterrolebind.yaml」的「ClusterRoeBinding」檔案。
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
-
-
列出服務帳戶機密、將「<內容>」取代為正確的安裝內容:
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"} ]
"secretts "陣列中每個元素的索引以0開頭。在上述範例中、「oc-service-account-dockercfg-vhz87」的索引為0、而「oc-service-account-toke-r59kr"的索引則為1。在輸出中、記下含有「權杖」一詞的服務帳戶名稱索引。
-
產生以下的Kbeconfig:
-
建立「cree-kupeconfig.sh」檔案。將下列指令碼開頭的「toke_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
將OpenShift叢集新增至藍圖XP的檔案。