Skip to content
This repository was archived by the owner on Jun 28, 2024. It is now read-only.

Commit 3231724

Browse files
authored
Merge pull request #926 from chavafg/topic/changes-k8s-1.12
Update ci and tests scripts for kubernetes 1.12
2 parents ef00036 + 4ff6bc6 commit 3231724

17 files changed

+176
-275
lines changed

.ci/install_crio.sh

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@
55
# SPDX-License-Identifier: Apache-2.0
66
#
77

8-
set -e
8+
set -o errexit
9+
set -o nounset
10+
set -o pipefail
911

1012
cidir=$(dirname "$0")
1113
source "${cidir}/lib.sh"
1214
source /etc/os-release || source /usr/lib/os-release
1315

1416
echo "Get CRI-O sources"
1517
kubernetes_sigs_org="github.com/kubernetes-sigs"
18+
ghprbGhRepository="${ghprbGhRepository:-}"
1619
crio_repo="${kubernetes_sigs_org}/cri-o"
20+
1721
go get -d "$crio_repo" || true
1822
pushd "${GOPATH}/src/${crio_repo}"
1923

@@ -93,41 +97,33 @@ sudo -E install -D -m0755 runc "/usr/local/bin/crio-runc"
9397
popd
9498

9599
crio_config_file="/etc/crio/crio.conf"
96-
echo "Set runc as default runtime in CRI-O for trusted workloads"
97-
sudo sed -i 's/^runtime =.*/runtime = "\/usr\/local\/bin\/crio-runc"/' "$crio_config_file"
98100

99-
echo "Change stream_port where cri-o will listen"
100-
sudo sed -i 's/^stream_port.*/stream_port = "10020"/' "$crio_config_file"
101+
echo "Set manage_network_ns_lifecycle to true"
102+
network_ns_flag="manage_network_ns_lifecycle"
103+
sudo sed -i "/\[crio.runtime\]/a$network_ns_flag = true" "$crio_config_file"
101104

102105
echo "Add docker.io registry to pull images"
103-
# Matches cri-o 1.9 file format
104-
sudo sed -i 's/^registries = \[/registries = \[ "docker.io"/' "$crio_config_file"
105106
# Matches cri-o 1.10 file format
107+
sudo sed -i 's/^registries = \[/registries = \[ "docker.io"/' "$crio_config_file"
108+
# Matches cri-o 1.12 file format
106109
sudo sed -i 's/^#registries = \[/registries = \[ "docker.io" \] /' "$crio_config_file"
107110

108-
echo "Set manage_network_ns_lifecycle to true"
109-
network_ns_flag="manage_network_ns_lifecycle"
110-
111-
# Check if flag is already defined in the CRI-O config file.
112-
# If it is already defined, then just change the value to true,
113-
# else, add the flag with the value.
114-
if grep "$network_ns_flag" "$crio_config_file"; then
115-
sudo sed -i "s/^$network_ns_flag.*/$network_ns_flag = true/" "$crio_config_file"
116-
else
117-
sudo sed -i "/\[crio.runtime\]/a$network_ns_flag = true" "$crio_config_file"
118-
fi
111+
echo "Change stream_port where cri-o will listen"
112+
sudo sed -i 's/^stream_port.*/stream_port = "10020"/' "$crio_config_file"
119113

120-
echo "Set Kata containers as default runtime in CRI-O for untrusted workloads"
121-
sudo sed -i 's/default_workload_trust = "trusted"/default_workload_trust = "untrusted"/' "$crio_config_file"
122-
sudo sed -i 's/runtime_untrusted_workload = ""/runtime_untrusted_workload = "\/usr\/local\/bin\/kata-runtime"/' "$crio_config_file"
114+
echo "Configure runtimes for trusted/untrusted annotations"
115+
sudo sed -i 's/^#* *runtime =.*/runtime = "\/usr\/local\/bin\/crio-runc"/' "$crio_config_file"
116+
sudo sed -i 's/^default_runtime/# default_runtime/' "$crio_config_file"
117+
sudo sed -i 's/^#*runtime_untrusted_workload = ""/runtime_untrusted_workload = "\/usr\/local\/bin\/kata-runtime"/' "$crio_config_file"
118+
sudo sed -i 's/#*default_workload_trust = ""/default_workload_trust = "trusted"/' "$crio_config_file"
123119

