Newer
Older
KubernetesApplication / ArgoCD / sync.sh
# !/bin/bash

git clone https://github.com/argoproj/argo-cd.git

if [[ -d  "manifests" ]]; then
  rm -rf manifests
fi

mkdir -p manifests/crds 
mkdir -p manifests/base
mkdir -p manifests/cluster-rbac

cp -r argo-cd/manifests/crds manifests/ 
cp -r argo-cd/manifests/base manifests/ 
cp -r argo-cd/manifests/cluster-rbac manifests/


cat << 'EOF' > manifests/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.org/mergeale-ingress-type: "minion"
  name: argocd-server
  namespace: argocd
  labels:
    app: argocd-server
spec:
  rules:
  - host: argocd.jerxie.com
    http:
      paths:
      - backend:
          service:
            name: argocd-server
            port:
              number: 80
        path:  /
        pathType: Prefix
EOF

# Enable OIDC Authentication
cat << 'EOL' >> manifests/base/config/argocd-cm.yaml

data:
  url: https://argocd.jerxie.com
  admin.enabled: "false"
  dex.config: |
    connectors:
    - config:
        issuer: https://accounts.google.com
        clientID: 223235257564-um2d8iqleksg4aoap7s7apqjkkdsqos9.apps.googleusercontent.com
        clientSecret: aYc2j1lYUUZXkBFFUndnleZI
        adminEmail: axieyangb@gmail.com
      type: oidc
      id: google
      name: Google
EOL

# Restrict RBAC
cat << 'EOL' >> manifests/base/config/argocd-rbac-cm.yaml

data:
  policy.csv: |
    g, axieyangb@gmail.com, role:admin
  scopes: '[email]'
  policy.default: role:''
EOL

cat << 'EOF' > manifests/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: argocd
resources:
- ./base
- ./cluster-rbac
- ./crds
- ingress.yaml
EOF

rm -rf argo-cd


#Patch arguments for insecure 
cat << 'EOL' >> manifests/base/server/kustomization.yaml

patches:
- patch: |-
    # - op: add
    #   path: /spec/template/spec/containers/0/command/-
    #   value: --rootpath=argocd
    - op: add
      path: /spec/template/spec/containers/0/command/-
      value: --insecure
  target:
    kind: Deployment
EOL


kubectl apply -k manifests/
PASSWORD=$(kubectl get secrets  argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d)
echo "Password is: ${PASSWORD}"