diff options
author | 2016-11-14 19:31:08 +0000 | |
---|---|---|
committer | 2016-11-15 01:35:24 +0000 | |
commit | afe4368c344a4934396521c0cf42c62e60ea515c (patch) | |
tree | da2da5c0c94f1d959d8b98e3a93de3389b93414e /.travis | |
parent | 137fc33b8f2ac0c37915f3cb173bc5f8315def9d (diff) | |
download | coredns-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.md | 28 | ||||
-rw-r--r-- | .travis/kubernetes/dns-test.yaml | 151 | ||||
-rw-r--r-- | .travis/kubernetes/kubernetes-rc.yaml | 70 | ||||
-rw-r--r-- | .travis/kubernetes/nginx-rc.yml | 19 | ||||
-rwxr-xr-x | .travis/kubernetes/run_skydns.sh | 52 | ||||
-rwxr-xr-x | .travis/kubernetes/setup_k8s_services.sh | 99 |
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} |