Alternar entre opções de gerenciamento de backend
Aprenda sobre as diferentes maneiras de gerenciar backends no Trident.
Opções para gerenciamento de backends
Com a introdução de TridentBackendConfig, os administradores agora têm duas maneiras únicas de gerenciar backends. Isso levanta as seguintes questões:
-
Backends criados usando
tridentctlpodem ser gerenciados comTridentBackendConfig? -
Backends criados usando
TridentBackendConfigpodem ser gerenciados usandotridentctl?
Gerencie tridentctl back-ends usando TridentBackendConfig
Esta seção aborda os passos necessários para gerenciar backends que foram criados usando tridentctl diretamente através da interface do Kubernetes, criando TridentBackendConfig objetos.
Isso se aplica aos seguintes cenários:
-
Backends pré-existentes, que não possuem um
TridentBackendConfigporque foram criados comtridentctl. -
Novos backends que foram criados com
tridentctl, enquanto outrosTridentBackendConfigobjetos existem.
Em ambos os cenários, os backends continuarão presentes, com Trident agendando volumes e operando sobre eles. Os administradores têm uma das duas opções aqui:
-
Continue usando
tridentctlpara gerenciar os backends que foram criados com ele. -
Vincule os backends criados usando
tridentctla um novoTridentBackendConfigobjeto. Fazer isso significa que os backends serão gerenciados usandokubectle nãotridentctl.
Para gerenciar um backend preexistente usando kubectl, você precisará criar um TridentBackendConfig que se conecte ao backend existente. Aqui está uma visão geral de como isso funciona:
-
Crie um segredo do Kubernetes. O segredo contém as credenciais que Trident precisa para se comunicar com o cluster/serviço de armazenamento.
-
Crie um
TridentBackendConfigobjeto. Isso contém detalhes sobre o cluster/serviço de storage e faz referência ao segredo criado na etapa anterior. É preciso ter cuidado para especificar parâmetros de configuração idênticos (comospec.backendName,spec.storagePrefix,spec.storageDriverName, e assim por diante).spec.backendNamedeve ser definido com o nome do backend existente.
Etapa 0: identificar o backend
Para criar uma TridentBackendConfig que se vincula a um backend existente, você precisará obter a configuração do backend. Neste exemplo, vamos supor que um backend foi criado usando a seguinte definição JSON:
tridentctl get backend ontap-nas-backend -n trident +---------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +---------------------+----------------+--------------------------------------+--------+---------+ | ontap-nas-backend | ontap-nas | 52f2eb10-e4c6-4160-99fc-96b3be5ab5d7 | online | 25 | +---------------------+----------------+--------------------------------------+--------+---------+
cat ontap-nas-backend.json
{
"version": 1,
"storageDriverName": "ontap-nas",
"managementLIF": "10.10.10.1",
"dataLIF": "10.10.10.2",
"backendName": "ontap-nas-backend",
"svm": "trident_svm",
"username": "cluster-admin",
"password": "admin-password",
"defaults": {
"spaceReserve": "none",
"encryption": "false"
},
"labels": {
"store": "nas_store"
},
"region": "us_east_1",
"storage": [
{
"labels": {
"app": "msoffice",
"cost": "100"
},
"zone": "us_east_1a",
"defaults": {
"spaceReserve": "volume",
"encryption": "true",
"unixPermissions": "0755"
}
},
{
"labels": {
"app": "mysqldb",
"cost": "25"
},
"zone": "us_east_1d",
"defaults": {
"spaceReserve": "volume",
"encryption": "false",
"unixPermissions": "0775"
}
}
]
}
Passo 1: criar um segredo do Kubernetes
Crie um segredo que contenha as credenciais para o backend, conforme mostrado neste exemplo:
cat tbc-ontap-nas-backend-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: ontap-nas-backend-secret
type: Opaque
stringData:
username: cluster-admin
password: admin-password
kubectl create -f tbc-ontap-nas-backend-secret.yaml -n trident secret/backend-tbc-ontap-san-secret created
Etapa 2: Criar um TridentBackendConfig CR
O próximo passo é criar uma TridentBackendConfig CR que se vinculará automaticamente à já existente ontap-nas-backend (como neste exemplo). Certifique-se de que os seguintes requisitos sejam atendidos:
-
O mesmo nome de backend está definido em
spec.backendName. -
Os parâmetros de configuração são idênticos aos do backend original.
-
Pools virtuais (se presentes) devem manter a mesma ordem que no backend original.
-
As credenciais são fornecidas por meio de um Kubernetes Secret e não em texto simples.
Nesse caso, o TridentBackendConfig ficará assim:
cat backend-tbc-ontap-nas.yaml
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: tbc-ontap-nas-backend
spec:
version: 1
storageDriverName: ontap-nas
managementLIF: 10.10.10.1
dataLIF: 10.10.10.2
backendName: ontap-nas-backend
svm: trident_svm
credentials:
name: mysecret
defaults:
spaceReserve: none
encryption: 'false'
labels:
store: nas_store
region: us_east_1
storage:
- labels:
app: msoffice
cost: '100'
zone: us_east_1a
defaults:
spaceReserve: volume
encryption: 'true'
unixPermissions: '0755'
- labels:
app: mysqldb
cost: '25'
zone: us_east_1d
defaults:
spaceReserve: volume
encryption: 'false'
unixPermissions: '0775'
kubectl create -f backend-tbc-ontap-nas.yaml -n trident tridentbackendconfig.trident.netapp.io/tbc-ontap-nas-backend created
Etapa 3: Verificar o status do `TridentBackendConfig`CR
Após o TridentBackendConfig ter sido criado, sua fase deve ser Bound. Ele também deve refletir o mesmo nome de backend e UUID do backend existente.
kubectl get tbc tbc-ontap-nas-backend -n trident NAME BACKEND NAME BACKEND UUID PHASE STATUS tbc-ontap-nas-backend ontap-nas-backend 52f2eb10-e4c6-4160-99fc-96b3be5ab5d7 Bound Success #confirm that no new backends were created (i.e., TridentBackendConfig did not end up creating a new backend) tridentctl get backend -n trident +---------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +---------------------+----------------+--------------------------------------+--------+---------+ | ontap-nas-backend | ontap-nas | 52f2eb10-e4c6-4160-99fc-96b3be5ab5d7 | online | 25 | +---------------------+----------------+--------------------------------------+--------+---------+
O backend será agora completamente gerenciado usando o tbc-ontap-nas-backend TridentBackendConfig objeto.
Gerencie TridentBackendConfig back-ends usando tridentctl
`tridentctl` pode ser usado para listar backends que foram criados usando `TridentBackendConfig`. Além disso, administradores também podem optar por gerenciar completamente esses backends através de `tridentctl`, excluindo `TridentBackendConfig` e certificando-se de que `spec.deletionPolicy` esteja definido como `retain`.
Etapa 0: identificar o backend
Por exemplo, vamos supor que o seguinte backend foi criado usando TridentBackendConfig:
kubectl get tbc backend-tbc-ontap-san -n trident -o wide NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY backend-tbc-ontap-san ontap-san-backend 81abcb27-ea63-49bb-b606-0a5315ac5f82 Bound Success ontap-san delete tridentctl get backend ontap-san-backend -n trident +-------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +-------------------+----------------+--------------------------------------+--------+---------+ | ontap-san-backend | ontap-san | 81abcb27-ea63-49bb-b606-0a5315ac5f82 | online | 33 | +-------------------+----------------+--------------------------------------+--------+---------+
A partir da saída, observa-se que TridentBackendConfig foi criado com sucesso e está vinculado a um backend [observe o UUID do backend].
Etapa 1: confirmar deletionPolicy está definido como retain
Vamos analisar o valor de deletionPolicy. Isso precisa ser definido como retain. Isso garante que, quando um TridentBackendConfig CR for excluído, a definição de backend ainda estará presente e poderá ser gerenciada com tridentctl.
kubectl get tbc backend-tbc-ontap-san -n trident -o wide
NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY
backend-tbc-ontap-san ontap-san-backend 81abcb27-ea63-49bb-b606-0a5315ac5f82 Bound Success ontap-san delete
# Patch value of deletionPolicy to retain
kubectl patch tbc backend-tbc-ontap-san --type=merge -p '{"spec":{"deletionPolicy":"retain"}}' -n trident
tridentbackendconfig.trident.netapp.io/backend-tbc-ontap-san patched
#Confirm the value of deletionPolicy
kubectl get tbc backend-tbc-ontap-san -n trident -o wide
NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY
backend-tbc-ontap-san ontap-san-backend 81abcb27-ea63-49bb-b606-0a5315ac5f82 Bound Success ontap-san retain
|
|
Não prossiga para a próxima etapa a menos que deletionPolicy esteja definido como retain.
|
Passo 2: Exclua o TridentBackendConfig CR
A etapa final é excluir o TridentBackendConfig CR. Após confirmar que o deletionPolicy está definido como retain, você pode prosseguir com a exclusão:
kubectl delete tbc backend-tbc-ontap-san -n trident tridentbackendconfig.trident.netapp.io "backend-tbc-ontap-san" deleted tridentctl get backend ontap-san-backend -n trident +-------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +-------------------+----------------+--------------------------------------+--------+---------+ | ontap-san-backend | ontap-san | 81abcb27-ea63-49bb-b606-0a5315ac5f82 | online | 33 | +-------------------+----------------+--------------------------------------+--------+---------+
Ao excluir o TridentBackendConfig objeto, Trident simplesmente o remove sem realmente excluir o próprio backend.