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.

  1. Instalar ou atualizar a CLI do oc
  2. Se você não tiver o encaminhamento de rota virtual (VRF) ativado em sua conta, ative o VRF.
    1. Depois de ter ativado o VRF, ative Terminais de serviço
  3. 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.
  4. 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.ssd ou mb4c.20x64.2x1.9tb.ssd com os discos locais necessários para o ODF.
  5. 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.

  1. Crie um espaço de nomes openshift-storage no seu cluster. Os pods do driver são implementados nesse espaço de nomes. Copie o YAML a seguir e salve-o como os-namespace.yaml na sua máquina local.
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
      name: openshift-storage
    
  2. Crie o espaço de nomes openshift-storage usando o arquivo YAML que você salvou.
    oc create -f os-namespace.yaml
    
  3. Verifique se o namespace foi criado.
    oc get namespaces | grep storage
    
  4. Crie uma instância de serviço do IBM Cloud Object Storage.
    ibmcloud resource service-instance-create noobaa-store cloud-object-storage standard global
    
  5. Crie credenciais HMAC. Anote suas credenciais.
    ibmcloud resource service-key-create cos-cred-rw Writer --instance-name noobaa-store --parameters '{"HMAC": true}'
    
  6. Crie o segredo do Kubernetes chamado ibm-cloud-cos-creds no espaço de nomes openshift-storage que 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 denominado ibm-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>
    
  7. 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:
Reader
Reader 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:
Reader
Reader Plus
Writer
  1. Crie uma instância de serviço Hyper Protect Crypto Services ou Key Protect.

  2. Criar chave raiz

  3. 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.

  4. 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.

  1. Liste seus namespaces para determinar se você tem um namespace openshift-storage. Se você não tiver um namespace openshift-storage, crie-o.
    oc get namespaces | grep openshift-storage
    
    1. Crie um espaço de nomes openshift-storage no seu cluster. Os pods do driver são implementados nesse espaço de nomes. Copie o YAML a seguir e salve-o como os-namespace.yaml na 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
        ```
    
  2. 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" | base64
    
    printf "SERVICE-ID-API-KEY" | base64
    
  3. Crie o segredo do Kubernetes no namespace openshift-storage que usa suas credenciais do Hyper Protect Crypto Services.
    1. 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
        ```
    
  4. 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.

  1. Efetue login em cada nó do trabalhador em seu cluster usando o comando oc debug e 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 o oc get nodes comando.
        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 dodo trabalhador.
    ```sh
        exit
        ```
    
    
  2. 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.

  1. 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
    
  2. Efetue login em cada nó do trabalhador que você deseja usar para o ODF.

    oc debug node/<node-name>
    
  3. 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
    
  4. Liste os discos disponíveis no nó do trabalhador.

    lsblk
    
  5. 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 sdc do exemplo a seguir. Observe que a capacidade de armazenamento inicial da implementação do ODF é igual ao tamanho do disco especificado como o osd-device-path. Neste exemplo, o disco sdc é desmontado e possui duas partições disponíveis: sdc1 e sdc2.

    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
    
  6. 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ção sdc2 é 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
    
  7. Repita as etapas anteriores com relação a cada nó do trabalhador que você deseja usar para a implementação do OpenShift Data Foundation.

  8. Instale o ODF em seu cluster.

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.

  1. 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.

  2. 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ão 4.10.0 do 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.

    1. 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.0
    

    Para obter o melhor desempenho, é recomendável incluir a opção resourceProfile especificada como performance. 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 OpenShift

    Observe que as classes de armazenamento padrão para monStorageClassName e osdStorageClassName sã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>
    
  3. 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 performance e 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"
    
  4. Verifique se o complemento está em um estado Ready.

    ibmcloud oc cluster addon ls -c CLUSTER_NAME
    
  5. Verifique se o pod ibm-ocs-operator-controller-manager-***** está em execução no espaço de nomes kube-system.

    oc get pods -A | grep ibm-ocs-operator-controller-manager
    
  6. 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.

  1. 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.
  2. Revise a referência de parâmetro
  3. No console, selecione o cluster no qual você deseja instalar o complemento.
  4. No cartão do OpenShift Data Foundation, clique em Instalar. O painel ODF Instalar ODF é aberto.
  5. No painel Instalar ODF insira os parâmetros de configuração que deseja usar para a implementação do ODF.
  6. Selecione Essentials ou Advanced como seu plano de faturamento.
  7. Para clusters clássicos, selecione Armazenamento local para usar volumes locais nos nós do trabalhador.
  8. 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.
  9. 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.
  10. 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 nodes em 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.
  11. 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.
  12. Se você estiver reativando o complemento para fazer upgrade da versão do complemento, selecione a opção Upgrade do ODF.
  13. Se você deseja criptografar os volumes usados pelos pods do sistema ODF, selecione Ativar a criptografia do cluster.
  14. Se você deseja ativar a criptografia nos volumes OSD (armazenamento de app), selecione Ativar a criptografia de volume.
    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. No campo URL do token, digite https://iam.cloud.ibm.com/identity/token.

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.

  1. 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 opcional workerNodes, 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-path ao 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: true
    

    Exemplo 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
    
  2. Salve o arquivo e crie o recurso customizado OcsCluster para o seu cluster.

    oc create -f <ocs_cluster_filename>
    
  3. Verifique se seu recurso customizado OcsCluster está em execução.

    oc describe OcsCluster ocscluster
    
  4. Implementar um aplicativo que usa o ODF

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.