aboutsummaryrefslogtreecommitdiff
path: root/.travis
diff options
context:
space:
mode:
authorGravatar John Belamaric <jbelamaric@infoblox.com> 2016-11-14 19:31:08 +0000
committerGravatar John Belamaric <jbelamaric@infoblox.com> 2016-11-15 01:35:24 +0000
commitafe4368c344a4934396521c0cf42c62e60ea515c (patch)
treeda2da5c0c94f1d959d8b98e3a93de3389b93414e /.travis
parent137fc33b8f2ac0c37915f3cb173bc5f8315def9d (diff)
downloadcoredns-afe4368c344a4934396521c0cf42c62e60ea515c.tar.gz
coredns-afe4368c344a4934396521c0cf42c62e60ea515c.tar.zst
coredns-afe4368c344a4934396521c0cf42c62e60ea515c.zip
K8s Test Cleanup and Service PTR
Change the CI setup for K8s to be simpler. Now it just creates a set of objects via a yaml file, making it very easy to modify the tests. Implement PTR for services.
Diffstat (limited to '.travis')
-rw-r--r--.travis/kubernetes/README.md28
-rw-r--r--.travis/kubernetes/dns-test.yaml151
-rw-r--r--.travis/kubernetes/kubernetes-rc.yaml70
-rw-r--r--.travis/kubernetes/nginx-rc.yml19
-rwxr-xr-x.travis/kubernetes/run_skydns.sh52
-rwxr-xr-x.travis/kubernetes/setup_k8s_services.sh99
6 files changed, 151 insertions, 268 deletions
diff --git a/.travis/kubernetes/README.md b/.travis/kubernetes/README.md
deleted file mode 100644
index 394cfe259..000000000
--- a/.travis/kubernetes/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-## Test scripts to automate kubernetes startup
-
-Requirements:
- docker
-
-The scripts in this directory startup kubernetes with docker as the container runtime.
-After starting kubernetes, a couple of kubernetes services are started to allow automatic
-testing of CoreDNS with kubernetes. The kubernetes integration tests in `test/kubernetes_test.go` depend on having some sample services running. The scripts in this folder
-automate the launch of kubernetes and the creation of the expected sample services.
-
-To start up kubernetes and launch some sample services,
-run the script `setup_k8s_services.sh`.
-
-~~~
-$ ./setup_k8s_services.sh
-~~~
-
-After running the above scripts, kubernetes will be running on the localhost with the following services
-exposed:
-
-~~
-NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-default kubernetes 10.0.0.1 <none> 443/TCP 48m
-demo mynginx 10.0.0.168 <none> 80/TCP 9m
-demo webserver 10.0.0.28 <none> 80/TCP 2m
-test mynginx 10.0.0.4 <none> 80/TCP 2m
-test webserver 10.0.0.39 <none> 80/TCP 2m
-~~
diff --git a/.travis/kubernetes/dns-test.yaml b/.travis/kubernetes/dns-test.yaml
new file mode 100644
index 000000000..77a68426c
--- /dev/null
+++ b/.travis/kubernetes/dns-test.yaml
@@ -0,0 +1,151 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: test-1
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: test-2
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+ name: de-1-a
+ namespace: test-1
+spec:
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: app-1-a
+ spec:
+ containers:
+ - name: app-1-a-c
+ image: gcr.io/google_containers/pause-amd64:3.0
+ ports:
+ - containerPort: 80
+ name: http
+ protocol: TCP
+ - containerPort: 443
+ name: https
+ protocol: TCP
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+ name: de-1-b
+ namespace: test-1
+spec:
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: app-1-b
+ spec:
+ containers:
+ - name: app-1-b-c
+ image: gcr.io/google_containers/pause-amd64:3.0
+ ports:
+ - containerPort: 80
+ name: http
+ protocol: TCP
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+ name: de-c
+ namespace: test-1
+spec:
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: app-c
+ spec:
+ containers:
+ - name: app-c-c
+ image: gcr.io/google_containers/pause-amd64:3.0
+ ports:
+ - containerPort: 1234
+ name: c-port
+ protocol: UDP
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+ name: de-c
+ namespace: test-2
+spec:
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: app-c
+ spec:
+ containers:
+ - name: app-c-c
+ image: gcr.io/google_containers/pause-amd64:3.0
+ ports:
+ - containerPort: 1234
+ name: c-port
+ protocol: UDP
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: svc-1-a
+ namespace: test-1
+spec:
+ selector:
+ app: app-1-a
+ clusterIP: 10.3.0.100
+ ports:
+ - name: http
+ port: 80
+ protocol: TCP
+ - name: https
+ port: 443
+ protocol: TCP
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: svc-1-b
+ namespace: test-1
+spec:
+ selector:
+ app: app-1-b
+ clusterIP: 10.3.0.110
+ ports:
+ - name: http
+ port: 80
+ protocol: TCP
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: svc-c
+ namespace: test-1
+spec:
+ selector:
+ app: app-c
+ clusterIP: 10.3.0.115
+ ports:
+ - name: c-port
+ port: 1234
+ protocol: UDP
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: svc-c
+ namespace: test-2
+spec:
+ selector:
+ app: app-c
+ clusterIP: 10.3.0.120
+ ports:
+ - name: c-port
+ port: 1234
+ protocol: UDP
diff --git a/.travis/kubernetes/kubernetes-rc.yaml b/.travis/kubernetes/kubernetes-rc.yaml
deleted file mode 100644
index 87d29418c..000000000
--- a/.travis/kubernetes/kubernetes-rc.yaml
+++ /dev/null
@@ -1,70 +0,0 @@
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: coredns-configmap
- namespace: kube-system
-data:
- corefile: |
- .:53 {
- kubernetes coredns.local {
- }
- #cache 160 coredns.local
- errors stdout
- log stdout
- }
----
-apiVersion: v1
-kind: ReplicationController
-metadata:
- labels:
- k8s-app: kube-dns
- kubernetes.io/cluster-service: "true"
- version: v20
- name: kube-dns-v20
- namespace: kube-system
-spec:
- replicas: 1
- selector:
- k8s-app: kube-dns
- version: v20
- template:
- metadata:
- labels:
- k8s-app: kube-dns
- kubernetes.io/cluster-service: "true"
- version: v20
- spec:
- containers:
- - args:
- - -conf=/cfg/corefile
- image: aledbf/kube-coredns:0.6
- imagePullPolicy: IfNotPresent
- name: kube-dns
- ports:
- - containerPort: 53
- name: dns
- protocol: UDP
- - containerPort: 53
- name: dns-tcp
- protocol: TCP
- volumeMounts:
- - name: config-volume
- mountPath: /cfg
- - args:
- - -cmd=nslookup kubernetes.default.svc.cluster.local localhost >/dev/null
- - -port=8080
- image: gcr.io/google_containers/exechealthz:1.0
- imagePullPolicy: IfNotPresent
- name: healthz
- ports:
- - containerPort: 8080
- protocol: TCP
- resources:
- limits:
- cpu: 10m
- memory: 20Mi
- dnsPolicy: Default
- volumes:
- - name: config-volume
- configMap:
- name: coredns-configmap
diff --git a/.travis/kubernetes/nginx-rc.yml b/.travis/kubernetes/nginx-rc.yml
deleted file mode 100644
index 4597de409..000000000
--- a/.travis/kubernetes/nginx-rc.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-apiVersion: v1
-kind: ReplicationController
-metadata:
- name: nginx-controller
- namespace: poddemo
-spec:
- replicas: 2
- selector:
- role: load-balancer
- template:
- metadata:
- labels:
- role: load-balancer
- spec:
- containers:
- - name: nginx
- image: coreos/nginx
- ports:
- - containerPort: 80
diff --git a/.travis/kubernetes/run_skydns.sh b/.travis/kubernetes/run_skydns.sh
deleted file mode 100755
index f7000a37f..000000000
--- a/.travis/kubernetes/run_skydns.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash
-
-# Running skydns based on instructions at: https://testdatamanagement.wordpress.com/2015/09/01/running-kubernetes-in-docker-with-dns-on-a-single-node/
-
-PWD=`pwd`
-BASEDIR=`readlink -e $(dirname ${0})`
-cd ${BASEDIR}
-
-KUBECTL='docker exec hyperkube /hyperkube kubectl'
-
-#RUN_SKYDNS="yes"
-RUN_SKYDNS="no"
-
-# DNS_ARGUMENTS needs to be passed when Kubernetes is setup.
-if [ "${RUN_SKYDNS}" = "yes" ]; then
- DNS_ARGUMENTS="--cluster-dns=10.0.0.10 --cluster-domain=cluster.local"
-else
- DNS_ARGUMENTS=""
-fi
-
-wait_until_k8s_ready() {
- # Wait until kubernetes is up and fully responsive
- while :
- do
- ${KUBECTL} get nodes 2>/dev/null | grep -q '127.0.0.1'
- if [ "${?}" = "0" ]; then
- break
- else
- echo "sleeping for 5 seconds (waiting for kubernetes to start)"
- sleep 5
- fi
- done
- echo "kubernetes nodes:"
- ${KUBECTL} get nodes
-}
-
-
-if [ "${RUN_SKYDNS}" = "yes" ]; then
- wait_until_k8s_ready
-
- echo "Launch kube2sky..."
- docker run -d --net=host gcr.io/google_containers/kube2sky:1.11 --kube_master_url=http://127.0.0.1:8080 --domain=cluster.local
-
- echo ""
-
- echo "Launch SkyDNS..."
- docker run -d --net=host gcr.io/google_containers/skydns:2015-03-11-001 --machines=http://localhost:4001 --addr=0.0.0.0:53 --domain=cluster.local
-else
- true
-fi
-
-cd ${PWD}
diff --git a/.travis/kubernetes/setup_k8s_services.sh b/.travis/kubernetes/setup_k8s_services.sh
deleted file mode 100755
index aae198a50..000000000
--- a/.travis/kubernetes/setup_k8s_services.sh
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/bin/bash
-
-set -x
-
-KUBECTL='docker exec hyperkube /hyperkube kubectl'
-
-PWD=`pwd`
-cd `readlink -e $(dirname ${0})`
-
-create_namespaces() {
- for n in ${NAMESPACES};
- do
- echo "Creating namespace: ${n}"
- ${KUBECTL} get namespaces --no-headers 2>/dev/null | grep -q ${n}
- if [ "${?}" != "0" ]; then
- ${KUBECTL} create namespace ${n}
- fi
- done
-
- echo "kubernetes namespaces:"
- ${KUBECTL} get namespaces
-}
-
-# run_and_expose_service <servicename> <namespace> <image> <port>
-run_and_expose_service() {
- if [ "${#}" != "4" ]; then
- return -1
- fi
-
- service="${1}"
- namespace="${2}"
- image="${3}"
- port="${4}"
-
- echo " starting service '${service}' in namespace '${namespace}'"
-
- ${KUBECTL} get deployment --namespace=${namespace} --no-headers 2>/dev/null | grep -q ${service}
- if [ "${?}" != "0" ]; then
- ${KUBECTL} run ${service} --namespace=${namespace} --image=${image}
- else
- echo "warn: service '${service}' already running in namespace '${namespace}'"
- fi
-
- ${KUBECTL} get service --namespace=${namespace} --no-headers 2>/dev/null | grep -q ${service}
- if [ "${?}" != "0" ]; then
- ${KUBECTL} expose deployment ${service} --namespace=${namespace} --port=${port}
- else
- echo "warn: service '${service}' already exposed in namespace '${namespace}'"
- fi
-}
-
-#run_and_expose_rc nginx-controller nginx-rc.yml poddemo 80
-run_and_expose_rc() {
- if [ "${#}" != "4" ]; then
- return -1
- fi
-
- rc_name="${1}"
- rc_file="${2}"
- namespace="${3}"
- port="${4}"
-
- echo " starting replication controller '${rc_name}' from '${rc_file}' in namespace '${namespace}'"
-
- ${KUBECTL} get rc --namespace=${namespace} --no-headers 2>/dev/null | grep -q ${rc_name}
- if [ "${?}" != "0" ]; then
- ${KUBECTL} expose -f ${rc_file} --namespace=${namespace} --port=${port}
- else
- echo "warn: rc '${rc_name}' already running in namespace '${namespace}'"
- fi
-}
-
-echo "Starting sample kubernetes services..."
-
-NAMESPACES="demo poddemo test"
-create_namespaces
-
-echo ""
-echo "Starting services:"
-
-run_and_expose_service mynginx demo nginx 80
-run_and_expose_service webserver demo nginx 80
-run_and_expose_service mynginx test nginx 80
-run_and_expose_service webserver test nginx 80
-
-echo ""
-echo "Services exposed:"
-${KUBECTL} get services --all-namespaces
-
-echo ""
-echo "Starting replicationcontrollers:"
-
-run_and_expose_rc nginx-controller nginx-rc.yml poddemo 80
-
-echo ""
-echo "ReplicationControllers exposed:"
-${KUBECTL} get rc --all-namespaces
-
-cd ${PWD}