Implementando o OpenShift Data Foundation em clusters clássicos
O OpenShift Data Foundation é uma solução de armazenamento altamente disponível que pode ser usada para gerenciar o armazenamento persistente de suas cargas de trabalho conteinerizadas em clusters Red Hat® OpenShift® on IBM Cloud®.
A instalação do OpenShift Data Foundation a partir do OperatorHub não é compatível com clusters do IBM Cloud. Para instalar o ODF, conclua as etapas a seguir para implementar o complemento de cluster.
Planejando sua configuração
Antes de instalar o ODF em seu cluster, certifique-se de que as condições de pré-requisito a seguir sejam atendidas:
Para instalar o OpenShift Data Foundation em clusters clássicos, ative o VRF em sua conta.
- Instalar ou atualizar a CLI do
oc - Se você não tiver o encaminhamento de rota virtual (VRF) ativado em sua conta, ative o VRF.
- Depois de ter ativado o VRF, ative Terminais de serviço
- Revise os tipos de nó do trabalhador de SDS. Nas tabelas de cada seção de área metropolitana, os sabores de SDS estão nas guias Bare Metal e terminam com
.ssd. - Crie um cluster clássico com um mínimo de um nó do trabalhador por zona entre três zonas. Escolha os nós trabalhadores do tipo
mb4c.32x384.3.8tb.ssdoumb4c.20x64.2x1.9tb.ssdcom os discos locais necessários para o ODF. - Prepare seu cluster clássico.
Opcional: configurando uma instância de serviço do IBM Cloud Object Storage
Para configurar o IBM Cloud Object Storage como o armazenamento de backup padrão em seu cluster de armazenamento, crie uma instância do IBM Cloud Object Storage. Em seguida, crie um conjunto de credenciais HMAC e um segredo do Kubernetes que usem suas credenciais HMAC do Object Storage. Se você não especificar as credenciais do IBM Cloud Object Storage durante a instalação, o armazenamento de suporte padrão em seu cluster de armazenamento será criado com os PVs no cluster. É possível configurar armazenamentos auxiliares adicionais após a implementação do ODF, mas não é possível mudar o armazenamento auxiliar padrão.
Acesse o seu Red Hat OpenShift cluster.
- Crie um espaço de nomes
openshift-storageno seu cluster. Os pods do driver são implementados nesse espaço de nomes. Copie o YAML a seguir e salve-o comoos-namespace.yamlna sua máquina local.apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" name: openshift-storage - Crie o espaço de nomes
openshift-storageusando o arquivo YAML que você salvou.oc create -f os-namespace.yaml - Verifique se o namespace foi criado.
oc get namespaces | grep storage - Crie uma instância de serviço do IBM Cloud Object Storage.
ibmcloud resource service-instance-create noobaa-store cloud-object-storage standard global - Crie credenciais HMAC. Anote suas credenciais.
ibmcloud resource service-key-create cos-cred-rw Writer --instance-name noobaa-store --parameters '{"HMAC": true}' - Crie o segredo do Kubernetes chamado
ibm-cloud-cos-credsno espaço de nomesopenshift-storageque usa suas credenciais de HMAC do Object Storage. Ao executar o comando, especifique seu ID da chave de acesso e a chave de acesso secreta de HMAC do Object Storage. Observe que seu segredo deve ser denominadoibm-cloud-cos-creds.oc -n 'openshift-storage' create secret generic 'ibm-cloud-cos-creds' --type=Opaque --from-literal=IBM_COS_ACCESS_KEY_ID=<access_key_id> --from-literal=IBM_COS_SECRET_ACCESS_KEY=<secret_access_key> - Verifique se o seu segredo foi criado.
oc get secrets -A | grep cos
Opcional: Configurando a criptografia usando o Hyper Protect Crypto Services
Se você desejar configurar a criptografia, crie uma instância de Hyper Protect Crypto Services ou Key Protect. Em seguida, crie uma chave raiz e um segredo do tipo “ Kubernetes ” que utilize suas credenciais do Hyper Protect Crypto Services ou Key Protect.
A IBM Cloud está mudando os serviços dedicados de gerenciamento de chave de Hyper Protect Crypto Services para Key Protect Dedicated.
- Sua chave de API para Hyper Protect Crypto Services ou Key Protect deve ter as permissões mínimas necessárias a seguir:
ReaderReader Plus- Se você estiver usando a criptografia em todo o cluster e a criptografia de classe de armazenamento, sua chave de API deverá ter as permissões necessárias a seguir:
ReaderReader PlusWriter
-
Crie uma instância de serviço Hyper Protect Crypto Services ou Key Protect.
-
Criar chave raiz
-
Depois de criar sua instância e sua chave raiz, anote o nome da instância ( Hyper Protect Crypto Services ou Key Protect ), o ID da instância, o ID da chave raiz e o endpoint público.
-
Crie um ID de serviço, chave de API e política de acesso que permita o acesso a Hyper Protect Crypto Services e Red Hat OpenShift on IBM Cloud ou Key Protect e Red Hat OpenShift on IBM Cloud. Anote a API que você criou.
Acesse o seu Red Hat OpenShift cluster.
- Liste seus namespaces para determinar se você tem um namespace
openshift-storage. Se você não tiver um namespaceopenshift-storage, crie-o.oc get namespaces | grep openshift-storage- Crie um espaço de nomes
openshift-storageno seu cluster. Os pods do driver são implementados nesse espaço de nomes. Copie o YAML a seguir e salve-o comoos-namespace.yamlna sua máquina local.
apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" name: openshift-storage ``` 1. Crie o espaço de nomes `openshift-storage` usando o arquivo YAML que você salvou. ```sh {: pre} oc create -f os-namespace.yaml ``` 1. Verifique se o namespace foi criado. ```sh {: pre} oc get namespaces | grep storage ``` - Crie um espaço de nomes
- Codifique o ID de sua chave raiz e a chave de API do ID de serviço que você criou como base64.
printf "ROOT-KEY-ID" | base64printf "SERVICE-ID-API-KEY" | base64 - Crie o segredo do Kubernetes no namespace
openshift-storageque usa suas credenciais do Hyper Protect Crypto Services.- Salve o segredo a seguir como um arquivo YAML chamado
ibm-hpcs-secret.yaml.
apiVersion: v1 data: IBM_KP_CUSTOMER_ROOT_KEY: AaAAAaZAAAAy11AAAyAAkaAaQtAAk0AAA2AzY5AjYaaa67aa # your base64 encoded root key ID IBM_KP_SERVICE_API_KEY: AAAaaajAAAAAncmAAaaaaAAAAdAAId1AtVjBJRU1aAAaAeTh1aEw=AaaaA # your base64 encoded API kind: Secret metadata: name: ibm-hpcs-secret namespace: openshift-storage type: Opaque ``` 1. Crie o segredo em seu cluster. ```sh {: pre} oc apply -f ibm-hpcs-secret.yaml ``` - Salve o segredo a seguir como um arquivo YAML chamado
- Verifique se o seu segredo foi criado.
oc get secrets -A | grep ibm-hpcs-secret
Preparando seu cluster para uma instalação do OpenShift Data Foundation
Antes de instalar o OpenShift Data Foundation, prepare o seu cluster.
Acesse o seu Red Hat OpenShift cluster.
-
Efetue login em cada nó do trabalhador em seu cluster usando o comando
oc debuge conclua as etapas a seguir.- Efetue login no nó do trabalhador. Substitua
<worker_node_IP>pelo nome do seu nó de trabalho. Para obter os nomes dos seus nós de trabalho, execute ooc get nodescomando.
oc debug node/<node name> -- chroot /host rm -rvf /var/lib/rook /mnt/local-storage ``` - Para cada partição de disco, limpe o sistema de arquivos `xfs` no nó do trabalhador. Se você não limpar o sistema de arquivos, o OSD não será criado. ```sh {: pre} file -sL /dev/<partition> wipefs -a /dev/<partition> ``` - Edite o arquivo `/etc/kubernetes/kubelet.conf` e altere o valor do parâmetro `EnableControllerAttachDetach` para `true`. ```sh {: pre} nano /etc/kubernetes/kubelet.conf ``` - Salve e saia usando `ctrl + X`. - Reinicie o Kubelet. ```sh {: pre} systemctl restart kubelet ``` - Efetue logout do nó do trabalhador. ```sh exit ``` - Efetue login no nó do trabalhador. Substitua
-
Repita as etapas anteriores para limpar o sistema de arquivos para cada nó do trabalhador que você deseja utilizar em sua implantação do ODF.
Obtendo os detalhes do dispositivo
É possível usar a descoberta automática de disco para localizar dispositivos disponíveis para o ODF. No entanto, se você quiser especificar manualmente os dispositivos de armazenamento para o ODF, complete as etapas a seguir para recuperar os detalhes de seu dispositivo de armazenamento.
Antes de instalar o ODF, obtenha os detalhes dos discos locais em seus nós do trabalhador.
-
Efetue login em seu cluster e obtenha uma lista de nós do trabalhador disponíveis. Anote os nós do trabalhador que você deseja usar na sua implementação do OCS.
oc get nodes -
Efetue login em cada nó do trabalhador que você deseja usar para o ODF.
oc debug node/<node-name> -
Depois de implementar o pod de depuração no nó do trabalhador, execute o comando a seguir para permitir binários de host.
chroot /host -
Liste os discos disponíveis no nó do trabalhador.
lsblk -
Revise a saída de comando para obter os discos disponíveis. É possível usar apenas discos desmontados para implementações do ODF, como os discos
sdcdo exemplo a seguir. Observe que a capacidade de armazenamento inicial da implementação do ODF é igual ao tamanho do disco especificado como oosd-device-path. Neste exemplo, o discosdcé desmontado e possui duas partições disponíveis:sdc1esdc2.NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931G 0 disk |-sda1 8:1 0 256M 0 part /boot |-sda2 8:2 0 1G 0 part -sda3 8:3 0 929.8G 0 part / sdb 8:16 0 744.7G 0 disk -sdb1 8:17 0 744.7G 0 part /disk1 sdc 8:32 0 744.7G 0 disk |-sdc1 8:33 0 18.6G 0 part -sdc2 8:34 0 260.8G 0 part -
Para cada disco desmontado que você deseja usar em sua implementação, localize o ID do disco. No exemplo a seguir, o ID para a partição
sdc1éscsi-3600605b00d87b43027b3bc310a64c6c9-part1, e o ID para a partiçãosdc2éscsi-3600605b00d87b43027b3bc310a64c6c9-part2.ls -l /dev/disk/by-id/Exemplo de saída
total 0 lrwxrwxrwx. 1 root root 9 Feb 9 04:15 scsi-3600605b00d87b43027b3bbb603150cc6 -> ../../sda lrwxrwxrwx. 1 root root 10 Feb 9 04:15 scsi-3600605b00d87b43027b3bbb603150cc6-part1 -> ../../sda1 lrwxrwxrwx. 1 root root 10 Feb 9 04:15 scsi-3600605b00d87b43027b3bbb603150cc6-part2 -> ../../sda2 lrwxrwxrwx. 1 root root 10 Feb 9 04:15 scsi-3600605b00d87b43027b3bbb603150cc6-part3 -> ../../sda3 lrwxrwxrwx. 1 root root 9 Feb 9 04:15 scsi-3600605b00d87b43027b3bbf306bc28a7 -> ../../sdb lrwxrwxrwx. 1 root root 10 Feb 9 04:15 scsi-3600605b00d87b43027b3bbf306bc28a7-part1 -> ../../sdb1 lrwxrwxrwx. 1 root root 9 Feb 9 04:17 scsi-3600605b00d87b43027b3bc310a64c6c9 -> ../../sdc lrwxrwxrwx. 1 root root 10 Feb 11 03:14 scsi-3600605b00d87b43027b3bc310a64c6c9-part1 -> ../../sdc1 lrwxrwxrwx. 1 root root 10 Feb 11 03:15 scsi-3600605b00d87b43027b3bc310a64c6c9-part2 -> ../../sdc2 -
Repita as etapas anteriores com relação a cada nó do trabalhador que você deseja usar para a implementação do OpenShift Data Foundation.
Instalando o complemento pela CLI
É possível instalar o complemento usando o comando ibmcloud oc cluster addon enable.
Para usar uma instância de serviço do IBM Cloud Object Storage como seu armazenamento auxiliar padrão, certifique-se de criar a instância de serviço e o segredo do Kubernetes no cluster. Ao criar o CRD do
ODF em seu cluster, o ODF procura um segredo chamado ibm-cloud-cos-creds para configurar o armazenamento de suporte padrão que usa suas credenciais do Object Storage HMAC.
-
Revise a referência de parâmetro.. Ao ativar o complemento, você pode substituir os valores padrão especificando a opção “
--param "key=value"” para cada parâmetro que desejar substituir. -
Antes de ativar o complemento, revise o log de mudanças para obter as informações de versão mais recente. Observe que o complemento suporta as versões de cluster
n+1. Por exemplo, você pode implantar a versão4.10.0do complemento em um cluster OCP 4.9 ou 4.11. Se você tiver uma versão de cluster diferente da padrão, será necessário especificar a opção “--version” ao habilitar o complemento.- Revise as opções de complemento para a versão do complemento que você deseja implementar.
ibmcloud oc cluster addon options --addon openshift-data-foundation --version 4.15.0Para obter o melhor desempenho, é recomendável incluir a opção
resourceProfileespecificada comoperformance. Essa opção ajuda a obter níveis de desempenho aprimorados com base na disponibilidade de recursos durante a implementação. Para obter mais informações sobre a opção “resourceProfile”, consulte “Perfis de desempenho” na documentação do ODF do Red Hat OpenShiftObserve que as classes de armazenamento padrão para
monStorageClassNameeosdStorageClassNamesão classes de armazenamento do Block Storage for VPC.Exemplo de opções de add-on para a versão 4.15.0
Add-on Options Option Default Value osdStorageClassName ibmc-vpc-block-metro-10iops-tier ocsUpgrade false billingType advanced autoDiscoverDevices false hpcsBaseUrl <Please provide the KMS Base (public) URL> taintNodes false enableNFS false resourceProfile performance useCephRBDAsDefaultStorageClass false clusterEncryption false hpcsEncryption false hpcsSecretName <Please provide the KMS secret name> encryptionInTransit false disableNoobaaLB false osdSize 512Gi numOfOsd 1 ignoreNoobaa true addSingleReplicaPool false prepareForDisasterRecovery false workerPool - odfDeploy true osdDevicePaths <Please provide IDs of the disks to be used for OSD pods if using local disks or standard classic cluster> workerNodes all hpcsServiceName <Please provide the KMS Service instance name> hpcsInstanceId <Please provide the KMS Service instance ID> hpcsTokenUrl <Please provide the KMS token URL> -
Ative o complemento
openshift-data-foundation. Se você quiser implantar apenas o complemento ODF, pode especificar a opção “"odfDeploy=false"”. Se você quiser substituir algum dos parâmetros padrão, especifique a opção--param "key=value"para cada parâmetro que deseja substituir. Para não criar seu cluster de armazenamento ao ativar o complemento, ative o complemento primeiro e crie o cluster de armazenamento mais tarde por meio da criação de um CRD.Exemplo de comando para ativar o complemento e descobrir automaticamente os volumes locais, ativar a opção de perfil de recurso
performancee ativar a criptografia com Hyper Protect Crypto Services ou Key Protect.ibmcloud oc cluster addon enable openshift-data-foundation -c CLUSTER_NAME --version VERSION --param "odfDeploy=true" --param "resourceProfile=performance" --param "osdSize=250" --param "autoDiscoverDevices=true" --param "hpcsTokenUrl=https://iam.cloud.ibm.com/identity/token" --param "hpcsEncryption=true" --param "hpcsBaseUrl=HPCS_INSTANCE_PUBLIC_ENDPOINT" --param "hpcsInstanceId=HPCS_INSTANCE_ID" --param "hpcsServiceName=HPCS_INSTANCE_NAME" --param "hpcsSecretName=HPCS_SECRET_NAME" -
Verifique se o complemento está em um estado
Ready.ibmcloud oc cluster addon ls -c CLUSTER_NAME -
Verifique se o pod
ibm-ocs-operator-controller-manager-*****está em execução no espaço de nomeskube-system.oc get pods -A | grep ibm-ocs-operator-controller-manager -
Se você ativou o complemento e configurou a opção
odfDeploy=false, siga as etapas para criar um recurso customizado do ODF
Instalando o complemento do OpenShift Data Foundation pelo console
Para instalar o ODF em seu cluster, siga estas etapas.
A versão 4.11 está disponível no momento apenas para novos clusters. Não é possível fazer upgrade de uma implantação 4.10 para 4.11. No entanto, você pode continuar usando a versão do ODF 4.10.
- Antes de ativar o complemento, revise o log de mudanças para obter as informações de versão mais recente. Observe que o complemento suporta as versões de cluster
n+1. - Revise a referência de parâmetro
- No console, selecione o cluster no qual você deseja instalar o complemento.
- No cartão do OpenShift Data Foundation, clique em Instalar. O painel ODF Instalar ODF é aberto.
- No painel Instalar ODF insira os parâmetros de configuração que deseja usar para a implementação do ODF.
- Selecione Essentials ou Advanced como seu plano de faturamento.
- Para clusters clássicos, selecione Armazenamento local para usar volumes locais nos nós do trabalhador.
- Se você deseja descobrir automaticamente os dispositivos de armazenamento disponíveis em seus nós do trabalhador e usá-los em ODF, selecione Descoberta de disco local.
- Se você deseja especificar manualmente os dispositivos de armazenamento em seus nós do trabalhador que você deseja usar em ODF, digite uma lista separada por vírgula dos IDs de disco que você deseja usar. Para encontrar esses IDs de disco, consulte Reunindo detalhes do dispositivo.
- No campo Nós do trabalhador, digite os nomes de nó dos nós do trabalhador em que deseja implementar o ODF. É necessário inserir pelo menos 3 nomes de nós do trabalhador. Para localizar seus nomes de nó, execute o comando
oc get nodesem seu cluster. Deixe este campo em branco para implementar o ODF em todos os nós do trabalhador. Os nomes do Node devem ser separados por vírgula sem espaços entre os nomes. Por exemplo:10.240.0.24,10.240.0.26,10.240.0.25. - No campo Número de discos OSD necessários, digite o número de discos OSD (armazenamento de app) para fornecer em cada nó do trabalhador.
- Se você estiver reativando o complemento para fazer upgrade da versão do complemento, selecione a opção Upgrade do ODF.
- Se você deseja criptografar os volumes usados pelos pods do sistema ODF, selecione Ativar a criptografia do cluster.
- Se você deseja ativar a criptografia nos volumes OSD (armazenamento de app), selecione Ativar a criptografia de volume.
- No campo “Nome da instância ”, digite o nome da sua instância do Hyper Protect Crypto Services ou Key Protect. Por exemplo:
Hyper-Protect-Crypto-Services-eugb. - No campo “ID da instância ”, insira o ID da sua instância do Hyper Protect Crypto Services ou Key Protect. Por exemplo:
d11a1a43-aa0a-40a3-aaa9-5aaa63147aaa. - No campo “Nome do segredo ”, digite o nome do segredo que você criou usando suas credenciais do Hyper Protect Crypto Services ou Key Protect. Por exemplo:
ibm-hpcs-secret. - No campo “ URL ” ( de base ), insira o endpoint público da sua instância do Hyper Protect Crypto Services ou Key Protect. Por exemplo:
https://api.eu-gb.hs-crypto.cloud.ibm.com:8389. - No campo URL do token, digite
https://iam.cloud.ibm.com/identity/token.
- No campo “Nome da instância ”, digite o nome da sua instância do Hyper Protect Crypto Services ou Key Protect. Por exemplo:
Criando seu cluster de armazenamento
Para implementar o ODF em seu cluster clássico, é possível criar uma definição de recurso customizado a fim de especificar os detalhes do dispositivo de armazenamento.
Para usar uma instância de serviço do IBM Cloud Object Storage como seu armazenamento auxiliar padrão, certifique-se de criar a instância de serviço e o segredo do Kubernetes no cluster. Quando você cria
o CRD do ODF em seu cluster, o ODF procura um segredo chamado ibm-cloud-cos-creds para configurar o armazenamento de suporte padrão usando suas credenciais do Object Storage HMAC.
-
Crie um recurso customizado chamado
OcsCluster. Salve e edite a definição de recurso customizado a seguir para incluir os caminhos do dispositivo para os discos locais que você recuperou anteriormente. Se você não especificar o parâmetro opcionalworkerNodes, todos os nós do trabalhador em seu cluster serão usados para a implementação do ODF. Certifique-se de incluir o caminho/dev/disk/by-id/ao especificar seus dispositivos de armazenamento.- Caso seu nó do trabalhador tenha discos brutos com partições, você precisará de uma partição para OSD e uma para o MON por nó do trabalhador. Como melhor prática e para maximizar a capacidade de armazenamento em discos particionados, especifique
a partição ou disco menor para o MON e a partição ou disco maior para o OSD. Observe que a capacidade de armazenamento inicial de sua configuração ODF é igual ao tamanho do disco que você especifica como
osd-device-pathao criar sua configuração. - Caso seus dispositivos não sejam particionados, especifique um disco bruto para o MON e um para o OSD para cada nó de trabalhador que deseja usar.
Exemplo de recurso customizado para instalar o ODF em todos os nós do trabalhador em um cluster de versão 4.8 usando descoberta automática de disco.
apiVersion: ocs.ibm.io/v1 kind: OcsCluster metadata: name: ocscluster-classic spec: osdStorageClassName: localblock osdSize: "1" autoDiscoverDevices: trueExemplo de recurso customizado para a instalação do ODF em todos os nós do trabalhador em um cluster da versão 4.8 com discos particionados.
apiVersion: ocs.ibm.io/v1 kind: OcsCluster metadata: name: ocscluster # Kubernetes resource names can't contain capital letters or special characters. Specify a name for your resource that uses only lowercase letters, numbers, `-` or `.` spec: osdStorageClassName: localblock osdSize: "1" numOfOsd: 1 billingType: advanced ocsUpgrade: false osdDevicePaths: - <device-by-id> # Example: /dev/disk/by-id/scsi-0000000a00a00a00000a0aa000a00a0a0-part2 - <device-by-id> # Example: /dev/disk/by-id/scsi-1111111a11a11a11111a1aa111a11a1a1-part2 - <device-by-id> # Example: dev/disk/by-id/scsi-2222222a22a22a22222a2aa222a22a2a2-part2 - Caso seu nó do trabalhador tenha discos brutos com partições, você precisará de uma partição para OSD e uma para o MON por nó do trabalhador. Como melhor prática e para maximizar a capacidade de armazenamento em discos particionados, especifique
a partição ou disco menor para o MON e a partição ou disco maior para o OSD. Observe que a capacidade de armazenamento inicial de sua configuração ODF é igual ao tamanho do disco que você especifica como
-
Salve o arquivo e crie o recurso customizado
OcsClusterpara o seu cluster.oc create -f <ocs_cluster_filename> -
Verifique se seu recurso customizado
OcsClusterestá em execução.oc describe OcsCluster ocscluster
Limitações
Não é possível usar o complemento ibmcloud-block-storage-plugin e ODF ao mesmo tempo. Para instalar o ODF, deve-se primeiro editar o arquivo /etc/kubernetes/kubelet.conf e mudar o valor do parâmetro EnableControllerAttachDetach para true que muda o comportamento do anexo de volume padrão para o cluster. Isso significa que não é possível provisionar volumes dinamicamente usando as classes de armazenamento do ibmc-block-* Em vez disso, deve-se
criar volumes usando classes de armazenamento ODF.