Skip to content
Snippets Groups Projects
Forked from Platform / Development / swh-deposit
Source project has a limited visibility.
Name Last commit Last update
applications
dashboard
.gitignore
README.md

ArgoCD Cli installation

For test purpose, you can use minikube. Otherwise, use a rancher cluster.

On the operator machine, one must have the argocd tool installed:

curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd

ArgoCD installation

On the cluster:

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

minikube

Access Argo CD API Server

By default, the Argo CD API server is not exposed with an external IP. To access the API server, expose the Argo CD API server through the service type Load Balancer:

kubectl patch svc argocd-server -n $NS -p '{"spec": {"type": "LoadBalancer"}}'

port-forward

kubectl port-forward services/argocd-server 8080:443 -n $NS

ingress controller

You will also need to enable the ingress controller:

$ minikube addons enable ingress

Standard

We'll use an ingress to access the dashboard:

kubectl apply -n $NS -f dashboard/ingress.yaml

Use one of the dns records (associated to the ip below) to access your dashboard:

kubectl get ingress -A
NAMESPACE   NAME            CLASS    HOSTS   ADDRESS                       PORTS   AGE
argocd      argocd-server   <none>   *       $ip_0,$ip_2,...,$ip_n   80      29m

Store ArgoCD admin dashboard

Copy the password in your clipboard (and try and connect to the dashboard:

kubectl -n $NS get secret argocd-initial-admin-secret \
  -o jsonpath="{.data.password}" | base64 -d | xsel --input --clipboard

Change ArgocCD admin login password

# examples:
# - ARGOCD_SERVER=localhost:8080
# - ARGOCD_SERVER=argo-worker01.internal.admin.swh.network:443
argocd login $ARGOCD_SERVER
argocd account update-password

Note: The password must be a string of characters between [8-32] characters.

Custom configuration

We need to retrieve the cluster configurations we want argocd to discuss with out of the rancher ui [1].

For each cluster, we want to create the following yaml file:

apiVersion: v1
kind: Secret
metadata:
  # must match $NS at the top of the readme
  namespace: argocd
  name: $environment-cluster-config
  labels:
    argocd.argoproj.io/secret-type: cluster
type: Opaque
stringData:
  name: $CLUSTER_NAME
  server: $CLUSER_URL
  config: |
    {
      "bearerToken": "$CLUSTER_TOKEN",
      "tlsClientConfig": {
        "insecure": false,
        "caData": "$CLUSTER_CERTIFICATE"
      }
    }

where the $variable are extracted out of the retrieve yaml configuration:

Custom cluster-config.yaml file to add to a new cluster:

kubectl apply -f cluster-config.secret.yaml

[1] https://rancher.euwest.azure.internal.softwareheritage.org/ ("download kubeconfig")

Create staging argocd app

kubectl apply -f applications/staging/graphql.yaml
kubectl apply -f applications/staging/elastic-workers.yaml