Skip to content

Commit

Permalink
fix: automatically create e2e test secret
Browse files Browse the repository at this point in the history
Signed-off-by: luoyuanze <[email protected]>
  • Loading branch information
lyzuiui committed Jan 20, 2025
1 parent 31ce205 commit 9f1d93b
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 48 deletions.
48 changes: 22 additions & 26 deletions hack/cluster.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,19 @@ function prepare_test_image() {
docker pull bitpoke/mysql-operator-orchestrator:v0.6.3
docker pull bitpoke/mysql-operator:v0.6.3
docker pull bitpoke/mysql-operator-sidecar-5.7:v0.6.3
docker pull nginx
docker pull nginx:1.27.3
docker pull percona:5.7
docker pull prom/mysqld-exporter:v0.13.0
else
# todo add bitpoke to m.daocloud.io's Whitelist
docker pull bitpoke/mysql-operator-orchestrator:v0.6.3
docker pull bitpoke/mysql-operator:v0.6.3
docker pull bitpoke/mysql-operator-sidecar-5.7:v0.6.3
docker pull docker.m.daocloud.io/nginx
docker pull docker.m.daocloud.io/nginx:1.27.3
docker pull docker.m.daocloud.io/percona:5.7
docker pull docker.m.daocloud.io/prom/mysqld-exporter:v0.13.0

docker tag docker.m.daocloud.io/bitpoke/mysql-operator-orchestrator:v0.6.3 bitpoke/mysql-operator-orchestrator:v0.6.3
docker tag docker.m.daocloud.io/bitpoke/mysql-operator:v0.6.3 bitpoke/mysql-operator:v0.6.3
docker tag docker.m.daocloud.io/bitpoke/mysql-operator-sidecar-5.7:v0.6.3 bitpoke/mysql-operator-sidecar-5.7:v0.6.3
docker tag docker.m.daocloud.io/nginx nginx
docker tag docker.m.daocloud.io/nginx:1.27.3 nginx:1.27.3
docker tag docker.m.daocloud.io/percona:5.7 percona:5.7
docker tag docker.m.daocloud.io/prom/mysqld-exporter:v0.13.0 prom/mysqld-exporter:v0.13.0
fi
Expand All @@ -59,30 +56,29 @@ function prepare_e2e_cluster() {
kind load docker-image bitpoke/mysql-operator-orchestrator:v0.6.3 --name "${clustername}"
kind load docker-image bitpoke/mysql-operator:v0.6.3 --name "${clustername}"
kind load docker-image bitpoke/mysql-operator-sidecar-5.7:v0.6.3 --name "${clustername}"
kind load docker-image nginx --name "${clustername}"
kind load docker-image nginx:1.27.3 --name "${clustername}"
kind load docker-image percona:5.7 --name "${clustername}"
kind load docker-image prom/mysqld-exporter:v0.13.0 --name "${clustername}"

kubectl --kubeconfig $CLUSTER_DIR/kubeconfig apply -f "$ROOT"/deploy/crds

# deploy kosmos-scheduler for e2e test case of mysql-operator
sed -e "s|__VERSION__|$VERSION|g" -e "w ${ROOT}/environments/kosmos-scheduler.yml" "$ROOT"/deploy/scheduler/deployment.yaml
kubectl --kubeconfig $CLUSTER_DIR/kubeconfig apply -f "${ROOT}/environments/kosmos-scheduler.yml"
kubectl --kubeconfig $CLUSTER_DIR/kubeconfig apply -f "$ROOT"/deploy/scheduler/rbac.yaml

util::wait_for_condition "kosmos scheduler are ready" \
"kubectl --kubeconfig $CLUSTER_DIR/kubeconfig -n kosmos-system get deploy kosmos-scheduler -o jsonpath='{.status.replicas}{\" \"}{.status.readyReplicas}{\"\n\"}' | awk '{if (\$1 == \$2 && \$1 > 0) exit 0; else exit 1}'" \
300
echo "cluster $clustername deploy kosmos-scheduler success"

docker exec ${clustername}-control-plane /bin/sh -c "mv /etc/kubernetes/manifests/kube-scheduler.yaml /etc/kubernetes"

# add the args for e2e test case of mysql-operator
kubectl --kubeconfig $CLUSTER_DIR/kubeconfig -n kosmos-system patch deployment clustertree-cluster-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--auto-mcs-prefix=kosmos-e2e"}]'

util::wait_for_condition "kosmos ${clustername} clustertree are ready" \
"kubectl --kubeconfig $CLUSTER_DIR/kubeconfig -n kosmos-system get deploy clustertree-cluster-manager -o jsonpath='{.status.replicas}{\" \"}{.status.readyReplicas}{\"\n\"}' | awk '{if (\$1 == \$2 && \$1 > 0) exit 0; else exit 1}'" \
300
if [[ "$clustername" == "cluster-host" ]]; then
# deploy kosmos-scheduler for e2e test case of mysql-operator
sed -e "s|__VERSION__|$VERSION|g" -e "w ${ROOT}/environments/kosmos-scheduler.yml" "$ROOT"/deploy/scheduler/deployment.yaml
kubectl --kubeconfig $CLUSTER_DIR/kubeconfig apply -f "${ROOT}/environments/kosmos-scheduler.yml"
kubectl --kubeconfig $CLUSTER_DIR/kubeconfig apply -f "$ROOT"/deploy/scheduler/rbac.yaml
util::wait_for_condition "kosmos scheduler are ready" \
"kubectl --kubeconfig $CLUSTER_DIR/kubeconfig -n kosmos-system get deploy kosmos-scheduler -o jsonpath='{.status.replicas}{\" \"}{.status.readyReplicas}{\"\n\"}' | awk '{if (\$1 == \$2 && \$1 > 0) exit 0; else exit 1}'" \
300
echo "cluster $clustername deploy kosmos-scheduler success"

docker exec ${clustername}-control-plane /bin/sh -c "mv /etc/kubernetes/manifests/kube-scheduler.yaml /etc/kubernetes"

# add the args for e2e test case of mysql-operator
kubectl --kubeconfig $CLUSTER_DIR/kubeconfig -n kosmos-system patch deployment clustertree-cluster-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--auto-mcs-prefix=kosmos-e2e"}]'
util::wait_for_condition "kosmos ${clustername} clustertree are ready" \
"kubectl --kubeconfig $CLUSTER_DIR/kubeconfig -n kosmos-system get deploy clustertree-cluster-manager -o jsonpath='{.status.replicas}{\" \"}{.status.readyReplicas}{\"\n\"}' | awk '{if (\$1 == \$2 && \$1 > 0) exit 0; else exit 1}'" \
300
fi
}

# prepare docker image
Expand Down
9 changes: 8 additions & 1 deletion hack/rune2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,19 @@ sleep 100 && docker exec -i ${HOST_CLUSTER_NAME}-control-plane sh -c "curl -sSf

# e2e for mysql-operator
echo "apply mysql-operator on cluster ${HOST_CLUSTER_NAME} with files in path ${REPO_ROOT}/test/e2e/deploy/mysql-operator"
kubectl --kubeconfig "${REPO_ROOT}/environments/${HOST_CLUSTER_NAME}/kubeconfig" create namespace mysql-operator >/dev/null 2>&1 || true && \
kubectl --kubeconfig "${REPO_ROOT}/environments/${HOST_CLUSTER_NAME}/kubeconfig" create secret generic mysql-operator-orc \
--from-literal=TOPOLOGY_PASSWORD="$(openssl rand -base64 10 | tr -dc 'a-zA-Z0-9' | sed 's/^[^a-zA-Z]*//' | head -c 12)" \
--from-literal=TOPOLOGY_USER="$(openssl rand -base64 10 | tr -dc 'a-zA-Z0-9' | sed 's/^[^a-zA-Z]*//' | head -c 10)" \
--namespace=mysql-operator
kubectl --kubeconfig "${REPO_ROOT}/environments/${HOST_CLUSTER_NAME}/kubeconfig" apply -f "${REPO_ROOT}"/test/e2e/deploy/mysql-operator
util::wait_for_condition "mysql operator are ready" \
"kubectl --kubeconfig "${REPO_ROOT}/environments/${HOST_CLUSTER_NAME}/kubeconfig" get pods -n mysql-operator mysql-operator-0 | awk 'NR>1 {if (\$3 == \"Running\") exit 0; else exit 1; }'" \
300
kubectl --kubeconfig "${REPO_ROOT}/environments/${HOST_CLUSTER_NAME}/kubeconfig" create secret generic my-secret \
--from-literal=ROOT_PASSWORD="$(openssl rand -base64 10 | tr -dc 'a-zA-Z0-9' | sed 's/^[^a-zA-Z]*//' | head -c 10)" \
--namespace=kosmos-e2e
kubectl --kubeconfig "${REPO_ROOT}/environments/${HOST_CLUSTER_NAME}/kubeconfig" apply -f "${REPO_ROOT}"/test/e2e/deploy/cr

util::wait_for_condition "mysql cr are ready" \
"[ \$(kubectl --kubeconfig ${REPO_ROOT}/environments/${HOST_CLUSTER_NAME}/kubeconfig get pods -n kosmos-e2e -l app.kubernetes.io/name=mysql |grep \"4/4\"| grep \"Running\" | wc -l) -eq 2 ]" \
1200
Expand Down
9 changes: 0 additions & 9 deletions test/e2e/deploy/cr/secrets.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +0,0 @@
apiVersion: v1
data:
ROOT_PASSWORD: {{ .PASSWORD }}
kind: Secret
metadata:
name: my-secret
namespace: kosmos-e2e
type: Opaque
---
10 changes: 0 additions & 10 deletions test/e2e/deploy/mysql-operator/mysqll-operator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -183,16 +183,6 @@ spec:
type: ClusterIP
---
apiVersion: v1
data:
TOPOLOGY_PASSWORD: {{ .PASSWORD }}
TOPOLOGY_USER: {{ .USER }}
kind: Secret
metadata:
name: mysql-operator-orc
namespace: mysql-operator
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
name: mysql-operator-0-orc-svc
Expand Down
2 changes: 1 addition & 1 deletion test/e2e/deploy/nginx/nginx.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ spec:
topologyKey: kubernetes.io/hostname
containers:
- name: nginx
image: nginx:latest
image: nginx:1.27.3
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
Expand Down
2 changes: 1 addition & 1 deletion test/e2e/framework/deployment_sample.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const (
PollInterval = 15 * time.Second

// PollTimeout defines the time after which the poll operation times out.
PollTimeout = 180 * time.Second
PollTimeout = 300 * time.Second
)

func NewDeployment(namespace, name, schedulerName string, labels map[string]string, replicas *int32, nodes []string, toleration bool) *appsv1.Deployment {
Expand Down

0 comments on commit 9f1d93b

Please sign in to comment.