IBM Cloud Docs
Configuração do Red Hat OpenShift NSX Edge

Configuração do Red Hat OpenShift NSX Edge

Revise os componentes NSX que são usados para suportar o ambiente Red Hat® OpenShift® 4.7. Para usar essas informações, deve-se entender como criar esses componentes e incluir a configuração. Revisão Adicionar um gateway Tier-0. Os comandos do PowerNSX serão fornecidos se você quiser usar esse método.

Red Hat OpenShift 4.7 networking
OpenShift 4.7 networking

NSX ESG

O primeiro componente que é configurado dentro do IBM Cloud® for VMware Solutions com Red Hat OpenShift é um par de dispositivos NSX Edge. Os dispositivos NSX Edge são configurados como um par ativo ou passivo de dispositivos X-Large NSX Edge.

Como parte do processo de configuração, o NSX Edge é conectado às sub-redes IBM Cloud públicas e privadas que são solicitadas para o cluster Red Hat OpenShift.

Implantação do NSX Edge
Componente Configuração
CPU 6 vCPU
RAM 8 GB
Disco 4,5 GB de VMDK residente no armazenamento compartilhado com troca de 4 GB

Os NSX Edges são configurados como ativos ou passivos na implementação interna ou dedicada. Portanto, o usuário deve criar as regras antiafinidade do vSphere Distributed Resource Scheduler (DRS) para garantir que o NSX Edges não seja executado no mesmo host que seu respectivo dispositivo peer.

Regras de antiafinidade do NSX Edge
Campo Valor
Nome OpenShift-ESG
Tipo Máquinas virtuais separadas
Membros OpenShift-ESG-0
OpenShift-ESG-1

Interfaces NSX ESG

A borda é implementada com um uplink de interface para a rede Pública da IBM Cloud e um uplink de interface para a rede Privada da IBM Cloud. Além disso, está disponível uma interface para a conexão de rede de trânsito com o Roteador lógico distribuído (DLR).

Configuração do NSX Edge - interfaces
Nome da interface Tipo de interface Endereço IP Grupo de portas ou switch lógico
Uplink privado Uplink 10.208.242.130/26
10.208.242.131/26
SDDC-DPortGroup-Mgmt
Uplink público Uplink 169.48.73.42/29
169.48.73.43/29
SDDC-DPortGroup-External
Transit Interno 192.168.100.1/24 OpenShift-Transit

Firewall NSX ESG

Configure regras para permitir a comunicação com a internet, com a rede da IBM Cloud e com as redes VXLAN.

Configuração do NSX Edge - firewalls do NSX
Regra de firewall Origem Destino Serviço Ação
Saída privada 10.208.242.128/26 Qualquer Qualquer Aceitar
Saída pública 169.48.73.40/29 Qualquer Qualquer Aceitar
Rede OpenShift 192.168.133.0/24 Qualquer Qualquer Aceitar
Rede Transit 192.168.100.0/24 Qualquer Qualquer Aceitar

NSX ESG DHCP

Para o ambiente Red Hat OpenShift 4.7, a autoinicialização, o plano de controle e os nós de cálculo requerem acesso a um servidor DHCP para obter um endereço inicial na rede. A rede fornece acesso para download do arquivo de ignição de autoinicialização. Após a configuração inicial, os endereços IP estáticos serão configurados nos nós usando o Terraform.

Configuração do NSX Edge - pools de DHCP
Conjunto DCHP Valor
IP inicial 192.168.133.50
IP final 192.168.133.100
Nome do domínio ocp.dallas.ibm.local
Configurar o DNS automaticamente Não
Servidor de nomes principal 10.187.214.66
Servidor de nomes secundário
Gateway padrão 192.168.133.1
Máscara de sub-rede 255.255.255.0
Lease Desativado
Tempo de lease 86400

NSX ESG NAT

Defina NAT para fornecer um mecanismo para permitir o acesso da rede Red Hat OpenShift às redes pública e privada.

Configuração do NSX Edge - definições de NAT
Propriedade Regra 1 do NAT do NSX Regra 2 do NAT do NSX Regra 3 do NAT do NSX
Descrição Saída pública da rede OpenShift Saída privada da rede OpenShift SSH para nó bastion
Tipo de NAT SNAT SNAT DNAT
Interface Público Privado Privado
Protocolo Qualquer Qualquer Qualquer
IP/Intervalo de origem original 192.168.133.0/24 192.168.133.0/24 10.208.242.133
IP/Intervalo de destino Qualquer Qualquer 192.168.133.8
IP/Intervalo de origem convertido 169.48.73.43 10.208.242.140 10.208.242.133
Status Ativado Ativado Ativado
Criação de log Desativar Desativado Desativado

Rotas do NSX ESG

Na borda, configure a rota padrão para a Internet pública; em seguida, inclua rotas estáticas para acessar as redes privadas da IBM Cloud.

