Exposición de aplicaciones en contenedores

Realice lo siguiente para exponer un despliegue de aplicación de modo que se pueda acceder a las aplicaciones de nodo de trabajador desde fuera de Compute Cloud@Customer:

  • Crear un equilibrador de carga externo.

  • Actualice las reglas de entrada y salida según sea necesario para cumplir los requisitos de puerto de las aplicaciones en contenedores. Por ejemplo, si alguna aplicación utiliza el puerto TCP 3000, se debe agregar una regla de entrada con el puerto 3000.

Creación de un equilibrador de carga externo

Un equilibrador de carga externo es un servicio de tipo LoadBalancer. El servicio proporciona equilibrio de carga para una aplicación que tiene varias instancias en ejecución.

Si utiliza las opciones --service-lb-defined-tags o --service-lb-flexible-tags para especificar las etiquetas que se van a aplicar a los equilibradores de carga externos, asegúrese de que el grupo dinámico aplicable incluye la siguiente política. Consulte Creación de un grupo dinámico de clusters y políticas.

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

Asegúrese de que el parámetro de unidad del equilibrador de carga tiene uno de los siguientes valores:

  • 400Mbps
  • flexible: requiere que también proporcione anotaciones flex-min y flex-max.

Puede que necesite editar el archivo de despliegue de la aplicación para modificar el valor de unidad del equilibrador de carga. Consulte Specifying Alternative Load Balancer Shapes y Specifying Flexible Load Balancer Shapes para obtener más información y ejemplos de cómo definir estos valores.

Para crear un equilibrador de carga de servicio en un cluster privado (un cluster con una subred de equilibrador de carga de trabajador privado), utilice la siguiente anotación en la plantilla del equilibrador de carga externo:

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

Utilice el siguiente comando para crear el equilibrador de carga externo:

# kubectl create -f expose_lb

A continuación se muestra el contenido del archivo 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

El siguiente comando muestra más información sobre este equilibrador de carga externo. La dirección IP de entrada LoadBalancer es la dirección IP que se utiliza para acceder a las aplicaciones de nodo desde fuera de Compute Cloud@Customer. En la consola de Compute Cloud@Customer, la dirección IP de entrada LoadBalancer se muestra bajo la cabecera "IP Address" en la parte inferior de la primera columna de la página de detalles del equilibrador de carga, seguida de la etiqueta "(Public)."

# 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 obtener descripciones de las políticas de tráfico, consulte Preserving the client source IP.

Utilice el siguiente comando para mostrar las direcciones IP y los puertos del equilibrador 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

Siguiente paso:

Adición de almacenamiento para aplicaciones en contenedores