-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Hello,
AWS have recently released a feature for EKS where ArgoCD can run as an EKS "capability":
https://docs.aws.amazon.com/eks/latest/userguide/argocd.html
https://docs.aws.amazon.com/eks/latest/userguide/argocd-comparison.html
In this feature, ArgoCD is effectively running as part of the EKS control-plane. While you will see ArgoCD CRDs on the cluster, and can create Application(set) manifests and cluster secrets, you will not see any ArgoCD-related pods running on your cluster.
I have attempted to use the ArgoCD pull integration (basic model) with a spoke cluster using this form of ArgoCD. This does not work due to differences in how ArgoCD works here. The pull integration is functioning correctly on the hub, creating ManifestWorks as appropriate. The spoke cluster is correctly creating Application manifests from the AppliedManifestWork. However, the application does not deploy.
The cause is that the OCM ArgoCD pull integration is hard-coded to set spec.destination.server to https://kubernetes.default.svc. The use of Kubernetes https URLs is not supported by the EKS ArgoCD capability. There are two supported options:
- Set
spec.destination.serverto the ARN of the cluster. - Set
spec.desintation.nameto the name of a cluster registered with ArgoCD (which will itself be properly configured to use the ARN instead of the https URL).
It therefore seems that the pull integration could work here if we had the option to change the behavior of the spec.destination set on the ManifestWork the integration creates. I would suggest setting spec.destination.name to in-cluster. If we then create an appropriate cluster secret registering in-cluster as the spoke cluster's ARN, then this will allow application deployment.
This change should be allowed to operate simultaneously with the current behavior, so that the same hub cluster can manage non-EKS-capability clusters (which still want the https URL as the destination), as well as clusters migrated to the EKS version. I would therefore suggest that this behavior be controlled by an annotation on the Application(set) manifest on the hub.
Thanks in advance for considering this feature request.
Alex