Configuração global

Configuração do NSX Edge - gateway padrão
Configuração global vNIC IP do gateway
Gateway padrão Público 169.48.73.41

Rotas estáticas

Configuração do NSX Edge - rotas estáticas
Propriedade Rede Próximo hop Interface
Rota estática 1 10.0.0.0/8 10.208.242.129 Privado
Rota estática 2 100.0.0.0/8 10.208.242.129 Privado
Rota estática 3 161.26.0.0/16 10.208.242.129 Privado
Rota estática 4 192.168.133.0/24 192.168.100.2 Privado

Balanceadores de carga NSX

Dentro do ambiente Red Hat OpenShift, são necessários dois balanceadores de carga, um para acessar os nós do plano de controle e o outro para acessar os nós de cálculo. O NSX Edge é ativado para usar o balanceamento de carga e é configurado com perfis de aplicativo que usam um certificado para conexão de entrada da origem. O NSX Edge também é configurado com conjuntos de balanceamentos de carga para apontar para os nós do plano de controle do Red Hat OpenShift e os nós de cálculo do Red Hat OpenShift. Além disso, um servidor virtual é criado com um endereço IP virtual (VIP) na interface privada com regras que conectam os conjuntos ao VIP.

Perfil do aplicativo

Configuração do NSX Edge - perfil de aplicativo
Nome Tipo Persistência
Perfil de origem do TCP TCP IP de origem

Conjuntos

Configuração para NSX Edge - conjuntos
Campo Conjunto de APIs 6443 Conjunto de APIs 22623 Conjunto de apps 80 Conjunto de apps 443
Nome api-pool-6443 api-pool-22623 app-pool-80 app-pool-443
Algoritmo ROUND-ROBIN ROUND-ROBIN ROUND-ROBIN ROUND-ROBIN
Monitor default_tcp_monitor default_tcp_monitor default_tcp_monitor default_tcp_monitor
Membros control-plane-0
control-plane-1
control-plane-2
bootstrap-0
control-plane-0
control-plane-1
control-plane-2
bootstrap-0
compute-0
compute-1
compute-2
compute-0
compute-1
compute-2

Servidores virtuais

Configuração de VIP para NSX Edge - servidores virtuais
Campo LB 6443 LB 22623 LB 80 LB 443
Nome api-6443-lb api-22623-lb apps-80-lb apps-443-lb
Descrição API/API-INT API/API-INT HTTP do aplicativo HTTPs do aplicativo
Conjunto padrão pool-1 pool-2 pool-3 pool-4
Endereço IP 10.208.242.132 10.208.242.132 10.208.242.131 10.208.242.131
Protocolo TCP TCP TCP TCP
Porta 6443 22623 130 443

Comandos do PowerNSX

Revise o exemplo a seguir dos comandos PowerNSX que podem ser usados para automatizar o fornecimento e a configuração do NSX ESG.

Use a tabela a seguir para documentar os parâmetros necessários para sua implementação. São mostrados exemplos que correspondem à implementação descrita anteriormente.

Parâmetros do PowerNSX DLR
Parâmetros Exemplo A sua implementação
Endereço IP do vCenter Server
Usuário do vCenter Server
Senha do vCenter Server
Endereço IP do servidor DNS do AD 10.187.214.66
Comutador lógico de trânsito OpenShift-Transit
Rede OpenShift 192.168.133.0/24
Rede de trânsito 192.168.100.0/24
Trânsito do ESG 192.168.100.1
Trânsito de DLR 192.168.100.2
Nome do ESG OpenShift-ESG
Cluster de instância do vCenter Server cluster1
Armazenamento de dados da instância do vCenter Server vsanDatastore
Sub-rede móvel privada 10.208.242.128/26
BCR IP address 10.208.242.129
ESG primário privado 10.208.242.130
ESG privado secundário 1 10.208.242.131
ESG privado secundário 2 10.208.242.132
ESG privado secundário 3 10.208.242.133
Sub-rede móvel pública 169.48.73.40/29
FCR IP address 169.48.73.41
ESG público primário 169.48.73.42
ESG público secundário 1 169.48.73.43
ESG público secundário 2 169.48.73.44
Nome de usuário do ESG admin
Senha do ESG VMware12345!
# Connect to NSX Manager
Connect-NsxServer -vCenterServer <IP_Address> -User <UserName> -Password '<Password>'

