mirror of https://github.com/k3s-io/k3s
commit
260db5aee0
|
@ -33,6 +33,20 @@ function sort_args() {
|
||||||
printf "%s\n" "$@" | sort -n | tr '\n\r' ' ' | sed 's/ */ /g'
|
printf "%s\n" "$@" | sort -n | tr '\n\r' ' ' | sed 's/ */ /g'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Join args $2... with $1 between them.
|
||||||
|
# Example: join ", " x y z => x, y, z
|
||||||
|
function join() {
|
||||||
|
local sep item
|
||||||
|
sep=$1
|
||||||
|
shift
|
||||||
|
echo -n "${1:-}"
|
||||||
|
shift
|
||||||
|
for item; do
|
||||||
|
echo -n "${sep}${item}"
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
svcs_to_clean=()
|
svcs_to_clean=()
|
||||||
function do_teardown() {
|
function do_teardown() {
|
||||||
local svc
|
local svc
|
||||||
|
@ -45,10 +59,70 @@ function do_teardown() {
|
||||||
# $1: service name
|
# $1: service name
|
||||||
# $2: service port
|
# $2: service port
|
||||||
# $3: service replica count
|
# $3: service replica count
|
||||||
|
# $4: public IPs (optional, string e.g. "1.2.3.4 5.6.7.8")
|
||||||
function start_service() {
|
function start_service() {
|
||||||
echo "Starting service '$1' on port $2 with $3 replicas"
|
echo "Starting service '$1' on port $2 with $3 replicas"
|
||||||
svcs_to_clean+=("$1")
|
svcs_to_clean+=("$1")
|
||||||
${KUBECFG} -s "$2" -p 9376 run kubernetes/serve_hostname "$3" "$1"
|
${KUBECTL} create -f - << __EOF__
|
||||||
|
{
|
||||||
|
"kind": "ReplicationController",
|
||||||
|
"apiVersion": "v1beta1",
|
||||||
|
"id": "$1",
|
||||||
|
"namespace": "default",
|
||||||
|
"desiredState": {
|
||||||
|
"replicas": $3,
|
||||||
|
"replicaSelector": {
|
||||||
|
"name": "$1"
|
||||||
|
},
|
||||||
|
"podTemplate": {
|
||||||
|
"desiredState": {
|
||||||
|
"manifest": {
|
||||||
|
"version": "v1beta2",
|
||||||
|
"containers": [
|
||||||
|
{
|
||||||
|
"name": "$1",
|
||||||
|
"image": "kubernetes/serve_hostname",
|
||||||
|
"ports": [
|
||||||
|
{
|
||||||
|
"containerPort": 9376,
|
||||||
|
"protocol": "TCP"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"name": "$1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
__EOF__
|
||||||
|
# Convert '1.2.3.4 5.6.7.8' => '"1.2.3.4", "5.6.7.8"'
|
||||||
|
local ip ips_array=() public_ips
|
||||||
|
for ip in ${4:-}; do
|
||||||
|
ips_array+=("\"${ip}\"")
|
||||||
|
done
|
||||||
|
public_ips=$(join ", " "${ips_array[@]:+${ips_array[@]}}")
|
||||||
|
${KUBECTL} create -f - << __EOF__
|
||||||
|
{
|
||||||
|
"kind": "Service",
|
||||||
|
"apiVersion": "v1beta1",
|
||||||
|
"id": "$1",
|
||||||
|
"namespace": "default",
|
||||||
|
"port": $2,
|
||||||
|
"protocol": "TCP",
|
||||||
|
"labels": {
|
||||||
|
"name": "$1"
|
||||||
|
},
|
||||||
|
"selector": {
|
||||||
|
"name": "$1"
|
||||||
|
},
|
||||||
|
"containerPort": 9376,
|
||||||
|
"publicIPs": [ ${public_ips} ]
|
||||||
|
}
|
||||||
|
__EOF__
|
||||||
}
|
}
|
||||||
|
|
||||||
# Args:
|
# Args:
|
||||||
|
@ -197,7 +271,8 @@ master="${MASTER_NAME}"
|
||||||
svc1_name="service1"
|
svc1_name="service1"
|
||||||
svc1_port=80
|
svc1_port=80
|
||||||
svc1_count=3
|
svc1_count=3
|
||||||
start_service "${svc1_name}" "${svc1_port}" "${svc1_count}"
|
svc1_publics="192.168.1.1 192.168.1.2"
|
||||||
|
start_service "${svc1_name}" "${svc1_port}" "${svc1_count}" "${svc1_publics}"
|
||||||
|
|
||||||
svc2_name="service2"
|
svc2_name="service2"
|
||||||
svc2_port=80
|
svc2_port=80
|
||||||
|
@ -227,11 +302,19 @@ fi
|
||||||
echo "Verifying the portals from the host"
|
echo "Verifying the portals from the host"
|
||||||
wait_for_service_up "${svc1_name}" "${svc1_ip}" "${svc1_port}" \
|
wait_for_service_up "${svc1_name}" "${svc1_ip}" "${svc1_port}" \
|
||||||
"${svc1_count}" "${svc1_pods}"
|
"${svc1_count}" "${svc1_pods}"
|
||||||
|
for ip in ${svc1_publics}; do
|
||||||
|
wait_for_service_up "${svc1_name}" "${ip}" "${svc1_port}" \
|
||||||
|
"${svc1_count}" "${svc1_pods}"
|
||||||
|
done
|
||||||
wait_for_service_up "${svc2_name}" "${svc2_ip}" "${svc2_port}" \
|
wait_for_service_up "${svc2_name}" "${svc2_ip}" "${svc2_port}" \
|
||||||
"${svc2_count}" "${svc2_pods}"
|
"${svc2_count}" "${svc2_pods}"
|
||||||
echo "Verifying the portals from a container"
|
echo "Verifying the portals from a container"
|
||||||
verify_from_container "${svc1_name}" "${svc1_ip}" "${svc1_port}" \
|
verify_from_container "${svc1_name}" "${svc1_ip}" "${svc1_port}" \
|
||||||
"${svc1_count}" "${svc1_pods}"
|
"${svc1_count}" "${svc1_pods}"
|
||||||
|
for ip in ${svc1_publics}; do
|
||||||
|
verify_from_container "${svc1_name}" "${ip}" "${svc1_port}" \
|
||||||
|
"${svc1_count}" "${svc1_pods}"
|
||||||
|
done
|
||||||
verify_from_container "${svc2_name}" "${svc2_ip}" "${svc2_port}" \
|
verify_from_container "${svc2_name}" "${svc2_ip}" "${svc2_port}" \
|
||||||
"${svc2_count}" "${svc2_pods}"
|
"${svc2_count}" "${svc2_pods}"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue