Expondo Aplicativos Contêinerizados

Em um dispositivo Roving Edge, você pode expor uma implantação de aplicativo para que os aplicativos do nó de trabalho possam ser acessados de fora do dispositivo.

Faça o seguinte para expor aplicativos de nó de trabalho fora do dispositivo:

  • Crie um balanceador de carga externo.

  • Atualize as regras de entrada e saída conforme necessário para dar suporte aos requisitos de porta dos aplicativos conteinerizados. Por exemplo, se algum aplicativo usar a porta TCP 3000, será necessário adicionar uma regra de entrada com a porta 3000.

Criar um Balanceador de Carga Externo

Um balanceador de carga externo é um Serviço do tipo LoadBalancer. O serviço fornece balanceamento de carga para um aplicativo que tem várias instâncias em execução.

Se você usar as opções --service-lb-defined-tags ou --service-lb-flexible-tags para especificar tags a serem aplicadas a balanceadores de carga externos, certifique-se de que o grupo dinâmico aplicável inclua a política a seguir. Consulte Criar um Grupo Dinâmico de Clusters e Políticas.

allow dynamic-group dynamic-group-name to use tag-namespaces in compartment compartment-name

Certifique-se de que o parâmetro de forma do balanceador de carga tenha um dos seguintes valores:

  • 400Mbps
  • flexible – Requer que você também forneça anotações flex-min e flex-max.

Talvez seja necessário editar o arquivo de implantação de aplicativo para modificar o valor da forma do balanceador de carga. Consulte Especificando Formas Alternativas do Balanceador de Carga e Especificando Formas Flexíveis do Balanceador de Carga para obter mais informações e exemplos de como definir esses valores.

Para criar um balanceador de carga de serviço em um cluster privado (um cluster com uma sub-rede privada do balanceador de carga de trabalho), use a seguinte anotação no modelo de balanceador de carga externo:

service.beta.kubernetes.io/oci-load-balancer-internal: "true"

Use o seguinte comando para criar o balanceador de carga externo:

# kubectl create -f expose_lb

Veja a seguir o conteúdo do arquivo expose_lb:

apiVersion: v1
kind: Service
metadata:
  name: my-nginx-svc
  labels:
    app: nginx
  annotations:
    oci.oraclecloud.com/load-balancer-type: "lb"
    service.beta.kubernetes.io/oci-load-balancer-shape: "400Mbps"
spec:
  type: LoadBalancer
  ports:
   - port: 80
  selector:
    app: nginx

O comando a seguir mostra mais informações sobre esse balanceador de carga externo. O endereço IP de entrada LoadBalancer é o endereço IP usado para acessar aplicativos de nó de fora do Roving Edge. No Console do Dispositivo, o endereço IP de Entrada LoadBalancer é mostrado sob o cabeçalho "Endereço IP" na parte inferior da primeira coluna da página de detalhes do balanceador de carga, seguido pelo label "(Público)."

# kubectl describe svc my-nginx-svc
Name:                     my-nginx-svc
Namespace:                default
Labels:                   app=nginx
Annotations:              oci.oraclecloud.com/load-balancer-type: lb
                          service.beta.kubernetes.io/oci-load-balancer-shape: 400Mbps
Selector:                 app=nginx
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       IP_address
IPs:                      IP_address
LoadBalancer Ingress:     Load_Balancer_IP_address
Port:                     <unset> 80/TCP
TargetPort:               80/TCP
NodePort:                 <unset> 32145/TCP
Endpoints:                IP_address:port, IP_address+1:port, IP_address+2:port
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age    From                Message
  ----
  Normal  EnsuringLoadBalancer  7m48s  service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   6m40s  service-controller  Ensured load balancer

Para obter descrições de políticas de tráfego, consulte Preservando o IP de origem do cliente.

Use o seguinte comando para listar endereços IP e portas do balanceador de carga externo:

# kubectl get svc
NAME          TYPE          CLUSTER-IP  EXTERNAL-IP               PORT(S)       AGE
kubernetes    ClusterIP     IP_address  <none>                    443/TCP       6h17m
my-nginx-svc  LoadBalancer  IP_address
         Load_Balancer_IP_address  80:32145/TCP  5h5m

O Que Vem a Seguir:

Adicionando Armazenamento para Aplicativos Contêinerizados