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çõesflex-min
eflex-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: