Esposizione di applicazioni containerizzate

Per esporre una distribuzione delle applicazioni in modo che le applicazioni dei nodi di lavoro possano essere raggiunte dall'esterno di Compute Cloud@Customer, effettuare le operazioni riportate di seguito.

  • Creare un load balancer esterno.

  • Aggiornare le regole di entrata e uscita in base alle esigenze per supportare i requisiti delle porte delle applicazioni containerizzate. Ad esempio, se un'applicazione utilizza la porta TCP 3000, è necessario aggiungere una regola di entrata con la porta 3000.

Creare un load balancer esterno

Un load balancer esterno è un servizio di tipo LoadBalancer. Il servizio fornisce il bilanciamento del carico per un'applicazione con più istanze in esecuzione.

Se si utilizzano le opzioni --service-lb-defined-tags o --service-lb-flexible-tags per specificare le tag da applicare ai load balancer esterni, assicurarsi che il gruppo dinamico applicabile includa il criterio seguente. Vedere Creare un gruppo dinamico e criteri cluster.

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

Assicurarsi che il parametro della forma del load balancer abbia uno dei valori riportati di seguito.

  • 400Mbps
  • flexible: richiede di fornire anche annotazioni flex-min e flex-max.

Potrebbe essere necessario modificare il file di distribuzione dell'applicazione per modificare il valore della forma del load balancer. Per ulteriori informazioni ed esempi su come impostare questi valori, vedere Specifica delle forme alternative del load balancer e Specifica delle forme flessibili del load balancer.

Per creare un load balancer del servizio in un cluster privato (un cluster con una subnet del load balancer del worker privato), utilizzare l'annotazione seguente nel modello del load balancer esterno:

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

Utilizzare il comando riportato di seguito per creare il load balancer esterno.

# kubectl create -f expose_lb

Di seguito è riportato il contenuto del file 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

Il comando seguente mostra ulteriori informazioni su questo load balancer esterno. L'indirizzo IP in entrata LoadBalancer è l'indirizzo IP utilizzato per raggiungere le applicazioni nodo dall'esterno di Compute Cloud@Customer. Nella console di Compute Cloud@Customer, l'indirizzo IP di entrata LoadBalancer viene visualizzato sotto l'intestazione "Indirizzo IP" nella parte inferiore della prima colonna della pagina dei dettagli del load balancer, seguita dall'etichetta "(Pubblico)."

# 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

Per una descrizione dei criteri di traffico, vedere Conservazione dell'IP di origine client.

Utilizzare il comando riportato di seguito per elencare gli indirizzi IP e le porte per il load balancer esterno.

# 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

Operazioni successive:

Aggiunta di storage per le applicazioni containerizzate