OpenShift 4.5.1: Instalação no vSphere IPI

Se você já lidou com OpenShift antes, então sabe como é trabalhoso instalar um cluster OpenShift no vSphere do zero. Principalmente porque a infraestrutura do entorno precisa ser preparada. Com o lançamento do OpenShift 4.5.1, essa tarefa se tornou muito mais fácil.







Antes do lançamento do OpenShift 4.5.1, era possível instalar um cluster na plataforma vSphere apenas na versão UPI (User Provider Infrastructure). O usuário teve que preparar de forma independente a infraestrutura necessária para a instalação, ou seja, preparar:



  • balanceadores de rede externos (um para balancear o tráfego do cluster, o outro para balancear o tráfego do aplicativo);
  • vários registros DNS, incluindo registro SRV;
  • Servidor DHCP para emitir endereços para nós de cluster (bem, ou decidir sobre um método para definir o endereçamento estático);
  • Servidor HTTP para transferência de configuração de inicialização ao instalar RHCOS.


Ao mesmo tempo, qualquer erro (e como você sabe - "errare humanum est") na preparação do ambiente leva ao fracasso com a instalação do cluster. Para facilitar de alguma forma essa tarefa, começaram a surgir projetos de terceiros para acelerar a preparação do ambiente e diminuir a influência do "fator humano" nesse processo. Um dos mais famosos é o projeto OCP Helper Node , que prepara todas as configurações necessárias para instalar o OpenShift em um servidor via Ansible. Também havia opções de instalação de cluster com preparação de infraestrutura via Terraform.



Mas esses projetos não resolveram todos os problemas com a implantação de um cluster no vSphere. Freqüentemente, é necessário fornecer um cluster OpenShift como serviço ("kubernetes as service") e, neste caso, automatizar a instalação do OpenShift não foi uma tarefa fácil - intervenção manual foi necessária: observar a ordem de instalação do SO nos nós do cluster, confirmar os certificados no cluster, aguardar a instalação dos operadores do cluster e etc. Se necessário, você pode automatizar esse processo, mas isso também leva tempo e recursos para criar e manter essas soluções.



Desde a versão 4.5.1. lançado em 13 de julho de 2020, o OpenShift oferece suporte à instalação no vSphere usando IPI (Infraestrutura fornecida pelo instalador). Isso significa que o programa de instalação agora pode:



  • preparar independentemente todos os recursos necessários no vSphere;
  • crie um cluster OpenShift com um comando;
  • exclua o cluster OpenShift criado anteriormente com um comando.


Além disso, após essa instalação, o administrador pode adicionar ou remover nós do cluster com um comando no OpenShift. Ou habilite o escalonamento automático completamente, dando ao cluster a capacidade de responder independentemente às mudanças de carga.



Mas o novo método de instalação tem uma limitação - todos os nós do cluster, bem como o servidor a partir do qual a instalação é realizada, devem ter acesso direto à Internet. Se o administrador estiver atrás de um servidor proxy corporativo ou a Internet não estiver disponível para o cluster, o cluster deverá ser instalado como antes, na versão UPI.



Preparar a infraestrutura envolvente



Ao instalar o OpenShift, você não pode fazer sem preparar a infraestrutura, mas a lista de tarefas tornou-se mais modesta:



  1. É necessário um servidor DHCP (para emitir endereços para nós OpenShift);
  2. São necessários dois registros DNS (VIP para API de cluster e VIP para tráfego de entrada);
  3. Você precisará de uma conta no vSphere com um conjunto de privilégios descritos na documentação para instalar o OpenShift .


No nosso caso, para instalar o OpenShift e executar todos os serviços necessários, usamos o servidor shift-is01 executando o CentOS 7.



Configuração DHCPD



Não há nada específico aqui, alocamos o conjunto de endereços (192.168.111.100 -192.168.111.150) para servidores OpenShift:



[ocp@shift-is01 ~]$ sudo cat /etc/dhcp/dhcpd.conf 
authoritative;
ddns-update-style interim;
default-lease-time 14400;
max-lease-time 14400;

        option routers                  192.168.111.1;
        option broadcast-address        192.168.111.255;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.111.10;
        option domain-name              «ocp45.demo.local»;
        subnet 192.168.111.0 netmask 255.255.255.0 {
        interface ens192;
        pool {
                range 192.168.111.100 192.168.111.150;
                  # this is PXE specific
                filename «pxelinux.0»;
                next-server 192.168.111.10;
        }
}


Configuração DNS



