Crie um arquivo kubeconfig
Você pode adicionar um cluster ao Astra Control Service usando um arquivo kubeconfig. Dependendo do tipo de cluster que você deseja adicionar, talvez seja necessário criar manualmente um arquivo kubeconfig para o cluster usando etapas específicas.
Crie um arquivo kubeconfig para clusters do Amazon EKS
Siga estas instruções para criar um arquivo kubeconfig e um segredo de token permanente para clusters do Amazon EKS. Um segredo de token permanente é necessário para clusters hospedados no EKS.
-
Siga as instruções na documentação da Amazon para gerar um arquivo kubeconfig:
-
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 da conta de serviço conforme necessário. O namespace
kube-system
é necessário para estas etapas. Se você alterar o nome da conta de serviço aqui, você deve aplicar as mesmas alterações nas etapas a seguir.
astracontrol-service-account.yaml
+
-
-
Aplique a conta de serviço:
-
Crie um
ClusterRoleBinding
arquivo chamadoastracontrol-clusterrolebinding.yaml
.astracontrol-clusterrolebinding.yaml
-
Aplicar a vinculação de funções do cluster:
-
Crie um arquivo secreto de token de conta de serviço
astracontrol-secret.yaml
chamado .astracontrol-secret.yaml
-
Aplique o segredo do token:
-
Recuperar o segredo do token:
-
Substitua a
user
seção do arquivo AWS EKS kubeconfig pelo token, como mostrado no exemplo a seguir:
Crie um arquivo kubeconfig para clusters do Red Hat OpenShift Service no AWS (Rosa)
Siga estas instruções para criar um arquivo kubeconfig para o Red Hat OpenShift Service nos clusters AWS (Rosa).
-
Faça login no cluster ROSA.
-
Criar uma conta de serviço:
-
Adicionar uma função de cluster:
-
Usando o exemplo a seguir, crie um arquivo de configuração secreta de conta de serviço:
secret-astra-sa.yaml
-
Crie o segredo:
-
Edite a conta de serviço que você criou e adicione o nome secreto da conta de serviço Astra Control à
secrets
seção: -
Liste os segredos da conta de serviço, substituindo
<CONTEXT>
pelo contexto correto para sua instalação:O final da saída deve ser semelhante ao seguinte:
"secrets": [ { "name": "astracontrol-service-account-dockercfg-dvfcd"}, { "name": "secret-astracontrol-service-account"} ]
Os índices para cada elemento no
secrets
array começam com 0. No exemplo acima, o índice paraastracontrol-service-account-dockercfg-dvfcd
seria 0 e o índice parasecret-astracontrol-service-account
seria 1. Na sua saída, anote o número do índice para o segredo da conta de serviço. Você precisará deste número de índice na próxima etapa. -
Gere o kubeconfigo da seguinte forma:
-
Crie um
create-kubeconfig.sh
arquivo. SubstituaTOKEN_INDEX
no início do script a seguir pelo valor correto.create-kubeconfig.sh
-
Forneça os comandos para aplicá-los ao cluster do Kubernetes.
-
-
(Opcional) Renomear o kubeconfig para um nome significativo para o cluster.
mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig
Crie um arquivo kubeconfig para outros tipos de clusters
Siga estas instruções para criar um arquivo kubeconfig limitado ou expandido para clusters Rancher, Upstream Kubernetes e Red Hat OpenShift.
Para clusters gerenciados usando o kubeconfig, você pode, opcionalmente, criar uma função de administrador de permissão limitada ou expandida para o Astra Control Service.
Este procedimento ajuda você a criar um kubeconfig separado se qualquer um dos seguintes cenários se aplicar ao seu ambiente:
-
Você deseja limitar as permissões do Astra Control nos clusters que ele gerencia
-
Você usa vários contextos e não pode usar o kubeconfig padrão do Astra Control configurado durante a instalação ou uma função limitada com um único contexto não funcionará em seu ambiente
Certifique-se de que tem o seguinte para o cluster que pretende gerir antes de concluir as etapas do procedimento:
-
Um "versão suportada" de kubectl está instalado.
-
Acesso kubectl ao cluster que você pretende adicionar e gerenciar com o Astra Control Service
Para esse procedimento, você não precisa do acesso do kubectl ao cluster que está executando o Astra Control Service. -
Um kubeconfig ativo para o cluster que pretende gerir com direitos de administrador de cluster para o contexto ativo
-
Criar uma conta de serviço:
-
Crie um arquivo de conta de serviço
astracontrol-service-account.yaml
chamado .astracontrol-service-account.yaml
-
Aplique a conta de serviço:
-
-
Crie uma das seguintes funções de cluster com permissões suficientes para que um cluster seja gerenciado pelo Astra Control:
Função limitada do clusterEssa função contém as permissões mínimas necessárias para que um cluster seja gerenciado pelo Astra Control:
-
Crie um
ClusterRole
arquivo chamado, por exemploastra-admin-account.yaml
, .astra-admin-account.yaml
-
(Somente para clusters OpenShift) Append o seguinte no final
astra-admin-account.yaml
do arquivo: -
Aplique a função de cluster:
-
-
Crie a vinculação de função de cluster para a função de cluster à conta de serviço:
-
Crie um
ClusterRoleBinding
arquivo chamadoastracontrol-clusterrolebinding.yaml
.astracontrol-clusterrolebinding.yaml
-
Aplicar a vinculação de funções do cluster:
-
-
Crie e aplique o segredo do token:
-
Crie um arquivo secreto de token
secret-astracontrol-service-account.yaml
chamado .secret-astracontrol-service-account.yaml
-
Aplique o segredo do token:
-
-
Adicione o segredo do token à conta de serviço adicionando seu nome ao
secrets
array (a última linha no exemplo a seguir):apiVersion: v1 imagePullSecrets: - name: astracontrol-service-account-dockercfg-48xhx kind: ServiceAccount metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"ServiceAccount","metadata":{"annotations":{},"name":"astracontrol-service-account","namespace":"default"}} creationTimestamp: "2023-06-14T15:25:45Z" name: astracontrol-service-account namespace: default resourceVersion: "2767069" uid: 2ce068c4-810e-4a96-ada3-49cbf9ec3f89 secrets: - name: astracontrol-service-account-dockercfg-48xhx - name: secret-astracontrol-service-account
-
Liste os segredos da conta de serviço, substituindo
<context>
pelo contexto correto para sua instalação:O final da saída deve ser semelhante ao seguinte:
"secrets": [ { "name": "astracontrol-service-account-dockercfg-48xhx"}, { "name": "secret-astracontrol-service-account"} ]
Os índices para cada elemento no
secrets
array começam com 0. No exemplo acima, o índice paraastracontrol-service-account-dockercfg-48xhx
seria 0 e o índice parasecret-astracontrol-service-account
seria 1. Na sua saída, anote o número do índice para o segredo da conta de serviço. Você precisará desse número de índice na próxima etapa. -
Gere o kubeconfigo da seguinte forma:
-
Crie um
create-kubeconfig.sh
arquivo. -
Substitua
TOKEN_INDEX
no início do script a seguir pelo valor correto.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=astracontrol-service-account NAMESPACE=default NEW_CONTEXT=astracontrol 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
-
Forneça os comandos para aplicá-los ao cluster do Kubernetes.
-
-
(Opcional) Renomear o kubeconfig para um nome significativo para o cluster.
mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig