Install ArgoCD for delivery to a WDS
This document tells you how to install ArgoCD in the KubeFlex hosting cluster and configure ArgoCD to deliver applications to a WDS. The commands shown here assume that you access the KubeFlex hosting cluster via a kubeconfig context named âkind-kubeflexâ and that you access the WDS via a kubeconfig context named âwds1â; adapt as appropriate to your particular circumstances.
Install ArgoCD on kind-kubeflex:
kubectl --context kind-kubeflex create namespace argocd
kubectl --context kind-kubeflex apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yamlInstall CLI:
on MacOS:
brew install argocdon Linux:
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64Check the ArgoCD releases page for the obtaining the latest stable release for other architectures and operating systems.
Configure Argo to work with the ingress installed in the hosting cluster:
kubectl --context kind-kubeflex apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-server-ingress
namespace: argocd
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
ingressClassName: nginx
rules:
- host: argocd.localtest.me
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argocd-server
port:
name: https
EOFOpen a browser to ArgoCD console:
open https://argocd.localtest.me:9443Note: if you are working on a VM via SSH, just take the IP of the VM (VM_IP)
and add the line <VM_IP> argocd.localtest.me to your â/etc/hostsâ file, replacing
<VM_IP> with the actual IP of your desktop.
Get the password for Argo with:
kubectl config use-context kind-kubeflex
argocd admin initial-password -n argocdLogin into the ArgoCD console with admin and the password just retrieved. Type
the following on a shell terminal in your desktop (or just enter the address
<https://argocd.localtest.me:9443Â > on your browser):
open https://argocd.localtest.me:9443Also, login with the argocd CLI with the same credentials.
argocd login --insecure argocd.localtest.me:9443Add the wds1 space as cluster to ArgoCD:
CONTEXT=wds1
kubectl config view --minify --context=${CONTEXT} --flatten > /tmp/${CONTEXT}.kubeconfig
kubectl config --kubeconfig=/tmp/${CONTEXT}.kubeconfig set-cluster ${CONTEXT}-cluster --server=https://${CONTEXT}.${CONTEXT}-system 2>/dev/null
kubectl config use-context kind-kubeflex
ARGO_SERVER_POD=$(kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o 'jsonpath={.items[0].metadata.name}')
kubectl cp /tmp/${CONTEXT}.kubeconfig -n argocd ${ARGO_SERVER_POD}:/tmp
PASSWORD=$(argocd admin initial-password -n argocd | cut -d " " -f 1)
kubectl exec -it -n argocd $ARGO_SERVER_POD -- argocd login argocd-server.argocd --username admin --password $PASSWORD --insecure
kubectl exec -it -n argocd $ARGO_SERVER_POD -- argocd cluster add ${CONTEXT} --kubeconfig /tmp/${CONTEXT}.kubeconfig -yConfigure Argo to label resources with the âargocd.argoproj.io/instanceâ label:
kubectl --context kind-kubeflex patch cm -n argocd argocd-cm -p '{"data": {"application.instanceLabelKey": "argocd.argoproj.io/instance"}}'