Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add attachedcluater e2e test #594

Merged
merged 10 commits into from
Feb 2, 2024
33 changes: 33 additions & 0 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: E2E
on:
pull_request:
jobs:
e2e-test:
runs-on: ubuntu-22.04
name: E2E Test
timeout-minutes: 40
steps:
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: 1.20.x
- name: Checkout code
uses: actions/checkout@v4
- name: Build Clusters
uses: helm/[email protected]
with:
version: v0.18.0
install_only: true
- name: Set Up Clusters
run: |
hack/local-dev-setup.sh
- name: Install Helm
uses: azure/setup-helm@v3
with:
version: v3.10.1
- name: Init kurator cluster
run: |
hack/e2e-test/install.sh
- name: fleet-clusters e2e test
run: |
hack/e2e-test/fleet-clusters/e2e-run.sh
76 changes: 76 additions & 0 deletions hack/e2e-test/fleet-clusters/attachedcluster.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

KUBECONFIG_PATH=${KUBECONFIG_PATH:-"${HOME}/.kube"}
MAIN_KUBECONFIG=${MAIN_KUBECONFIG:-"${KUBECONFIG_PATH}/kurator-host.config"}
export KUBECONFIG=${MAIN_KUBECONFIG}

kubectl create secret generic kurator-member1 --from-file=kurator-member1.config=${KUBECONFIG_PATH}/kurator-member1.config
kubectl create secret generic kurator-member2 --from-file=kurator-member2.config=${KUBECONFIG_PATH}/kurator-member2.config

cat <<EOF | kubectl apply -f -
apiVersion: cluster.kurator.dev/v1alpha1
kind: AttachedCluster
metadata:
name: kurator-member1
namespace: default
spec:
kubeconfig:
name: kurator-member1
key: kurator-member1.config
EOF

ok=false
sleep 10
kubectl get attachedclusters.cluster.kurator.dev kurator-member1 -o yaml | grep 'ready: true' && ok=true || ok=false
if [ ${ok} = false ]; then
echo "create attachedCluster member1 resources failed"
exit 1
fi

cat <<EOF | kubectl apply -f -
apiVersion: cluster.kurator.dev/v1alpha1
kind: AttachedCluster
metadata:
name: kurator-member2
namespace: default
spec:
kubeconfig:
name: kurator-member2
key: kurator-member2.config
EOF

ok=false
sleep 5
kubectl get attachedclusters.cluster.kurator.dev kurator-member1 -o yaml | grep 'ready: true' && ok=true || ok=false
if [ ${ok} = false ]; then
echo "create attachedCluster member2 resources failed"
exit 1
fi

cat <<EOF | kubectl apply -f -
apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
name: quickstart
namespace: default
spec:
clusters:
# add your AttachedCluster here
- name: kurator-member1
kind: AttachedCluster
- name: kurator-member2
kind: AttachedCluster
EOF

sleep 5

ok=false
kubectl get fleet | grep 'Ready' && ok=true || ok=false
if [ ${ok} = false ]; then
echo "create Fleet resources failed"
exit 1
fi
8 changes: 8 additions & 0 deletions hack/e2e-test/fleet-clusters/e2e-run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/usr/bin/env bash

set -o errexit

REPO_ROOT=$(git rev-parse --show-toplevel)
DIR="$(cd "$(dirname "$0")" && pwd)"

"$DIR"/attachedcluster.sh
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can use go code to write it

42 changes: 42 additions & 0 deletions hack/e2e-test/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

# This script installs Kurator cluster-operater and fleet-manager.

KUBECONFIG_PATH=${KUBECONFIG_PATH:-"${HOME}/.kube"}
MAIN_KUBECONFIG=${MAIN_KUBECONFIG:-"${KUBECONFIG_PATH}/kurator-host.config"}
export KUBECONFIG=${MAIN_KUBECONFIG}
VERSION=${VERSION:-"0.95.27"}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please change to using the commit id


sleep 5s

VERSION=${VERSION} make docker
kind load docker-image ghcr.io/kurator-dev/cluster-operator:${VERSION} --name kurator-host
kind load docker-image ghcr.io/kurator-dev/fleet-manager:${VERSION} --name kurator-host

helm repo add jetstack https://charts.jetstack.io
helm repo update
kubectl create namespace cert-manager
helm install -n cert-manager cert-manager jetstack/cert-manager --set installCRDs=true

helm repo add fluxcd-community https://fluxcd-community.github.io/helm-charts
cat <<EOF | helm install fluxcd fluxcd-community/flux2 --version 2.7.0 -n fluxcd-system --create-namespace -f -
imageAutomationController:
create: false
imageReflectionController:
create: false
notificationController:
create: false
EOF

sleep 5s

VERSION=${VERSION} make gen-chart
cd out/charts
helm install --create-namespace kurator-cluster-operator cluster-operator-${VERSION}.tgz -n kurator-system
helm install --create-namespace kurator-fleet-manager fleet-manager-${VERSION}.tgz -n kurator-system

echo "install kurator successful"
2 changes: 1 addition & 1 deletion hack/util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ function util::check_clusters_ready() {
local context_name=${2}

echo "Waiting for kubeconfig file ${kubeconfig_path} and clusters ${context_name} to be ready..."
util::wait_file_exist "${kubeconfig_path}" 300
util::wait_file_exist "${kubeconfig_path}" 600
util::wait_for_condition 'running' "docker inspect --format='{{.State.Status}}' ${context_name}-control-plane &> /dev/null" 300

kubectl config rename-context "kind-${context_name}" "${context_name}" --kubeconfig="${kubeconfig_path}"
Expand Down
Loading