Criar backends com kubectl
Um backend define a relação entre Trident e um sistema de storage. Ele informa ao Trident como se comunicar com esse sistema de storage e como o Trident deve provisionar volumes a partir dele. Após a instalação do Trident, o próximo passo é criar um backend. A TridentBackendConfig Custom Resource Definition (CRD) permite que você crie e gerencie backends do Trident diretamente pela interface do Kubernetes. Você pode fazer isso usando kubectl ou a ferramenta de linha de comando equivalente para sua distribuição do Kubernetes.
TridentBackendConfig
TridentBackendConfig (tbc, tbconfig, tbackendconfig) é um CRD de frontend com namespace que permite gerenciar backends do Trident usando kubectl. Administradores de Kubernetes e de storage agora podem criar e gerenciar backends diretamente por meio da CLI do Kubernetes sem a necessidade de um utilitário de linha de comando dedicado (tridentctl).
Ao criar um TridentBackendConfig objeto, ocorre o seguinte:
-
Um backend é criado automaticamente pelo Trident com base na configuração que você fornece. Isso é representado internamente como um
TridentBackend(tbe,tridentbackend) CR. -
O
TridentBackendConfigestá exclusivamente ligado a umTridentBackendque foi criado pela Trident.
Cada TridentBackendConfig mantém um mapeamento um-para-um com um TridentBackend. O primeiro é a interface fornecida ao usuário para projetar e configurar backends; o segundo é como Trident representa o objeto backend real.
|
|
TridentBackend Os CRs são criados automaticamente pelo Trident. Você não deve modificá-los. Se você quiser fazer atualizações nos backends, faça isso modificando o TridentBackendConfig objeto.
|
Veja o exemplo a seguir para o formato do TridentBackendConfig CR:
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-san
spec:
version: 1
backendName: ontap-san-backend
storageDriverName: ontap-san
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: trident_svm
credentials:
name: backend-tbc-ontap-san-secret
Você também pode consultar os exemplos no "trident-installer" diretório para obter configurações de amostra para a plataforma de storage/serviço desejado.
O spec aceita parâmetros de configuração específicos do backend. Neste exemplo, o backend usa o ontap-san driver de storage e utiliza os parâmetros de configuração que estão tabulados aqui. Para a lista de opções de configuração para o driver de storage desejado, consulte o "Informações de configuração do backend para o seu driver de storage".
A spec seção também inclui credentials e deletionPolicy campos, que são recém-introduzidos no TridentBackendConfig CR:
-
credentials: Este parâmetro é obrigatório e contém as credenciais usadas para autenticação com o sistema de storage/serviço. Isso é definido como um segredo do Kubernetes criado pelo usuário. As credenciais não podem ser passadas em texto simples e resultarão em um erro. -
deletionPolicy: Este campo define o que deve acontecer quando oTridentBackendConfigfor excluído. Ele pode assumir um dos dois valores possíveis:-
delete: Isso resulta na exclusão tanto do `TridentBackendConfig`CR quanto do backend associado. Este é o valor padrão. -
retain: Quando umaTridentBackendConfigCR é excluída, a definição do backend ainda estará presente e poderá ser gerenciada comtridentctl. Definir a política de exclusão pararetainpermite que os usuários façam downgrade para uma versão anterior (pré-21.04) e mantenham os backends criados. O valor deste campo pode ser atualizado após umaTridentBackendConfigCR ser criada.
-
|
|
O nome de um backend é definido usando spec.backendName. Se não for especificado, o nome do backend é definido como o nome do objeto TridentBackendConfig (metadata.name). Recomenda-se definir explicitamente os nomes dos backends usando spec.backendName.
|
|
|
Os backends que foram criados com tridentctl não possuem um objeto TridentBackendConfig associado. Você pode optar por gerenciar esses backends com kubectl criando um TridentBackendConfig CR. É preciso ter cuidado para especificar parâmetros de configuração idênticos (como spec.backendName, spec.storagePrefix, spec.storageDriverName e assim por diante). O Trident vinculará automaticamente o novo TridentBackendConfig ao backend preexistente.
|
Visão geral das etapas
Para criar um novo backend usando kubectl, você deve fazer o seguinte:
-
Crie um "Kubernetes Secret" segredo. O segredo contém as credenciais que Trident precisa para se comunicar com o cluster/serviço de storage.
-
Crie um `TridentBackendConfig`objeto. Este objeto contém detalhes sobre o cluster/serviço de storage e faz referência ao segredo criado na etapa anterior.
Após criar um backend, você pode observar seu status usando kubectl get tbc <tbc-name> -n <trident-namespace> e coletar detalhes adicionais.
Passo 1: criar um segredo do Kubernetes
Crie um segredo que contenha as credenciais de acesso ao backend. Isso é exclusivo para cada serviço/plataforma de storage. Veja um exemplo:
kubectl -n trident create -f backend-tbc-ontap-san-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-san-secret
type: Opaque
stringData:
username: cluster-admin
password: password
Esta tabela resume os campos que devem ser incluídos no Secret para cada plataforma de storage:
| Descrição dos campos secretos da plataforma de storage | Segredo | Descrição dos campos |
|---|---|---|
Azure NetApp Files |
clientID |
O client ID de um registro de aplicativo |
Element (NetApp HCI/SolidFire) |
Endpoint |
MVIP para o SolidFire cluster com credenciais de locatário |
ONTAP |
nome de usuário |
Nome de usuário para conectar-se ao cluster/SVM. Usado para autenticação baseada em credencial |
ONTAP |
senha |
Senha para conectar-se ao cluster/SVM. Usada para autenticação baseada em credencial |
ONTAP |
clientPrivateKey |
Valor codificado em Base64 da chave privada do cliente. Usado para autenticação baseada em certificado |
ONTAP |
chapUsername |
Nome de usuário de entrada. Obrigatório se useCHAP=true. Para |
ONTAP |
chapInitiatorSecret |
Segredo do iniciador CHAP. Obrigatório se useCHAP=true. Para |
ONTAP |
chapTargetUsername |
Nome de usuário de destino. Obrigatório se useCHAP=true. Para |
ONTAP |
chapTargetInitiatorSecret |
Segredo do iniciador do alvo CHAP. Obrigatório se useCHAP=true. Para |
O segredo criado nesta etapa será referenciado no campo spec.credentials do objeto TridentBackendConfig que é criado na próxima etapa.
Etapa 2: Criar o TridentBackendConfig CR
Agora você está pronto para criar seu TridentBackendConfig CR. Neste exemplo, um backend que utiliza o ontap-san driver é criado usando o TridentBackendConfig objeto mostrado abaixo:
kubectl -n trident create -f backend-tbc-ontap-san.yaml
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-san
spec:
version: 1
backendName: ontap-san-backend
storageDriverName: ontap-san
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: trident_svm
credentials:
name: backend-tbc-ontap-san-secret
Etapa 3: Verificar o status do `TridentBackendConfig`CR
Agora que você criou o TridentBackendConfig CR, pode verificar o status. Veja o exemplo a seguir:
kubectl -n trident get tbc backend-tbc-ontap-san NAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-ontap-san ontap-san-backend 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8 Bound Success
Um backend foi criado e vinculado com sucesso ao TridentBackendConfig CR.
A fase pode assumir um dos seguintes valores:
-
Bound: OTridentBackendConfigCR está associado a um backend, e esse backend contémconfigRefdefinido para oTridentBackendConfiguid do CR. -
Unbound: Representado usando"". OTridentBackendConfigobjeto não está vinculado a um backend. Todos os CRs recém-criadosTridentBackendConfigestão nesta fase por padrão. Após a mudança de fase, ele não pode retornar ao estado Unbound novamente. -
Deleting: OTridentBackendConfigCRdeletionPolicyfoi configurado para ser excluído. Quando oTridentBackendConfigCR é excluído, ele transita para o estado Deleting.-
Caso não existam reivindicações de volume persistentes (PVCs) no backend, excluir o
TridentBackendConfigresultará na exclusão do backend pelo Trident, bem como daTridentBackendConfigCR. -
Se um ou mais PVCs estiverem presentes no backend, ele entra em estado de exclusão. O
TridentBackendConfigCR subsequentemente também entra na fase de exclusão. O backend eTridentBackendConfigsão excluídos somente após todos os PVCs serem excluídos.
-
-
Lost: O backend associado aoTridentBackendConfigCR foi excluído acidentalmente ou deliberadamente e oTridentBackendConfigCR ainda possui uma referência ao backend excluído. OTridentBackendConfigCR ainda pode ser excluído independentemente dodeletionPolicyvalor. -
Unknown: Trident não consegue determinar o estado ou a existência do backend associado aoTridentBackendConfigCR. Por exemplo, se o servidor da API não estiver respondendo ou se otridentbackends.trident.netapp.ioCRD estiver ausente. Isso pode exigir intervenção.
Nesta etapa, um backend foi criado com sucesso! Existem diversas operações que também podem ser realizadas, como "atualizações de backend e exclusões de backend".
(Opcional) Passo 4: obtenha mais detalhes
Você pode executar o seguinte comando para obter mais informações sobre seu backend:
kubectl -n trident get tbc backend-tbc-ontap-san -o wide
NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY backend-tbc-ontap-san ontap-san-backend 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8 Bound Success ontap-san delete
Além disso, você também pode obter um dump YAML/JSON de TridentBackendConfig.
kubectl -n trident get tbc backend-tbc-ontap-san -o yaml
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
creationTimestamp: 2021-04-21T20:45:11Z
finalizers:
- trident.netapp.io
generation: 1
name: backend-tbc-ontap-san
namespace: trident
resourceVersion: "947143"
uid: 35b9d777-109f-43d5-8077-c74a4559d09c
spec:
backendName: ontap-san-backend
credentials:
name: backend-tbc-ontap-san-secret
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
storageDriverName: ontap-san
svm: trident_svm
version: 1
status:
backendInfo:
backendName: ontap-san-backend
backendUUID: 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8
deletionPolicy: delete
lastOperationStatus: Success
message: Backend 'ontap-san-backend' created
phase: Bound
backendInfo contém o backendName e o backendUUID do backend criado em resposta ao TridentBackendConfig CR. O lastOperationStatus campo representa o status da última operação do TridentBackendConfig CR, que pode ser iniciada pelo usuário (por exemplo, o usuário alterou algo em spec) ou iniciada pelo Trident (por exemplo, durante reinicializações do Trident). Pode ser Success ou Failed. phase representa o status da relação entre o TridentBackendConfig CR e o backend. No exemplo acima, phase tem o valor Bound, o que significa que o TridentBackendConfig CR está associado ao backend.
Você pode executar o kubectl -n trident describe tbc <tbc-cr-name> comando para obter detalhes dos registros de eventos.
|
|
Não é possível atualizar ou excluir um backend que contenha um objeto associado TridentBackendConfig usando tridentctl. Para entender as etapas envolvidas na troca entre tridentctl e TridentBackendConfig, "veja aqui".
|