124120
service_path="/etc/systemd/system"
125121
crio_service_file="${cidir}/data/crio.service"
126122

127123
echo "Install crio service (${crio_service_file})"
128124
sudo install -m0444 "${crio_service_file}" "${service_path}"
129125

130-
kubelet_service_dir="/etc/systemd/system/kubelet.service.d/"
126+
kubelet_service_dir="${service_path}/kubelet.service.d/"
131127

132128
sudo mkdir -p "${kubelet_service_dir}"
133129

.ci/lib.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,5 +255,10 @@ gen_clean_arch() {
255255
delete_stale_kata_resource
256256
info "Remove installed kata packages"
257257
${GOPATH}/src/${tests_repo}/cmd/kata-manager/kata-manager.sh remove-packages
258+
info "Remove installed kubernetes packages and configuration"
259+
if [ "$ID" == ubuntu ]; then
260+
sudo rm -rf /etc/systemd/system/kubelet.service.d
261+
sudo apt-get purge kubeadm kubelet kubectl -y
262+
fi
258263
}
259264

integration/kubernetes/cleanup_env.sh

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,34 @@
44
#
55
# SPDX-License-Identifier: Apache-2.0
66
#
7+
# This script is used to reset the kubernetes cluster
78

89
SCRIPT_PATH=$(dirname "$(readlink -f "$0")")
910
source "${SCRIPT_PATH}/../../lib/common.bash"
1011

11-
export KUBECONFIG=/etc/kubernetes/admin.conf
12-
sudo -E kubeadm reset --cri-socket=/var/run/crio/crio.sock
12+
cri_runtime="${CRI_RUNTIME:-crio}"
13+
14+
case "${cri_runtime}" in
15+
containerd)
16+
cri_runtime_socket="/run/containerd/containerd.sock"
17+
;;
18+
crio)
19+
cri_runtime_socket="/var/run/crio/crio.sock"
20+
;;
21+
*)
22+
echo "Runtime ${cri_runtime} not supported"
23+
;;
24+
esac
1325

14-
# Workaround to delete pods using crictl
15-
# Needed until https://github.com/kubernetes/kubeadm/issues/748
16-
# gets fixed
17-
for ctr in $(sudo crictl ps --quiet); do
18-
sudo crictl stop "$ctr"
19-
sudo crictl rm "$ctr"
20-
done
21-
for pod in $(sudo crictl pods --quiet); do
22-
sudo crictl stopp "$pod"
23-
sudo crictl rmp "$pod"
24-
done
26+
export KUBECONFIG=/etc/kubernetes/admin.conf
27+
sudo -E kubeadm reset -f --cri-socket="${cri_runtime_socket}"
2528

26-
sudo systemctl stop crio
29+
sudo systemctl stop "${cri_runtime}"
2730

2831
sudo ip link set dev cni0 down
2932
sudo ip link set dev flannel.1 down
3033
sudo ip link del cni0
3134
sudo ip link del flannel.1
3235

33-
# Check no processes are left behind
36+
# Check no kata processes are left behind after reseting kubernetes
3437
check_processes

integration/kubernetes/data/kube-flannel-rbac.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

integration/kubernetes/data/kube-flannel.yml

Lines changed: 0 additions & 95 deletions
This file was deleted.

integration/kubernetes/init.sh

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,19 @@ cri_runtime="${CRI_RUNTIME:-crio}"
1515

1616
case "${cri_runtime}" in
1717
containerd)
18-
cri_runtime_socket="/run/containerd/containerd.sock"
19-
;;
18+
cri_runtime_socket="/run/containerd/containerd.sock"
19+
;;
2020
crio)
21-
cri_runtime_socket="/var/run/crio/crio.sock"
22-
;;
21+
cri_runtime_socket="/var/run/crio/crio.sock"
22+
;;
2323
*)
24-
echo "Runtime ${cri_runtime} not supported"
25-
26-
;;
24+
echo "Runtime ${cri_runtime} not supported"
25+
;;
2726
esac
2827

29-
# Check no processes are left behind
28+
# Check no there are no kata processes from previous tests.
3029
check_processes
3130

