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.
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.
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.
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).
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.
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.
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.
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 global | vNIC | IP do gateway |
---|---|---|
Gateway padrão | Público | 169.48.73.41 |
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
Nome | Tipo | Persistência |
---|---|---|
Perfil de origem do TCP | TCP | IP de origem |
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
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 | 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