# Create Edge interface specification and create Edge
$priUplink = New-NsxEdgeInterfaceSpec -index 0 -Name "Private Uplink" -Type Uplink -ConnectedTo (Get-VDPortgroup SDDC-DPortGroup-Mgmt) -PrimaryAddress 10.208.242.130 -SubnetPrefixLength 26 -SecondaryAddresses 10.208.242.131,10.208.242.132,10.208.242.133
$pubUplink = New-NsxEdgeInterfaceSpec -index 1 -Name "Public Uplink" -Type Uplink -ConnectedTo (Get-VDPortgroup SDDC-DPortGroup-External) -PrimaryAddress 169.48.73.42 -SubnetPrefixLength 29 -SecondaryAddresses 169.48.73.43,169.48.73.44
$transit = New-NsxEdgeInterfaceSpec -index 2 -Name "Transit" -Type internal -ConnectedTo (Get-NsxLogicalSwitch OpenShift-Transit) -PrimaryAddress 192.168.100.1 -SubnetPrefixLength 24
New-NsxEdge -Name OpenShift-ESG -Cluster (Get-Cluster cluster1) -EnableHA -Datastore (Get-Datastore vsanDatastore) -Username admin -Password VMware12345! -FormFactor xlarge -Interface $priUplink,$pubUplink,$transit

# Set default gateway and add static routes to the ESG
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeRouting | Set-NsxEdgeRouting -DefaultGatewayAddress 169.48.73.41 -DefaultGatewayVnic 1 -DefaultGatewayDescription "Public traffic"-confirm:$false
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeRouting | New-NsxEdgeStaticRoute -Network 10.0.0.0/8 -NextHop 10.208.242.129 -Vnic 0 -Description "Private traffic" -confirm:$false
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeRouting | New-NsxEdgeStaticRoute -Network 100.0.0.0/8 -NextHop 10.208.242.129 -Vnic 0 -Description "Private traffic" -confirm:$false
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeRouting | New-NsxEdgeStaticRoute -Network 161.26.0.0/16 -NextHop 10.208.242.129 -Vnic 0 -Description "Private traffic" -confirm:$false
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeRouting | New-NsxEdgeStaticRoute -Network 192.168.133.0/24 -NextHop 192.168.100.2 -Vnic 2 -Description "OpenShift Traffic" -confirm:$false

# Configure ESG firewall rules
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeFirewall | New-NsxEdgeFirewallRule -Name "Private Outbound" -Source 10.208.242.128/26 -Service any -Action accept
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeFirewall | New-NsxEdgeFirewallRule -Name "Public Outbound" -Source 169.48.73.40/29 -Service any -Action accept
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeFirewall | New-NsxEdgeFirewallRule -Name "OpenShift Network" -Source 192.168.133.0/24 -Service any -Action accept
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeFirewall | New-NsxEdgeFirewallRule -Name "Transit Network" -Source 192.168.100.0/24 -Service any -Action accept
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeFirewall | New-NsxEdgeFirewallRule -Name "Private inbound to OpenShift" -Source 10.0.0.0/8 -Destination 10.208.242.131 -Service tcp/80,tcp/443 -Action accept
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeFirewall | New-NsxEdgeFirewallRule -Name "SSH inbound to Bastion" -Source 10.0.0.0/8 -Destination 10.208.242.133 -Service tcp/22 -Action accept

# Configure ESG NAT rules
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeNat | Set-NsxEdgeNat -enabled -confirm:$false
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeNat | New-NsxEdgeNatRule -Vnic 1 -OriginalAddress 192.168.133.0/24 -TranslatedAddress 169.48.73.43 -Action snat -Protocol any -OriginalPort any -TranslatedPort any -Enabled -Description "OpenShift Network Public Outbound"
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeNat | New-NsxEdgeNatRule -Vnic 0 -OriginalAddress 192.168.133.0/24 -TranslatedAddress 10.208.242.131 -Action snat -Protocol any -OriginalPort any -TranslatedPort any -Enabled -Description "OpenShift Network Private Outbound"
Get-NsxEdge OpenShift-ESG | Get-NsxEdgeNat | New-NsxEdgeNatRule -Vnic 0 -OriginalAddress 10.208.242.133 -TranslatedAddress 192.168.133.8 -Action dnat -Protocol any -OriginalPort any -TranslatedPort any -Enabled -Description "SSH to bastion node"

# Configure Load-balancer pool members
get-nsxedge OpenShift-ESG | get-nsxloadbalancer | Set-NsxLoadBalancer -Enabled
$poolMember1 = New-NsxLoadBalancerMemberSpec -name bootstrap-0 -IpAddress 192.168.133.9 -Port 6443
$poolMember2 = New-NsxLoadBalancerMemberSpec -name control-plane-0 -IpAddress 192.168.133.10 -Port 6443
$poolMember3 = New-NsxLoadBalancerMemberSpec -name control-plane-1 -IpAddress 192.168.133.11 -Port 6443
$poolMember4 = New-NsxLoadBalancerMemberSpec -name control-plane-2 -IpAddress 192.168.133.12 -Port 6443
$poolMember5 = New-NsxLoadBalancerMemberSpec -name bootstrap-0 -IpAddress 192.168.133.9 -Port 22623
$poolMember6 = New-NsxLoadBalancerMemberSpec -name control-plane-0 -IpAddress 192.168.133.10 -Port 22623
$poolMember7 = New-NsxLoadBalancerMemberSpec -name control-plane-1 -IpAddress 192.168.133.11 -Port 22623
$poolMember8 = New-NsxLoadBalancerMemberSpec -name control-plane-2 -IpAddress 192.168.133.12 -Port 22623
$poolMember9 = New-NsxLoadBalancerMemberSpec -name compute-0 -IpAddress 192.168.133.13 -Port 80
$poolMember10 = New-NsxLoadBalancerMemberSpec -name compute-1 -IpAddress 192.168.133.14 -Port 80
$poolMember11 = New-NsxLoadBalancerMemberSpec -name compute-2 -IpAddress 192.168.133.15 -Port 80
$poolMember12 = New-NsxLoadBalancerMemberSpec -name compute-0 -IpAddress 192.168.133.13 -Port 443
$poolMember13 = New-NsxLoadBalancerMemberSpec -name compute-1 -IpAddress 192.168.133.14 -Port 443
$poolMember14 = New-NsxLoadBalancerMemberSpec -name compute-2 -IpAddress 192.168.133.15 -Port 443

# Configure Load-balancer pools
$monitor = Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | Get-NsxLoadBalancerMonitor default_tcp_monitor
$pool1 = Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | New-NsxLoadBalancerPool -name api-pool-6443 -Description "OpenShift API TCP 6443" -Transparent:$false -Algorithm Round-Robin -Monitor $monitor -Memberspec $poolMember1,$poolMember2,$poolMember3,$poolMember4
$pool2 = Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | New-NsxLoadBalancerPool -name api-pool-22623 -Description "OpenShift API TCP 22623" -Transparent:$false -Algorithm Round-Robin -Monitor $monitor -Memberspec $poolMember5,$poolMember6,$poolMember7,$poolMember8
$pool3 = Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | New-NsxLoadBalancerPool -name app-pool-80 -Description "OpenShift Application HTTP" -Transparent:$false -Algorithm Round-Robin -Monitor $monitor -Memberspec $poolMember9,$poolMember10,$poolMember11
$pool4 = Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | New-NsxLoadBalancerPool -name app-pool-443 -Description "OpenShift Application HTTPS" -Transparent:$false -Algorithm Round-Robin -Monitor $monitor -Memberspec $poolMember12,$poolMember13,$poolMember14

# Configure Load-balancer application profile
$appProfile = Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | New-NsxLoadBalancerApplicationProfile -Name TCP-Source-Profile -Type TCP -PersistenceMethod sourceip

# Configure Load-balancer VIPs
Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | Add-NsxLoadBalancerVip -name api-6443-lb -Description "API / API-INT" -ipaddress 10.208.242.132 -Protocol tcp -Port 6443 -ApplicationProfile $appProfile -DefaultPool $pool1 -AccelerationEnabled
Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | Add-NsxLoadBalancerVip -name api-22623-lb -Description "API / API-INT" -ipaddress 10.208.242.132 -Protocol tcp -Port 22623 -ApplicationProfile $appProfile -DefaultPool $pool2 -AccelerationEnabled
Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | Add-NsxLoadBalancerVip -name app-80-lb -Description "Application HTTP" -ipaddress 10.208.242.131 -Protocol tcp -Port 80 -ApplicationProfile $appProfile -DefaultPool $pool3 -AccelerationEnabled
Get-NsxEdge OpenShift-ESG | Get-NsxLoadBalancer | Add-NsxLoadBalancerVip -name app-443-lb -Description "Application HTTPS" -ipaddress 10.208.242.131 -Protocol tcp -Port 443 -ApplicationProfile $appProfile -DefaultPool $pool4 -AccelerationEnabled

# Create DHCP pool
$xmlPayload = "
  <dhcp>
    <enabled>true</enabled>
    <ipPools>
      <ipPool>
        <ipRange>192.168.133.50-192.168.133.100</ipRange>
        <defaultGateway>192.168.133.1</defaultGateway>
        <subnetMask>255.255.255.0</subnetMask>
        <leaseTime>86400</leaseTime>
        <autoConfigureDNS>false</autoConfigureDNS>
        <primaryNameServer>10.187.214.66</primaryNameServer>
      </ipPool>
    </ipPools>
    <logging><enable>true</enable>
    <logLevel>info</logLevel></logging>
  </dhcp>"

$edgeID = (Get-NsxEdge -Name "OpenShift-ESG").Id
$uri = "/api/4.0/edges/$($edgeID)/dhcp/config"
$null = invoke-nsxwebrequest -method "put" `
      -uri $uri -body $xmlPayload -connection $nsxConnection

# Disconnect
Disconnect-NsxServer