Skip to main content

argocd

ben.wangzLess than 1 minute

argocd

prepare

  1. k8s is ready
  2. helm binary
    • MIRROR="files.m.daocloud.io/"
      VERSION=v3.13.3
      ARCH=$(uname -m)
      if [ "${ARCH}" = "x86_64" ]; then
          ARCH_IN_FILE_NAME=linux-amd64
      elif [ "${ARCH}" = "aarch64" ]; then
          ARCH_IN_FILE_NAME=linux-arm64
      else
          echo "NOT SUPPORT: ${ARCH}"
      fi
      FILE_NAME=helm-${VERSION}-${ARCH_IN_FILE_NAME}.tar.gz
      curl -sSLo ${FILE_NAME} "https://${MIRROR}get.helm.sh/${FILE_NAME}"
      tar zxf ${FILE_NAME}
      mkdir -p ${HOME}/bin
      mv -f ${ARCH_IN_FILE_NAME}/helm ${HOME}/bin
      rm -rf ./${FILE_NAME}
      rm -rf ./${ARCH_IN_FILE_NAME}
      chmod u+x ${HOME}/bin/helm
      
      
  3. argocd binary
    • MIRROR="files.m.daocloud.io/"
      VERSION=v2.9.3
      [ $(uname -m) = x86_64 ] && curl -sSLo argocd "https://${MIRROR}github.com/argoproj/argo-cd/releases/download/${VERSION}/argocd-linux-amd64"
      [ $(uname -m) = aarch64 ] && curl -sSLo argocd "https://${MIRROR}github.com/argoproj/argo-cd/releases/download/${VERSION}/argocd-linux-arm64"
      chmod u+x argocd
      mkdir -p ${HOME}/bin
      mv -f argocd ${HOME}/bin
      
      

install

  1. prepare values.yaml
    • global:
        revisionHistoryLimit: 3
        image:
          repository: m.daocloud.io/quay.io/argoproj/argocd
      crds:
        install: true
        keep: false
      dex:
        enabled: true
        image:
          repository: m.daocloud.io/ghcr.io/dexidp/dex
      server:
        service:
          type: NodePort
          nodePortHttp: 30080
          nodePortHttps: 30443
        extensions:
          enabled: false
      redis:
        enabled: true
        image:
          repository: m.daocloud.io/docker.io/library/redis
        exporter:
          enabled: false
        metrics:
          enabled: false
      redis-ha:
        enabled: false
      
      
  2. install argocd with helm
    • helm install argo-cd argo-cd \
          --namespace argocd \
          --create-namespace \
          --version 8.1.2 \
          --repo https://argoproj.github.io/argo-helm \
          --values values.yaml \
          --atomic
      
  3. get argocd initial password
    • kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo
      
  4. login with argocd cli
    • prepare login.sh
      • #! /bin/bash
        
        PASSWORD=$(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 --decode)
        FIRST_MASTER_IP=$(kubectl get nodes --selector=node-role.kubernetes.io/control-plane \
            -o jsonpath='{$.items[0].status.addresses[?(@.type=="InternalIP")].address}') \
            && argocd login --insecure --username admin $FIRST_MASTER_IP:30443 --password $PASSWORD
        
        
    • bash login.sh
      
  5. login with browser
    • open https://k8s-master:30443
    • username: admin
    • password: the password you get in step 5
  6. change admin password
    • optional for dev environment
    • argocd account update-password