Para nosso cluster, a zona ocp45.demo.local foi criada e os registros A e PTR para o intervalo DHCP foram criados. Crie as entradas OpenShift necessárias para a API e Ingress:



um pedaço da zona BIND ocp45.demo.local:



api             IN      A       192.168.111.190
*.apps          IN      A       192.168.111.191


Depois disso, baixamos os certificados de nosso vCenter e os instalamos como confiáveis ​​em nosso servidor.



Instale os certificados vCenter:



[ocp@shift-is01 ~]$ mkdir certs; cd certs; curl -kO https://vc01.demo.local/certs/download.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5795  100  5795    0     0  15500      0 --:--:-- --:--:-- --:--:-- 15536

[ocp@shift-is01 certs]$ unzip ./download.zip
Archive:  ./download.zip
  inflating: certs/lin/e01a85a3.r1
  inflating: certs/mac/e01a85a3.r1
  inflating: certs/win/e01a85a3.r1.crl
  inflating: certs/lin/e01a85a3.0
  inflating: certs/mac/e01a85a3.0
  inflating: certs/win/e01a85a3.0.crt

[ocp@shift-is01 certs]$ sudo cp ./certs/lin/e01a85a3.* /etc/pki/ca-trust/source/anchors

[ocp@shift-is01 certs]$ sudo update-ca-trust extract


Instalando um cluster OpenShift



O procedimento de instalação em si agora é o mais simples possível:



  1. obtenha o instalador e as chaves (Pull Secret) no site da Red Hat ;
  2. preparar um arquivo yaml com install-config.yaml com a configuração de cluster planejada;
  3. instale o cluster.


Pegamos o instalador e as chaves



Baixe o programa de instalação e PullSecret da RedHat, este procedimento é descrito no Guia de Instalação . Em nosso exemplo, todos os binários necessários para o trabalho estão localizados no diretório bin do diretório inicial do usuário ocp.



[ocp@shift-is01 bin]$ ll
total 499036
-rwxr-xr-x 1 ocp ocp  78599208 Jul 16 11:53 kubectl
-rwxr-xr-x 1 ocp ocp  78599208 Jul 16 11:53 oc
-rwxr-xr-x 1 ocp ocp 353804288 Jul 16 11:53 openshift-install
-rw-r--r-- 1 ocp ocp       954 Jul 16 11:53 README.md


Preparando install-config.yaml



[ocp@shift-is01 ~]$ cat ./install-config.yaml 
apiVersion: v1
baseDomain: demo.local
compute:
- hyperthreading: Enabled
  architecture: amd64
  name: worker
  replicas: 3
  platform:
    vsphere:
      cpus: 2
      coresPerSocket: 1
      memoryMB: 8192
      osDisk:
        diskSizeGB: 120
controlPlane:
  hyperthreading: Enabled
  architecture: amd64
  name: master
  replicas: 3
  platform:
    vsphere:
      cpus: 4
      coresPerSocket: 1
      memoryMB: 16384
      osDisk:
        diskSizeGB: 120
metadata:
  name: ocp45
networking:
  networkType: OpenShiftSDN
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  serviceNetwork:
- 172.30.0.0/16
platform:
  vsphere:
    vcenter: _vCenter
    username: __vCenter
    password: _
    datacenter: _Datacenter
    defaultDatastore: _Datastre
    network: _Network
    cluster: _Cluster
    apiVIP: 192.168.111.190
    ingressVIP: 192.168.111.191
fips: false
pullSecret: '_PullSecret'
sshKey: '_SSH_Public_Key'


Ao preparar este arquivo com a configuração futura do cluster, há três coisas a serem observadas.



Primeiro, o cluster se lembrará da configuração dos nós de trabalho do cluster definido em install-config. E todos os nós subsequentes que você criará ao dimensionar o cluster terão exatamente a mesma configuração. Portanto, é necessário determinar imediatamente a configuração ideal do nó trabalhador.



Em segundo lugar, é desejável que o endereçamento interno do cluster (Rede de Cluster e Rede de Serviço) não tenha interferência em seu endereçamento interno. Caso contrário, existe a possibilidade de que o POD dentro do cluster não consiga abrir uma conexão com recursos externos (por exemplo, ir para um banco de dados externo).



Terceiro, o nome do cluster (campo de metadados) deve corresponder ao seu domínio para esse cluster. Em nosso caso, o nome do cluster é ocp45 e seus endereços estão no domínio ocp45.demo.local.



Você também pode preparar install-config.yaml por meio do instalador openshift-install, mas não será capaz de determinar a configuração do nó de trabalho e o endereçamento interno. Em qualquer caso, faz sentido criar install-config.yaml por meio do instalador e depois corrigi-lo.



Instalando o cluster



O próprio procedimento para instalar um cluster não mudou fundamentalmente. Depois de iniciar o programa de instalação:



  • o instalador cria um nó de bootstrap com recursos para inicializar o nó mestre;
  • o instalador cria três nós principais;
  • o nó bootstrap e três nós principais formam um plano de controle do cluster;
  • o instalador desativa e remove o nó de bootstrap;
  • O plano de controle implanta nós de trabalho e configura os serviços de cluster necessários.




Processo de configuração do cluster.



Começamos a instalação do cluster e esperamos. O processo de instalação geralmente leva de 30 a 40 minutos:



Instalação de cluster



[ocp@shift-is01 ~]$ mkdir ocp45; cp ./install-config.yaml ./ocp45
[ocp@shift-is01 ~]$ ./bin/openshift-install create cluster --dir=ocp45 --log-level=info
INFO Consuming Install Config from target directory
INFO Obtaining RHCOS image file from 'https://releases-art-rhcos.svc.ci.openshift.org/art/storage/releases/rhcos-4.5/45.82.202007062333-0/x86_64/rhcos-45.82.202007062333-0-vmware.x86_64.ova?sha256=4189881eadb0b0cfd85c2f2ab1c32f6a320b71713cac3bd4179dba746ad4070a'

INFO Creating infrastructure resources...
INFO Waiting up to 20m0s for the Kubernetes API at https://api.ocp45.demo.local:6443...
INFO API v1.18.3+8b0a82f up
INFO Waiting up to 40m0s for bootstrapping to complete...
INFO Destroying the bootstrap resources...
INFO Waiting up to 30m0s for the cluster at https://api.ocp45.demo.local:6443 to initialize...
INFO Waiting up to 10m0s for the openshift-console route to be created...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/ocp/ocp45/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.ocp45.demo.local
INFO Login to the console with user: «kubeadmin», and password: «xxxxxxxxxxxxxxx»
INFO Time elapsed: 41m56s


Problemas de inicialização RHCOS



Se a conexão com a Internet for lenta, a instalação pode não funcionar: o instalador não esperará que a imagem RHCOS carregue. Você pode baixar a imagem RHCOS com antecedência no link mostrado pelo instalador. O arquivo resultante deve ser colocado no diretório ~ / .cache / openshift-installer / image_cache com o nome 5dad1f50634794b0e1ff8a830cad4b98 e reinicie a instalação. Desta vez, o openshift-install irá retirá-lo do sistema de arquivos:



INFO The file was found in cache: /home/ocp/.cache/openshift-installer/image_cache/5dad1f50634794b0e1ff8a830cad4b98. Reusing...



É isso, o cluster está pronto:



[ocp@shift-is01 ~]$ export KUBECONFIG=/home/ocp/ocp45/auth/kubeconfig
[ocp@shift-is01 ~]$ ./bin/oc get nodes

NAME                       STATUS   ROLES    AGE   VERSION
ocp45-64clc-master-0       Ready    master   33m   v1.18.3+6025c28
ocp45-64clc-master-1       Ready    master   33m   v1.18.3+6025c28
ocp45-64clc-master-2       Ready    master   33m   v1.18.3+6025c28
ocp45-64clc-worker-f7bw2   Ready    worker   15m   v1.18.3+6025c28
ocp45-64clc-worker-m277w   Ready    worker   15m   v1.18.3+6025c28
ocp45-64clc-worker-wcjj7   Ready    worker   15m   v1.18.3+6025c28




Escalonar e excluir um cluster OpenShift



As vantagens do novo método não são apenas que a instalação agora é mais fácil e requer menos esforço de preparação. Um cluster OpenShift instalado no vSphere via IPI percebe o vShpere como uma plataforma de nuvem completa e pode tirar proveito de seus benefícios de "elasticidade".



Agora, um cluster na plataforma vSphere (como grandes plataformas de nuvem, como Amazon AWS ou Google GCP) tem um conjunto de máquinas que é gerado automaticamente pelo instalador:



OpenShift machineset 
[ocp@shift-is01 ~]$ ./bin/oc get machinesets -n openshift-machine-api
NAME                 DESIRED   CURRENT   READY   AVAILABLE   AGE
ocp45-64clc-worker   3         3         3       3           50m


