Skip to content

Commit

Permalink
Improve multiuser support
Browse files Browse the repository at this point in the history
  • Loading branch information
fjammes committed Jul 31, 2024
1 parent 8940144 commit e87bb3d
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 43 deletions.
46 changes: 32 additions & 14 deletions resources/install-argocd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ set -euxo pipefail
ARGO_OPERATOR_VERSION="v0.10.0"

# Get lates release version with below command:
# ARGO_VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')
ARGO_VERSION="v2.11.2"
# argocd_version=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')
argocd_version="v2.11.2"
GITHUB_URL="https://raw.githubusercontent.com/argoproj-labs/argocd-operator/$ARGO_OPERATOR_VERSION"

OPERATOR_NAMESPACE="operators"

argocd_bin="/usr/local/bin/argocd"

timeout=240
timeout_sec="${timeout}s"

Expand Down Expand Up @@ -48,7 +50,9 @@ wait_for_exist() {
echo "Install ArgoCD Operator $ARGO_OPERATOR_VERSION"
# Based on https://argocd-operator.readthedocs.io/en/latest/install/olm/#operator-install

cat > /tmp/subscription.yaml <<SUBSCRIPTION
tmp_dir=$(mktemp -d --suffix "-ktbx-argocd")

cat > "$tmp_dir"/subscription.yaml <<SUBSCRIPTION
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
Expand All @@ -64,7 +68,7 @@ spec:
source: operatorhubio-catalog
sourceNamespace: olm
SUBSCRIPTION
kubectl apply -f "/tmp/subscription.yaml"
kubectl apply -f ""$tmp_dir"/subscription.yaml"

wait_for_exist "$OPERATOR_NAMESPACE" installplans "$timeout"
kubectl wait installplans -n "$OPERATOR_NAMESPACE" --for=condition=Installed -l "operators.coreos.com/argocd-operator.operators=" --timeout="$timeout_sec"
Expand All @@ -74,34 +78,48 @@ echo "Wait for ArgoCD Operator to be ready"
kubectl rollout status deployment/argocd-operator-controller-manager --timeout="$timeout_sec" -n "$OPERATOR_NAMESPACE"

echo "Create ArgoCD namespace"
cat > /tmp/argocd-namespace.yaml <<ARGOCD_NAMESPACE
cat > "$tmp_dir"/argocd-namespace.yaml <<ARGOCD_NAMESPACE
apiVersion: v1
kind: Namespace
metadata:
name: argocd
ARGOCD_NAMESPACE
kubectl apply -f /tmp/argocd-namespace.yaml
kubectl apply -f "$tmp_dir"/argocd-namespace.yaml


echo "Install ArgoCD"
cat > /tmp/argocd.yaml <<ARGOCD
cat > "$tmp_dir"/argocd.yaml <<EOF
apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: argocd
namespace: argocd
spec:
version: $ARGO_VERSION
ARGOCD
kubectl apply -f /tmp/argocd.yaml
version: $argocd_version
EOF
kubectl apply -f "$tmp_dir"/argocd.yaml

echo "Install ArgoCD CLI $argocd_version"

# If argocd exists, compare current version to desired one
if [ -e $argocd_bin ]; then
current_version=$(argocd version --client --short | awk '{print $2}')
else
current_version=""
fi

if [[ $current_version =~ "$argocd_version" ]]; then
echo "WARN: argocd $argocd_version is already installed"
else
curl -sSL -o "$tmp_dir"/argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/download/$argocd_version/argocd-linux-amd64
sudo install -m 555 "$tmp_dir"/argocd-linux-amd64 "$argocd_bin"
fi

echo "Install ArgoCD CLI $ARGO_VERSION"
curl -sSL -o /tmp/argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/download/$ARGO_VERSION/argocd-linux-amd64
sudo install -m 555 /tmp/argocd-linux-amd64 /usr/local/bin/argocd
rm /tmp/argocd-linux-amd64

wait_for_exist argocd statefulset.apps "$timeout"
for obj in statefulset.apps/argocd-application-controller deployment.apps/argocd-redis deployment.apps/argocd-repo-server deployment.apps/argocd-server; do
echo "Wait for $obj to be ready"
kubectl rollout status $obj --timeout="$timeout_sec" -n argocd
done

rm -r "$tmp_dir"
25 changes: 15 additions & 10 deletions resources/install-argoworkflows.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,20 @@ echo "Install Argo client $ARGO_WORKFLOWS_VERSION"

# If argo client exists, compare current version to desired one: kind version | awk '{print $2}'
if [ -e "$argo_bin" ]; then
current_argo_version="$(argo version --short | awk '{print $2}')"
if [ "$current_argo_version" == "$ARGO_WORKFLOWS_VERSION" ]; then
echo "WARN: argo client $ARGO_WORKFLOWS_VERSION is already installed"
exit 0
fi
current_version="$(argo version --short | awk '{print $2}')"
else
current_version=""
fi

echo "Install Argo-workflow CLI $ARGO_WORKFLOWS_VERSION"
curl -sSL -o /tmp/argo-linux-amd64.gz https://github.com/argoproj/argo-workflows/releases/download/$ARGO_WORKFLOWS_VERSION/argo-linux-amd64.gz
gunzip /tmp/argo-linux-amd64.gz
sudo install -m 555 /tmp/argo-linux-amd64 /usr/local/bin/argo
rm /tmp/argo-linux-amd64
if [ "$current_version" == "$ARGO_WORKFLOWS_VERSION" ]; then
echo "WARN: argo client $ARGO_WORKFLOWS_VERSION is already installed"
else
tmp_dir=$(mktemp -d --suffix "-ktbx-argowf")
echo "Install Argo-workflow CLI $ARGO_WORKFLOWS_VERSION"
curl -sSL -o "$tmp_dir"/argo-linux-amd64.gz https://github.com/argoproj/argo-workflows/releases/download/$ARGO_WORKFLOWS_VERSION/argo-linux-amd64.gz
gunzip "$tmp_dir"/argo-linux-amd64.gz
sudo install -m 555 "$tmp_dir"/argo-linux-amd64 /usr/local/bin/argo
fi


rm -r "$tmp_dir"
34 changes: 18 additions & 16 deletions resources/install-kind.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,28 @@ set -euxo pipefail
DIR=$(cd "$(dirname "$0")"; pwd -P)

KIND_BIN="/usr/local/bin/kind"
KIND_VERSION={{ .KindVersion }}
KIND_VERSION="{{ .KindVersion }}"

# If kind exists, compare current version to desired one
if [ -e $KIND_BIN ]; then
CURRENT_KIND_VERSION="v$(kind version -q)"
if [ "$CURRENT_KIND_VERSION" != "$KIND_VERSION" ]; then
sudo rm "$KIND_BIN"
fi
if [ -e $KIND_BIN ]; then
current_version="v$(kind version -q)"
else
current_version=""
fi

OS="$(uname -s)"
test "$OS" = "Linux" && OS="linux"
if [ "$current_version" == "$KIND_VERSION" ]; then
echo "WARN: kind $KIND_VERSION is already installed"
else
OS="$(uname -s)"
test "$OS" = "Linux" && OS="linux"

ARCH="$(uname -m)"
test "$ARCH" = "aarch64" && ARCH="arm64"
test "$ARCH" = "x86_64" && ARCH="amd64"
ARCH="$(uname -m)"
test "$ARCH" = "aarch64" && ARCH="arm64"
test "$ARCH" = "x86_64" && ARCH="amd64"


if [ ! -e $KIND_BIN ]; then
curl -Lo /tmp/kind https://github.com/kubernetes-sigs/kind/releases/download/"$KIND_VERSION"/kind-$OS-$ARCH
chmod +x /tmp/kind
sudo mv /tmp/kind "$KIND_BIN"
tmp_dir=$(mktemp -d --suffix "-ktbx-kind")
curl -Lo "$tmp_dir/kind" https://github.com/kubernetes-sigs/kind/releases/download/"$KIND_VERSION"/kind-$OS-$ARCH
sudo install -m 555 "$tmp_dir/kind" "$KIND_BIN"
fi

rm -r "$tmp_dir"
9 changes: 6 additions & 3 deletions resources/install-olm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ timeout="60"

echo "Install operator-lifecycle-manager $olm_version"

curl -L https://github.com/operator-framework/operator-lifecycle-manager/releases/download/$olm_version/install.sh -o /tmp/install.sh
chmod +x /tmp/install.sh
/tmp/install.sh "$olm_version"
tmp_dir=$(mktemp -d --suffix "-ktbx-olm")
curl -L https://github.com/operator-framework/operator-lifecycle-manager/releases/download/$olm_version/install.sh -o "$tmp_dir/install.sh"
chmod +x "$tmp_dir/install.sh"
"$tmp_dir/install.sh" "$olm_version"

echo "Wait for operator-lifecycle-manager to be ready"
kubectl rollout status -n olm deployment/olm-operator --timeout="$timeout_long_sec"
Expand All @@ -33,3 +34,5 @@ do
counter=$((counter+1))
timeout=$((timeout+60))
done

rm -r "$tmp_dir"

0 comments on commit e87bb3d

Please sign in to comment.