Pré-requisitos para adicionar um cluster
Você deve garantir que as condições de pré-requisito sejam atendidas antes de adicionar um cluster. Você também deve executar as verificações de qualificação para garantir que seu cluster esteja pronto para ser adicionado ao Astra Control Center.
O que você precisará antes de adicionar um cluster
-
Um cluster que executa o OpenShift 4,6 ou 4,7, que tem o Trident StorageClasses apoiado pelo ONTAP 9.5 ou posterior.
-
Um ou mais nós de trabalho com pelo menos 1GB GB de RAM disponíveis para executar serviços de telemetria.
Se você planeja adicionar um segundo cluster do OpenShift 4,6 ou 4,7 como um recurso de computação gerenciado, verifique se o recurso Snapshot de volume do Trident está ativado. Consulte o Trident oficial "instruções" para ativar e testar instantâneos de volume com o Trident.
-
-
O superusuário e ID de usuário definidos no sistema ONTAP de backup para fazer backup e restaurar aplicativos com o Centro de Controle Astra (ACC). Execute os seguintes comandos na linha de comando ONTAP:
export policy rule modify -vserver svm0 -policyname default -ruleindex 1 -superuser sys
export-policy rule modify -policyname default -ruleindex 1 -anon 65534
(Este é o valor padrão)
Execute verificações de qualificação
Execute as seguintes verificações de qualificação para garantir que o cluster esteja pronto para ser adicionado ao Astra Control Center.
-
Verifique a versão do Trident.
kubectl get tridentversions -n trident
Se o Trident existir, você verá uma saída semelhante à seguinte:
NAME VERSION trident 21.04.0
Se o Trident não existir, você verá uma saída semelhante à seguinte:
error: the server doesn't have a resource type "tridentversions"
Se o Trident não estiver instalado ou a versão instalada não for a mais recente, você precisará instalar a versão mais recente do Trident antes de continuar. Consulte "Documentação do Trident" para obter instruções. -
Verifique se as classes de armazenamento estão usando os drivers Trident suportados. O nome do provisionador deve ser
csi.trident.netapp.io
. Veja o exemplo a seguir:kubectl get storageClass -A NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ontap-gold (default) csi.trident.netapp.io Delete Immediate true 5d23h thin kubernetes.io/vsphere-volume Delete Immediate false 6d
Crie uma função admin kubeconfig
Certifique-se de que tem o seguinte na sua máquina antes de executar os passos:
-
kubectl
v1,19 ou posterior instalado -
Um kubeconfig ativo com direitos de administrador de cluster para o contexto ativo
-
Crie uma conta de serviço da seguinte forma:
-
Crie um arquivo de conta de serviço
astracontrol-service-account.yaml
chamado .Ajuste o nome e o namespace conforme necessário. Se as alterações forem feitas aqui, você deve aplicar as mesmas alterações nas etapas a seguir.
astracontrol-service-account.yaml
+
apiVersion: v1 kind: ServiceAccount metadata: name: astracontrol-service-account namespace: default
-
Aplique a conta de serviço:
kubectl apply -f astracontrol-service-account.yaml
-
-
Conceda permissões de administrador do cluster da seguinte forma:
-
Crie um
ClusterRoleBinding
arquivo chamadoastracontrol-clusterrolebinding.yaml
.Ajuste quaisquer nomes e namespaces modificados ao criar a conta de serviço conforme necessário.
astracontrol-clusterrolebinding.yaml
+
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: astracontrol-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: astracontrol-service-account namespace: default
-
Aplicar a vinculação de funções do cluster:
kubectl apply -f astracontrol-clusterrolebinding.yaml
-
-
Liste os segredos da conta de serviço, substituindo
<context>
pelo contexto correto para sua instalação:kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json
O final da saída deve ser semelhante ao seguinte:
"secrets": [ { "name": "astracontrol-service-account-dockercfg-vhz87"}, { "name": "astracontrol-service-account-token-r59kr"} ]
Os índices para cada elemento no
secrets
array começam com 0. No exemplo acima, o índice paraastracontrol-service-account-dockercfg-vhz87
seria 0 e o índice paraastracontrol-service-account-token-r59kr
seria 1. Em sua saída, anote o índice do nome da conta de serviço que tem a palavra "token" nele. -
Gere o kubeconfigo da seguinte forma:
-
Crie um
create-kubeconfig.sh
arquivo. Se o índice de token que você observou na etapa anterior não for 0, substitua o valorTOKEN_INDEX
no início do script a seguir pelo valor correto.create-kubeconfig.sh
# Update these to match your environment. Replace the value for TOKEN_INDEX from # the output in the previous step if it was not 0. If you didn't change anything # else above, don't change anything else here. SERVICE_ACCOUNT_NAME=astracontrol-service-account NAMESPACE=default NEW_CONTEXT=astracontrol KUBECONFIG_FILE='kubeconfig-sa' TOKEN_INDEX=0 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
-
Forneça os comandos para aplicá-los ao cluster do Kubernetes.
source create-kubeconfig.sh
-
-
(Opcional) Renomear o kubeconfig para um nome significativo para o cluster. Proteja a credencial do cluster.
chmod 700 create-kubeconfig.sh mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig
O que se segue?
Agora que você verificou que os pré-requisitos são atendidos, você está pronto para "adicione um cluster".