Skip to main content
Uma versão mais recente deste produto está disponível.
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Atualizar o Astra Control Center

Colaboradores

Para atualizar o Astra Control Center, faça o download do pacote de instalação no site de suporte da NetApp e siga estas instruções para atualizar os componentes do Astra Control Center em seu ambiente. Você pode usar este procedimento para atualizar o Astra Control Center em ambientes conetados à Internet ou com conexão via rede.

O que você vai precisar
Sobre esta tarefa

O processo de atualização do Astra Control Center orienta você pelas seguintes etapas de alto nível:

Importante Não execute o seguinte comando durante todo o processo de atualização para evitar a exclusão de todos os pods do Astra Control Center: kubectl delete -f astra_control_center_operator_deploy.yaml
Dica Faça atualizações em uma janela de manutenção quando programações, backups e snapshots não estiverem sendo executados.
Observação Os comandos do Podman podem ser usados no lugar dos comandos do Docker se você estiver usando o Podman do Red Hat em vez do Docker Engine.

Faça o download do pacote Astra Control Center

  1. Faça o download do pacote de atualização do Astra Control Center (astra-control-center-[version].tar.gz) no "Site de suporte da NetApp".

  2. (Opcional) Use o seguinte comando para verificar a assinatura do pacote:

    openssl dgst -sha256 -verify astra-control-center[version].pub -signature <astra-control-center[version].sig astra-control-center[version].tar.gz

Desembale o pacote e mude o diretório

  1. Extraia as imagens:

    tar -vxzf astra-control-center-[version].tar.gz
  2. Mude para o diretório Astra.

    cd astra-control-center-[version]

Adicione as imagens ao seu registo local

  1. Adicione os arquivos no diretório de imagem do Astra Control Center ao seu Registro local.

    Observação Veja um script de exemplo para o carregamento automático de imagens abaixo.
    1. Faça login no seu Registro do Docker:

      docker login [your_registry_path]
    2. Carregue as imagens no Docker.

    3. Marque as imagens.

    4. empurre as imagens para o seu Registro local.

      export REGISTRY=[your_registry_path]
      for astraImageFile in $(ls images/*.tar)
        # Load to local cache. And store the name of the loaded image trimming the 'Loaded images: '
        do astraImage=$(docker load --input ${astraImageFile} | sed 's/Loaded image: //')
        astraImage=$(echo ${astraImage} | sed 's!localhost/!!')
        # Tag with local image repo.
        docker tag ${astraImage} ${REGISTRY}/${astraImage}
        # Push to the local repo.
        docker push ${REGISTRY}/${astraImage}
      done

Instale o operador Astra Control Center atualizado

  1. Edite a implantação do operador Astra Control Center yaml ) (`astra_control_center_operator_deploy.yaml`para consultar o Registro local e o segredo.

    vim astra_control_center_operator_deploy.yaml
    1. Se você usar um Registro que requer autenticação, substitua a linha padrão de imagePullSecrets: [] pelo seguinte:

      imagePullSecrets:
      - name: <name_of_secret_with_creds_to_local_registry>
    2. Altere [your_registry_path] para a kube-rbac-proxy imagem para o caminho do registo onde as imagens foram empurradas para um passo anterior.

    3. Altere [your_registry_path] para a acc-operator-controller-manager imagem para o caminho do registo onde as imagens foram empurradas para um passo anterior.

    4. Adicione os seguintes valores à env seção:

      - name: ACCOP_HELM_UPGRADETIMEOUT
        value: 300m
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          control-plane: controller-manager
        name: acc-operator-controller-manager
        namespace: netapp-acc-operator
      spec:
        replicas: 1
        selector:
          matchLabels:
            control-plane: controller-manager
        template:
          metadata:
            labels:
              control-plane: controller-manager
          spec:
            containers:
            - args:
              - --secure-listen-address=0.0.0.0:8443
              - --upstream=http://127.0.0.1:8080/
              - --logtostderr=true
              - --v=10
              image: [your_registry_path]/kube-rbac-proxy:v4.8.0
              name: kube-rbac-proxy
              ports:
              - containerPort: 8443
                name: https
            - args:
              - --health-probe-bind-address=:8081
              - --metrics-bind-address=127.0.0.1:8080
              - --leader-elect
              command:
              - /manager
              env:
              - name: ACCOP_LOG_LEVEL
                value: "2"
              - name: ACCOP_HELM_UPGRADETIMEOUT
                value: 300m
              image: [your_registry_path]/acc-operator:[version x.y.z]
              imagePullPolicy: IfNotPresent
            imagePullSecrets: []
  2. Instale o operador Astra Control Center atualizado:

    kubectl apply -f astra_control_center_operator_deploy.yaml

    Resposta da amostra:

    namespace/netapp-acc-operator unchanged
    customresourcedefinition.apiextensions.k8s.io/astracontrolcenters.astra.netapp.io configured
    role.rbac.authorization.k8s.io/acc-operator-leader-election-role unchanged
    clusterrole.rbac.authorization.k8s.io/acc-operator-manager-role configured
    clusterrole.rbac.authorization.k8s.io/acc-operator-metrics-reader unchanged
    clusterrole.rbac.authorization.k8s.io/acc-operator-proxy-role unchanged
    rolebinding.rbac.authorization.k8s.io/acc-operator-leader-election-rolebinding unchanged
    clusterrolebinding.rbac.authorization.k8s.io/acc-operator-manager-rolebinding configured
    clusterrolebinding.rbac.authorization.k8s.io/acc-operator-proxy-rolebinding unchanged
    configmap/acc-operator-manager-config unchanged
    service/acc-operator-controller-manager-metrics-service unchanged
    deployment.apps/acc-operator-controller-manager configured

Atualizar o Astra Control Center

  1. Edite o recurso personalizado do Astra Control Center (CR(astra_control_center_min.yaml) ) e altere a versão do Astra (astraVersion`dentro `Spec do número do ) para o mais recente:

    kubectl edit acc -n [netapp-acc or custom namespace]
    Observação Seu caminho do Registro deve corresponder ao caminho do Registro onde você enviou as imagens em um passo anterior.
  2. Adicione as seguintes linhas dentro additionalValues do Spec no Astra Control Center CR:

    additionalValues:
        nautilus:
          startupProbe:
            periodSeconds: 30
            failureThreshold: 600
  3. Execute um dos seguintes procedimentos:

    1. Se você não tiver seu próprio IngressController ou IngressController e estiver usando o Astra Control Center com seu gateway Traefik como um serviço do tipo LoadBalancer e gostaria de continuar com essa configuração, especifique outro campo ingressType (se ainda não estiver presente) e defina-o como AccTraefik.

      ingressType: AccTraefik
    2. Se você quiser mudar para a implantação de entrada genérica padrão do Astra Control Center, forneça sua própria configuração de IngressController/IngressController (com terminação TLS, etc.), abra uma rota para o Astra Control Center e defina ingressType como Generic.

      ingressType: Generic
      Dica Se você omitir o campo, o processo se tornará a implantação genérica. Se você não quiser a implantação genérica, certifique-se de adicionar o campo.
  4. (Opcional) Verifique se os pods terminam e ficam disponíveis novamente:

    watch kubectl get po -n [netapp-acc or custom namespace]
  5. Aguarde que as condições de status Astra indiquem que o upgrade esteja concluído e pronto:

    kubectl get -o yaml -n [netapp-acc or custom namespace] astracontrolcenters.astra.netapp.io astra

    Resposta:

    conditions:
      - lastTransitionTime: "2021-10-25T18:49:26Z"
        message: Astra is deployed
        reason: Complete
        status: "True"
        type: Ready
      - lastTransitionTime: "2021-10-25T18:49:26Z"
        message: Upgrading succeeded.
        reason: Complete
        status: "False"
        type: Upgrading
  6. Faça login novamente e verifique se todos os clusters gerenciados e aplicativos ainda estão presentes e protegidos.

  7. Se o operador não tiver atualizado o Cert-manager, atualize os serviços de terceiros, em seguida.

Atualizar serviços de terceiros (opcional)

Os serviços de terceiros Traefik e Cert-manager não são atualizados durante etapas anteriores de atualização. Você pode, opcionalmente, atualizá-los usando o procedimento descrito aqui ou manter versões de serviço existentes se o seu sistema exigir isso.

  • Traefik: Por padrão, o Astra Control Center gerencia o ciclo de vida da implantação do Traefik. Definir externalTraefik como false (padrão) indica que não existe Traefik externo no sistema e o Traefik está sendo instalado e gerenciado pelo Astra Control Center. Neste caso, externalTraefik`está definido como `false.

    Por outro lado, se você tiver sua própria implantação do Traefik, defina externalTraefik como true. Nesse caso, você mantém a implantação e o Astra Control Center não atualizará as CRDs, a menos shouldUpgrade que esteja definido como true.

  • Cert-manager: Por padrão, o Astra Control Center instala o cert-manager (e CRDs), a menos que você defina externalCertManager como true. Defina shouldUpgrade como true para que o Astra Control Center atualize as CRDs.

O Traefik é atualizado se qualquer uma das seguintes condições for cumprida:

  • ExternalTraefik: FALSO OR

  • ExternalTraefik: TRUE E shouldUpgrade: True.

Passos
  1. Editar o acc CR:

    kubectl edit acc -n [netapp-acc or custom namespace]
  2. Altere o externalTraefik campo e o shouldUpgrade campo para true ou false conforme necessário.

    crds:
        externalTraefik: false
        externalCertManager: false
        shouldUpgrade: false

Verifique o status do sistema

  1. Faça login no Astra Control Center.

  2. Verifique se todos os clusters e aplicativos gerenciados ainda estão presentes e protegidos.

Configure a entrada para o balanceamento de carga

Você pode configurar um objeto de entrada do Kubernetes que gerencia o acesso externo aos serviços, como balanceamento de carga em um cluster.

  • A atualização padrão usa a implantação genérica de entrada. Nesse caso, você também precisará configurar um controlador de entrada ou um recurso de entrada.

  • Se você não quiser um controlador de entrada e quiser manter o que já tem, defina ingressType como AccTraefik.

Observação Para obter detalhes adicionais sobre o tipo de serviço "LoadBalancer" e Ingress, "Requisitos"consulte .

Os passos diferem consoante o tipo de controlador de entrada que utiliza:

  • Controlador de entrada nginx

  • Controlador de entrada OpenShift

O que você vai precisar
  • Na especificação CR,

    • Se crd.externalTraefik estiver presente, deve ser definido como false OU

    • Se crd.externalTraefik for true, crd.shouldUpgrade também deve ser true.

  • O necessário "controlador de entrada" já deve ser implantado.

  • O "classe de entrada" correspondente ao controlador de entrada já deve ser criado.

  • Você está usando versões do Kubernetes entre o v1,19 e o v1,21, inclusive.

Etapas para o controlador nginx Ingress
  1. Use o segredo existente secure-testing-cert ou crie um segredo do tipo[kubernetes.io/tls] para uma chave privada TLS e um certificado no netapp-acc namespace (ou nome personalizado), conforme descrito em "Segredos TLS".

  2. Implante um recurso de entrada no netapp-acc namespace (ou nome personalizado) para um esquema obsoleto ou novo:

    1. Para um esquema obsoleto, siga esta amostra:

      apiVersion: extensions/v1beta1
      kind: Ingress
      metadata:
        name: ingress-acc
        namespace: [netapp-acc or custom namespace]
        annotations:
          kubernetes.io/ingress.class: nginx
      spec:
        tls:
        - hosts:
          - <ACC address>
          secretName: [tls secret name]
        rules:
        - host: [ACC address]
          http:
            paths:
            - backend:
              serviceName: traefik
              servicePort: 80
              pathType: ImplementationSpecific
    2. Para um novo esquema, siga este exemplo:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: netapp-acc-ingress
      namespace: [netapp-acc or custom namespace]
    spec:
      ingressClassName: [class name for nginx controller]
      tls:
      - hosts:
        - <ACC address>
        secretName: [tls secret name]
      rules:
      - host: <ACC address>
        http:
          paths:
            - path:
              backend:
                service:
                  name: traefik
                  port:
                    number: 80
              pathType: ImplementationSpecific
Passos para o controlador OpenShift Ingress
  1. Procure seu certificado e prepare os arquivos de chave, certificado e CA para uso pela rota OpenShift.

  2. Crie a rota OpenShift:

    oc create route edge --service=traefik
    --port=web -n [netapp-acc or custom namespace]
    --insecure-policy=Redirect --hostname=<ACC address>
    --cert=cert.pem --key=key.pem

Verifique a configuração da entrada

Pode verificar a configuração de entrada antes de continuar.

  1. Certifique-se de que o Traefik foi alterado para clusterIP de Loadbalancer:

    kubectl get service traefik -n [netapp-acc or custom namespace]
  2. Verifique as rotas em Traefik:

    Kubectl get ingressroute ingressroutetls -n [netapp-acc or custom namespace]
    -o yaml | grep "Host("
    Observação O resultado deve estar vazio.