64c744d756
change docker image to point to the latest metacontroller image. change python image to point to version 3.7 add updateStrategy to CompositeController. add replicas config to DaemonJobController via zuul gate. Change-Id: I2a48bc6472017802267980fe474d81886113fcda
122 lines
4.1 KiB
Bash
Executable File
122 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
set -xe
|
|
|
|
namespace="metacontroller"
|
|
: ${HELM_ARGS_DAEMONJOB_CONTROLLER:="$(./tools/deployment/common/get-values-overrides.sh daemonjob-controller)"}
|
|
|
|
#NOTE: Lint and package chart
|
|
make daemonjob-controller
|
|
|
|
#NOTE: Deploy command
|
|
helm upgrade --install daemonjob-controller ./daemonjob-controller \
|
|
--namespace=$namespace \
|
|
--set pod.replicas.daemonjob_controller=4 \
|
|
${HELM_ARGS_DAEMONJOB_CONTROLLER}
|
|
|
|
#NOTE: Wait for deploy
|
|
./tools/deployment/common/wait-for-pods.sh daemonjob-controller
|
|
|
|
#NOTE: CompositeController succesfully deployed
|
|
composite_controller_cr=$(kubectl get compositecontrollers | awk '{print $1}')
|
|
echo "$composite_controller_cr, a CompositeController created succesfully"
|
|
|
|
#NOTE: Check crd of APIGroup ctl.example.com
|
|
daemonjob_crd=$(kubectl get crd | awk '/ctl.example.com/{print $1}')
|
|
echo "$daemonjob_crd is succesfully created"
|
|
|
|
#NOTE: Check daemonjob_controller is running
|
|
pod=$(kubectl get pods -n $namespace | awk '/daemonjob-controller/{print $1}')
|
|
daemonjob_controller_status=$(kubectl get pods -n $namespace | awk '/daemonjob-controller/{print $3}')
|
|
|
|
NEXT_WAIT_TIME=0
|
|
until [[ $daemonjob_controller_status == 'Running' ]] || [ $NEXT_WAIT_TIME -eq 5 ]; do
|
|
daemonjob_controller_status=$(kubectl get pods -n $namespace | awk '/daemonjob-controller/{print $3}')
|
|
echo "DaemonjobController is not still up and running"
|
|
sleep 20
|
|
NEXT_WAIT_TIME=$((NEXT_WAIT_TIME+1))
|
|
done
|
|
|
|
#NOTE: Validate DaemonjobController Deployment info
|
|
helm status daemonjob-controller
|
|
|
|
#NOTE: Create sample-daemonjob.yaml
|
|
tee /tmp/sample-daemonjob.yaml << EOF
|
|
apiVersion: ctl.example.com/v1
|
|
kind: DaemonJob
|
|
metadata:
|
|
name: hello-world
|
|
annotations:
|
|
imageregistry: "https://hub.docker.com/"
|
|
labels:
|
|
app: hello-world
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app: hello-world
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: hello-world
|
|
annotations:
|
|
container.apparmor.security.beta.kubernetes.io/hello-world: localhost/docker-default
|
|
spec:
|
|
containers:
|
|
- name: hello-world
|
|
image: busybox
|
|
command: ["sh", "-c", "echo 'Hello world' && sleep 120"]
|
|
resources:
|
|
requests:
|
|
cpu: 10m
|
|
terminationGracePeriodSeconds: 10
|
|
EOF
|
|
|
|
dj="daemonjobs"
|
|
|
|
#NOTE: Deploy daemonjob
|
|
kubectl apply -f /tmp/sample-daemonjob.yaml
|
|
|
|
#NOTE: Wait for successful completion
|
|
NEXT_WAIT_TIME=0
|
|
echo "Wait for successful completion..."
|
|
until [[ "$(kubectl get $dj hello-world -o 'jsonpath={.status.conditions[0].status}')" == "True" ]] || [ $NEXT_WAIT_TIME -eq 5 ]; do
|
|
daemonset_pod=$(kubectl get pods | awk '/hello-world-dj/{print $1}')
|
|
if [ -z "$daemonset_pod" ]
|
|
then
|
|
echo "Child resource daemonset not yet created"
|
|
else
|
|
daemonset_pod_status=$(kubectl get pods | awk '/hello-world-dj/{print $3}')
|
|
if [ $daemonset_pod_status == 'Init:0/1' ]; then
|
|
kubectl describe dj hello-world
|
|
init_container_status=$(kubectl get pod $daemonset_pod -o 'jsonpath={.status.initContainerStatuses[0].state.running}')
|
|
if [ ! -z "$init_container_status" ]; then
|
|
expected_log=$(kubectl logs $daemonset_pod -c hello-world)
|
|
if [ $expected_log == 'Hello world' ]; then
|
|
echo "Strings are equal." && break
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
sleep 20
|
|
NEXT_WAIT_TIME=$((NEXT_WAIT_TIME+1))
|
|
done
|
|
|
|
#NOTE: Check that DaemonSet gets cleaned up after finishing
|
|
NEXT_WAIT_TIME=0
|
|
echo "Check that DaemonSet gets cleaned up after finishing..."
|
|
until [[ "$(kubectl get daemonset hello-world-dj 2>&1)" =~ NotFound ]] || [ $NEXT_WAIT_TIME -eq 5 ]; do
|
|
sleep 20
|
|
NEXT_WAIT_TIME=$((NEXT_WAIT_TIME+1))
|
|
done
|