Expondo Aplicativos Contêinerizados

Faça o seguinte para expor uma implantação de aplicativo para que os aplicativos de nó de trabalho possam ser acessados de fora do Compute Cloud@Customer:

  • Crie um balanceador de carga externo.

  • Atualize as regras de entrada e saída conforme necessário para dar suporte aos requisitos de porta de seus aplicativos em contêineres. 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 - Exige que você também forneça anotações flex-min e flex-max.

Talvez seja necessário editar o arquivo de implantação do aplicativo para modificar o valor da forma do balanceador de carga. Consulte Especificando Formas alternativas de balanceador de carga e Especificando Formas flexíveis de 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 seu 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 Compute Cloud@Customer. Na Console do Compute Cloud@Customer, o endereço IP de entrada LoadBalancer é mostrado no 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