-
Notifications
You must be signed in to change notification settings - Fork 5.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: make argocd installation manifests Istio compatible #2784 #3893
Conversation
…stio compatibility
Please note that Istio is about to switch to use the labels recommended by kubernetes. |
Codecov Report
@@ Coverage Diff @@
## master #3893 +/- ##
=======================================
Coverage 42.44% 42.44%
=======================================
Files 120 120
Lines 17567 17567
=======================================
Hits 7456 7456
Misses 9161 9161
Partials 950 950 Continue to review full report at Codecov.
|
Hmm... seems I got kustomize3... I will downgrade to 2 and will commit the fixes required. |
- name: http | ||
- name: tcp-argocdserver | ||
protocol: TCP | ||
port: 80 | ||
targetPort: 8080 | ||
- name: https | ||
- name: tcp-argocdservertls | ||
protocol: TCP | ||
port: 443 | ||
targetPort: 8080 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please note the ideally we would remove port 80 and keep only 443. In that case we could use https as protocol (istio does not support multiple protocols for a single service ports and as such we have to go down to TCP which works fine with two ports but we will lack http level information in Istio telemetry).
I did not want to put that into the PR as that would be probably too big change... or?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can't remove port 80 from this service, because many people actually run ArgoCD using HTTP mode and doing TLS termination elsewhere.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that is my plan as well (doing TLS termination at the Istio gateway level) but to be honest, I believe we should have one way of doing it as default (like keep 443 as that is a simple, "secure" setup) and document all the other possibilities (like how to do TLS termination elsewhere).
I have Istio config for both (Istio passthrough with TLS termination at argocd-server and Istio TLS termination with Istio mTLS and argocd-server using http) and planning to send a PR to your Ingress docu page.
# update label patches with current version | ||
for onedir in base/application-controller/overlays base/dex/overlays base/repo-server/overlays base/redis/overlays base/server/overlays ha/base/redis-ha/overlays; do | ||
cd ${SRCROOT}/manifests/${onedir} | ||
for onetemplate in `ls -1 *.tmpl`;do | ||
sed "s/ARGOCD_VERSION_TO_BE_REPLACED/${ARGOCD_VERSION_LABEL}/g" ${onetemplate} > ${onetemplate%.*}.yaml | ||
done | ||
done | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As the version is a variable and kustomize does not support such external variables (more info on this here) I had to introduce "simple templating" to properly set the version labels on deployments with kustomize
@jannfis would you need any more information to get this reviewed/merged? |
@Cajga Awesome work! I was first under the impression that this change would be somewhat intrusive to the manifests, but I think the pros outweigh the cons. I think that especially the version tag is very useful, also for troubleshooting ("Does someone use old versions of manifests with a newer version of the application"). @alexmt @jessesuen are there any dependencies on service names that I don't know of? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Waiting for others to raise their hands, if necessary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just noticed that changing the service names would be a breaking change for many that refer to service names in their ingress.
Maybe it would make sense to provide a new set of services compatible with Istio instead of modifying the existing ones?
We do not change the service names but we do the name of the service ports. I think you were referring to that and yes, seems you are right, this would break the normal ingress config if it follows the examples from the website. So, should we have new install files compatible with istio? If yes, which way would you prefer:
|
Hello everyone :) @Cajga I am currently struggling to expose ArgoCD UI with Istio Gateway/VirtualService and I would like to know if this PR is still ongoing or otherwise, where can I find intel about the good argocd-server options (deployment options + service config) and the corresponding Istio manifests. |
Queued for discussion at the contributor meeting |
I'm also in support of this PR as we use Istio for ingress and would like a native integration with ArgoCD. Thanks! |
This PR relates to this issue #2784 please can you merge it? |
Would be superb to get this merged OR create list of steps required to get this merged. Istio requires the application protocol be specified in the It'd be a straightforward change for ArgoCD to name the ports as eg.
https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/ |
You could set |
Service name does not need to be changed, only the port name is. Probably setting the appProtocol would work too, however, it might perhaps break on a non-istio setup? Currently it takes a lot of trial and error to get Istio mTLS working with ArgoCD due to the missing protocol definitions in argocd manifests (unless one finds eg this Github issue which defines the correct values). Especially the argocd-repo-server Also the argocd-server Full set of required changes is here: #2784 (comment) EDIT: Also the dex service port needs to be renamed from http to either https or tcp: #6183 (comment) |
Hi All, sorry but we are not using ArgoCD nor Istio anymore. I am afraid someone will have to take this PR over as I have to focus on projects that we use. |
This is an issue for us. I manually renamed the port, but this means that upgrades to the chart will break SSO. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The author of this PR is no longer working on it, so I'm going to close it but I strongly encourage someone else to pick it up and get it over the finish line.
Checklist:
I've signed the CLA but apart from making some simple tests, did not run the tests locally.
This PR makes argocd installation manifests compatible with Istio. It implements this request: #2784
In case this is accepted I will make a PR to have 2 examples with Istio ingress: