argoproj / argo-cd

Declarative Continuous Deployment for Kubernetes
https://argo-cd.readthedocs.io
Apache License 2.0
18.04k stars 5.5k forks source link

Expose `externalTrafficPolicy: Local` and `externalTrafficPolicy: Cluster` in view=network #19896

Open jsoref opened 2 months ago

jsoref commented 2 months ago

Summary

visibly show the distinction between externalTrafficPolicy: Local and externalTrafficPolicy: Cluster in view=network

Motivation

We've run into some problems which we believe may be related to externalTrafficPolicy: Cluster. I'll be applying externalTrafficPolicy: Local to some services in a system. It'd be nice to have the network view visibly show the distinction.

https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip https://oteemo.com/ingress-102-kubernetes-ingress-implementation-options/

externalTrafficPolicy: Cluster

image

externalTrafficPolicy: Local

image

Proposal

Add a thing to the graphic between cloud and services that shows if traffic is going to any node in the cluster (externalTrafficPolicy: Cluster) or any node with a pod matched by the service (externalTrafficPolicy: Local)

andrii-korotkov-verkada commented 2 weeks ago

Can you share the example application network view (from existing UI) and reference pieces which should be updated?

jsoref commented 2 weeks ago

https://cd.apps.argoproj.io/applications/argocd/argo-cd?view=network&resource=

image
flowchart LR
    A["🌩 Cloud"] -->B("104.197.6.180")
    Z --> Y{"📨Ing argo-cd-ui"}
    B --> Z{"🔀🖥️🖥️🖥️🖥️<br>Any Node"}
    Y --> C{"💁svc argo-cd-server"}
    C --> D["🫛argocd-server-7ff5c58b5d-hhc4l"]
    C --> E["🫛argocd-server-7ff5c58b5d-lhrlw"]
    W --> X{"📨Ing cert-manager"}
    B --> W{"🖥️🖥️nodes<br>running cert-manager"}
    X --> V{"💁svc cert-manager"}
    V --> U1{"🫛cert-manager-xxxxxx-abcde"}
    V --> U2{"🫛cert-manager-xxxxxx-abc12"}