Isso permite reduzir o dimensionamento do cluster para executar um único comando. O OpenShift criará um nó próprio e o adicionará ao cluster ou o excluirá.



Adicionar um nó a um cluster



[ocp@shift-is01 ~]$ ./bin/oc scale --replicas=4 machineset ocp45-64clc-worker -n openshift-machine-api
machineset.machine.openshift.io/ocp45-64clc-worker scaled

[ocp@shift-is01 ~]$ ./bin/oc get machinesets -n openshift-machine-api

NAME                 DESIRED   CURRENT   READY   AVAILABLE   AGE
ocp45-64clc-worker   4         4         3       3           61m

[ocp@shift-is01 ~]$ ./bin/oc get nodes

NAME                       STATUS   ROLES    AGE     VERSION
ocp45-64clc-master-0       Ready    master   75m     v1.18.3+6025c28
ocp45-64clc-master-1       Ready    master   75m     v1.18.3+6025c28
ocp45-64clc-master-2       Ready    master   75m     v1.18.3+6025c28
ocp45-64clc-worker-f7bw2   Ready    worker   57m     v1.18.3+6025c28
ocp45-64clc-worker-hvjmn   Ready    worker   9m27s   v1.18.3+6025c28
ocp45-64clc-worker-m277w   Ready    worker   57m     v1.18.3+6025c28
ocp45-64clc-worker-wcjj7   Ready    worker   57m     v1.18.3+6025c28


Remover um nó de um cluster



[ocp@shift-is01 ~]$ ./bin/oc scale --replicas=3 machineset ocp45-64clc-worker -n openshift-machine-api
machineset.machine.openshift.io/ocp45-64clc-worker scaled

[ocp@shift-is01 ~]$ ./bin/oc get nodes

NAME                       STATUS   ROLES    AGE   VERSION
ocp45-64clc-master-0       Ready    master   97m   v1.18.3+6025c28
ocp45-64clc-master-1       Ready    master   98m   v1.18.3+6025c28
ocp45-64clc-master-2       Ready    master   98m   v1.18.3+6025c28
ocp45-64clc-worker-hvjmn   Ready    worker   32m   v1.18.3+6025c28
ocp45-64clc-worker-m277w   Ready    worker   79m   v1.18.3+6025c28
ocp45-64clc-worker-wcjj7   Ready    worker   79m   v1.18.3+6025c28


A capacidade do cluster de auto-criar e descartar nós pode ser usada para configurar o dimensionamento automático de um cluster OpenShfit .



Em geral, com a instalação do vSphere IPI, todo o gerenciamento da plataforma de orquestração de contêiner OpenShift é transferido para o lado do kubernetes:



  1. a criação e exclusão de recursos para o cluster são gerenciadas pelo administrador OpenShift por meio do conjunto de máquinas;
  2. a configuração das configurações do sistema operacional nos nós do cluster também é gerenciada pelo administrador do OpenShift via macheneconfig.


Isso se encaixa bem com a abordagem de administração zero declarada da RedHat para a infraestrutura subjacente no cluster.



Além de automatizar a criação de clusters, o novo instalador pode removê-los por conta própria. "Sob o capô" do instalador do Terraform e no diretório com os arquivos de configuração de instalação, o arquivo de estado do Terraform (terraform.tfstate) permanece. Isso permite que você exclua um cluster criado anteriormente sem medo de "tocar" acidentalmente os recursos de outras pessoas:



[ocp@shift-is01 ~]$./bin/openshift-install destroy cluster --dir=ocp45 --log-level=info


Se você está constantemente criando e eliminando clusters, por exemplo, para ambientes de teste ou treinamento, então esse recurso também ajuda a automatizar esse processo e prevenir possíveis erros humanos no processo.



Conclusão



Instalar o OpenShift no VMware vSphere é a opção de instalação mais comum. E a capacidade do OpenShift de trabalhar com o vSphere como uma plataforma em nuvem, que apareceu na versão 4.5.1, simplifica muito sua administração, fornecendo uma solução pronta para automatizar os processos de ciclo de vida desde a criação, dimensionamento e remoção da plataforma.



Agora, a abordagem de infraestrutura como código para servir soluções no local com base em Red Hat OpenShift e VMware vSphere está se tornando muito mais acessível para implementação.



Autor: Sergey Artemov, arquiteto do departamento de soluções DevOps da Jet Infosystems



PS Junte-se à comunidade do Telegram DevSecOps Talks .



All Articles