Argo CD can't delete an app if it cannot generate manifests. You need to either:
- Reinstate/fix your repo.
- Delete the app using
--cascade=false
and then manually deleting the resources.
See Diffing documentation for reasons resources can be OutOfSync, and ways to configure Argo CD to ignore fields when differences are expected.
Argo CD provides health for several standard Kubernetes types. The Ingress
and StatefulSet
types have known issues which might cause health check
to return Progressing
state instead of Healthy
.
-
Ingress
is considered healthy ifstatus.loadBalancer.ingress
list is non-empty, with at least one value forhostname
orIP
. Some ingress controllers (contour, traefik) don't updatestatus.loadBalancer.ingress
field which causesIngress
to stuck inProgressing
state forever. -
StatefulSet
is considered healthy if value ofstatus.updatedReplicas
field matches tospec.replicas
field. Due to Kubernetes bug kubernetes/kubernetes#68573 thestatus.updatedReplicas
is not populated. So unless you run Kubernetes version which include the fix kubernetes/kubernetes#67570StatefulSet
might stay inProgressing
state.
As workaround Argo CD allows providing health check customization which overrides default behavior.
By default the password is set to the name of the server pod, as per the getting started guide.
To change the password, edit the argocd-secret
secret and update the admin.password
field with a new bcrypt hash. You
can use a site like https://www.browserling.com/tools/bcrypt to generate a new hash. For example:
# bcrypt(Password1!)=$2a$10$hDj12Tw9xVmvybSahN1Y0.f9DZixxN8oybyA32Uy/eqWklFU4Mo8O
kubectl -n argocd patch secret argocd-secret \
-p "{\"data\": \
{\
\"admin.password\": \"$(echo -n '$2a$10$hDj12Tw9xVmvybSahN1Y0.f9DZixxN8oybyA32Uy/eqWklFU4Mo8O' | base64)\", \
\"admin.passwordMtime\": \"$(date +%FT%T%Z | base64)\" \
}}"
Another option is to delete both the admin.password
and admin.passwordMtime
keys and restart argocd-server. This will set the password back to the pod name as per the getting started guide.
Argo CD might fail to generate Helm chart manifests if the chart has dependencies located in external repositories. To solve the problem you need to make sure that requirements.yaml
uses only internally available Helm repositories. Even if the chart uses only dependencies from internal repos Helm might decide to refresh stable
repo. As workaround override
stable
repo URL in argocd-cm
config map:
data:
helm.repositories: |
- url: http://<internal-helm-repo-host>:8080
name: stable
I've configured cluster secret but it does not show up in CLI/UI, how do I fix it?
Check if cluster secret has argocd.argoproj.io/secret-type: cluster
label. If secret has the label but the cluster is still not visible then make sure it might be a
permission issue. Try to list clusters using admin
user (e.g. argocd login --username admin && argocd cluster list
).
Use the following steps to reconstruct configured cluster config and connect to your cluster manually using kubectl:
kubectl exec -it <argocd-pod-name> bash # ssh into any argocd server pod
argocd-util kubeconfig https://<cluster-url> /tmp/config --namespace argocd # generate your cluster config
KUBECONFIG=/tmp/config kubectl get pods # test connection manually
Now you can manually verify that cluster is accessible from the Argo CD pod.
To terminate the sync, click on the "synchronisation" then "terminate":