argoproj / argo-cd

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

Add PORT expose in the argocd k8s cluster #19932

Open shvamabps opened 2 weeks ago

shvamabps commented 2 weeks ago

Summary

What change you think needs making.

Here when this

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

copied, it creates an entire environment for argocd. But it doesn't expose the respective PORT for the website with which one can manage the k8s cluster.

Motivation

Please give examples of your use case, e.g., when you would use this. It could help users not execute commands like

  1. kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
  2. kubectl port-forward svc/argocd-server -n argocd 8080:443

to run the web UI for the argocd.

Proposal

How do you think this should be implemented?

One can use the load balancer configurations for the Kubernetes deployments pre-configured in the command #1 in #Motivation section above. The ports mentioned in the above can be directly mentioned in the https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml file.

blakepettersson commented 1 week ago

In most real world settings you would configure an Ingress in front of Argo CD.

Is what you're proposing something intended for dev environments?

shvamabps commented 1 week ago

In most real world settings you would configure an Ingress in front of Argo CD.

Is what you're proposing something intended for dev environments?

So, in dev environments, if the patch and the ingress commands are executed, the terminal keeps on running and needs to consume it like that or can modify the entire YAML file by downloading it and even if one can modify the yaml file and deploy it, that is not convenient as there can be some changes in the product. So I was suggesting if the deployment of argo cd could be managed in a manner where one doesn't have to create any external ingress or patch to LB. Just one command and entire setup is up and running for dev or production. There can be customization in PORT on which the UI is deployed.