32-
# The next workaround is to be able to communicate between pods
33-
# Issue: https://github.com/kubernetes/kubernetes/issues/40182
34-
# Fix is ready for K8s 1.9, but still need to investigate why it does not
35-
# work by default.
36-
# FIXME: Issue: https://github.com/clearcontainers/tests/issues/934
37-
sudo iptables -P FORWARD ACCEPT
38-
3931
# Remove existing CNI configurations:
4032
sudo rm -rf /var/lib/cni/networks/*
4133
sudo rm -rf /etc/cni/net.d/*
@@ -49,18 +41,30 @@ echo "Start ${cri_runtime} service"
4941
sudo systemctl start ${cri_runtime}
5042

5143
echo "Init cluster using ${cri_runtime_socket}"
52-
sudo -E kubeadm init --pod-network-cidr 10.244.0.0/16 --cri-socket="unix://${cri_runtime_socket}"
44+
kubeadm_config_template="${SCRIPT_PATH}/kubeadm/config.yaml"
45+
kubeadm_config_file="$(mktemp --tmpdir kubeadm_config.XXXXXX.yaml)"
46+
47+
sed -e "s|CRI_RUNTIME_SOCKET|${cri_runtime_socket}|" "${kubeadm_config_template}" > "${kubeadm_config_file}"
48+
49+
sudo -E kubeadm init --config "${kubeadm_config_file}"
50+
5351
export KUBECONFIG=/etc/kubernetes/admin.conf
5452

5553
sudo -E kubectl get nodes
5654
sudo -E kubectl get pods
57-
sudo -E kubectl create -f "${SCRIPT_PATH}/data/kube-flannel-rbac.yml"
58-
sudo -E kubectl create --namespace kube-system -f "${SCRIPT_PATH}/data/kube-flannel.yml"
5955

60-
# The kube-dns pod usually takes around 30 seconds to get ready
56+
# kube-flannel config file taken from k8s 1.12 documentation:
57+
flannel_config="https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml"
58+
59+
sudo -E kubectl apply -f "$flannel_config"
60+
61+
# The kube-dns pod usually takes around 120 seconds to get ready
6162
# This instruction will wait until it is up and running, so we can
6263
# start creating our containers.
63-
dns_wait_time=300
64+
dns_wait_time=120
6465
sleep_time=5
65-
cmd="sudo -E kubectl get pods --all-namespaces | grep 'dns.*3/3.*Running'"
66+
cmd="sudo -E kubectl get pods --all-namespaces | grep 'coredns.*1/1.*Running'"
6667
waitForProcess "$dns_wait_time" "$sleep_time" "$cmd"
68+
69+
# Enable the master node to be able to schedule pods.
70+
sudo -E kubectl taint nodes "$(hostname)" node-role.kubernetes.io/master:NoSchedule-

integration/kubernetes/k8s-cpu-ns.bats

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,15 @@ setup() {
1717
total_cpus=2
1818
total_requests=512
1919
total_cpu_container=1
20+
pod_config_dir="${BATS_TEST_DIRNAME}/untrusted_workloads"
2021
}
2122

2223
@test "Check CPU constraints" {
23-
issue="https://github.com/kata-containers/tests/issues/794"
24-
[ "${CRI_RUNTIME}" == "containerd" ] && skip "test not working with ${CRI_RUNTIME} see: ${issue}"
25-
wait_time=120
26-
sleep_time=5
27-
2824
# Create the pod
29-
sudo -E kubectl create -f pod-cpu.yaml
25+
sudo -E kubectl create -f "${pod_config_dir}/pod-cpu.yaml"
3026

3127
# Check pod creation
32-
pod_status_cmd="sudo -E kubectl get pods -a | grep $pod_name | grep Running"
33-
waitForProcess "$wait_time" "$sleep_time" "$pod_status_cmd"
28+
sudo -E kubectl wait --for=condition=Ready pod "$pod_name"
3429

3530
# Check the total of cpus
3631
total_cpus_container=$(sudo -E kubectl exec $pod_name -c $container_name nproc)
@@ -54,9 +49,5 @@ setup() {
5449
}
5550

5651
teardown() {
57-
sudo -E kubectl delete deployment "$pod_name"
58-
# Wait for the pods to be deleted
59-
cmd="sudo -E kubectl get pods | grep found."
60-
waitForProcess "$wait_time" "$sleep_time" "$cmd"
61-
sudo -E kubectl get pods
52+
sudo -E kubectl delete pod "$pod_name"
6253
}

0 commit comments

Comments
 (0)