Initial stuff
This commit is contained in:
parent
b2f7df6d77
commit
c7fa40d247
8 changed files with 220 additions and 0 deletions
6
Makefile
Normal file
6
Makefile
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
TEST_IMAGE?=consul-helm-test
|
||||||
|
|
||||||
|
test-docker:
|
||||||
|
@docker build --rm -t '$(TEST_IMAGE)' -f $(CURDIR)/test/docker/Test.dockerfile $(CURDIR)
|
||||||
|
|
||||||
|
.PHONY: test-docker
|
40
test/docker/Test.dockerfile
Normal file
40
test/docker/Test.dockerfile
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# This Dockerfile installs all the dependencies necessary to run the
|
||||||
|
# acceptance tests. This image also contains gcloud so you can run tests
|
||||||
|
# against a GKE cluster easily.
|
||||||
|
#
|
||||||
|
# This image has no automatic entrypoint. It is expected that you'll run
|
||||||
|
# a script to configure kubectl, potentially install Helm, and run the tests
|
||||||
|
# manually. This image only has the dependencies pre-installed.
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
WORKDIR /root
|
||||||
|
|
||||||
|
ENV BATS_VERSION "1.1.0"
|
||||||
|
|
||||||
|
# base packages
|
||||||
|
RUN apk update && apk add --no-cache --virtual .build-deps \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
tar \
|
||||||
|
bash \
|
||||||
|
openssl \
|
||||||
|
python \
|
||||||
|
git
|
||||||
|
|
||||||
|
# gcloud
|
||||||
|
RUN curl -OL https://dl.google.com/dl/cloudsdk/channels/rapid/install_google_cloud_sdk.bash && \
|
||||||
|
bash install_google_cloud_sdk.bash --disable-prompts --install-dir='/root/' && \
|
||||||
|
ln -s /root/google-cloud-sdk/bin/gcloud /usr/local/bin/gcloud
|
||||||
|
|
||||||
|
# kubectl
|
||||||
|
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && \
|
||||||
|
chmod +x ./kubectl && \
|
||||||
|
mv ./kubectl /usr/local/bin/kubectl
|
||||||
|
|
||||||
|
# helm
|
||||||
|
RUN curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
|
||||||
|
|
||||||
|
# bats
|
||||||
|
RUN curl -sSL https://github.com/bats-core/bats-core/archive/v${BATS_VERSION}.tar.gz -o /tmp/bats.tgz \
|
||||||
|
&& tar -zxf /tmp/bats.tgz -C /tmp \
|
||||||
|
&& /bin/bash /tmp/bats-core-$BATS_VERSION/install.sh /usr/local
|
88
test/scripts/cli-init.sh
Executable file
88
test/scripts/cli-init.sh
Executable file
|
@ -0,0 +1,88 @@
|
||||||
|
#!/bin/bash
|
||||||
|
SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
|
||||||
|
pushd $(dirname ${BASH_SOURCE[0]}) > /dev/null
|
||||||
|
SCRIPT_DIR=$(pwd)
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
function usage {
|
||||||
|
cat <<-EOF
|
||||||
|
Usage: ${SCRIPT_NAME} [<options ...>]
|
||||||
|
Description:
|
||||||
|
This script will initialize
|
||||||
|
This script will build the consul-k8s binary on the local system.
|
||||||
|
All the requisite tooling must be installed for this to be
|
||||||
|
successful.
|
||||||
|
Options:
|
||||||
|
-s | --source DIR Path to source to build.
|
||||||
|
Defaults to "${SOURCE_DIR}"
|
||||||
|
-o | --os OSES Space separated string of OS
|
||||||
|
platforms to build.
|
||||||
|
-a | --arch ARCH Space separated string of
|
||||||
|
architectures to build.
|
||||||
|
-h | --help Print this help text.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
function main {
|
||||||
|
declare sdir="${SOURCE_DIR}"
|
||||||
|
declare build_os=""
|
||||||
|
declare build_arch=""
|
||||||
|
|
||||||
|
|
||||||
|
while test $# -gt 0
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
-h | --help )
|
||||||
|
usage
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
-s | --source )
|
||||||
|
if test -z "$2"
|
||||||
|
then
|
||||||
|
err_usage "ERROR: option -s/--source requires an argument"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! test -d "$2"
|
||||||
|
then
|
||||||
|
err_usage "ERROR: '$2' is not a directory and not suitable for the value of -s/--source"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sdir="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-o | --os )
|
||||||
|
if test -z "$2"
|
||||||
|
then
|
||||||
|
err_usage "ERROR: option -o/--os requires an argument"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
build_os="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-a | --arch )
|
||||||
|
if test -z "$2"
|
||||||
|
then
|
||||||
|
err_usage "ERROR: option -a/--arch requires an argument"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
build_arch="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
err_usage "ERROR: Unknown argument: '$1'"
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
build_consul_local "${sdir}" "${build_os}" "${build_arch}" || return 1
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
|
exit $?
|
51
test/scripts/docker-init.sh
Normal file
51
test/scripts/docker-init.sh
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#!/bin/bash
|
||||||
|
SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
|
||||||
|
pushd $(dirname ${BASH_SOURCE[0]}) > /dev/null
|
||||||
|
SCRIPT_DIR=$(pwd)
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
function usage {
|
||||||
|
cat <<-EOF
|
||||||
|
Usage: ${SCRIPT_NAME} [<options ...>]
|
||||||
|
Description:
|
||||||
|
This script will install the necessary components for a Docker-based
|
||||||
|
test.
|
||||||
|
This script will build the consul-k8s binary on the local system.
|
||||||
|
All the requisite tooling must be installed for this to be
|
||||||
|
successful.
|
||||||
|
Options:
|
||||||
|
-s | --source DIR Path to source to build.
|
||||||
|
Defaults to "${SOURCE_DIR}"
|
||||||
|
-o | --os OSES Space separated string of OS
|
||||||
|
platforms to build.
|
||||||
|
-a | --arch ARCH Space separated string of
|
||||||
|
architectures to build.
|
||||||
|
-h | --help Print this help text.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
function main {
|
||||||
|
declare sdir="${SOURCE_DIR}"
|
||||||
|
declare build_os=""
|
||||||
|
declare build_arch=""
|
||||||
|
|
||||||
|
while test $# -gt 0
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
-h | --help )
|
||||||
|
usage
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
err_usage "ERROR: Unknown argument: '$1'"
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
build_consul_local "${sdir}" "${build_os}" "${build_arch}" || return 1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
|
exit $?
|
18
test/terraform/main.tf
Normal file
18
test/terraform/main.tf
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
provider "google" {
|
||||||
|
project = "${var.project}"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_id" "suffix" {
|
||||||
|
byte_length = 4
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_container_cluster" "cluster" {
|
||||||
|
name = "consul-k8s-${random_id.suffix.dec}"
|
||||||
|
project = "${var.project}"
|
||||||
|
enable_legacy_abac = true
|
||||||
|
initial_node_count = 5
|
||||||
|
zone = "${var.zone}"
|
||||||
|
min_master_version = "${var.k8s_version}"
|
||||||
|
node_version = "${var.k8s_version}"
|
||||||
|
}
|
||||||
|
|
17
test/terraform/variables.tf
Normal file
17
test/terraform/variables.tf
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
variable "k8s_version" {
|
||||||
|
default = "1.10.5-gke.4"
|
||||||
|
description = "The K8S version to use for both master and nodes."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "project" {
|
||||||
|
description = <<EOF
|
||||||
|
Google Cloud Project to launch resources in. This project must have GKE
|
||||||
|
enabled and billing activated. We can't use the GOOGLE_PROJECT environment
|
||||||
|
variable since we need to access the project for other uses.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "zone" {
|
||||||
|
default = "us-central1-a"
|
||||||
|
description = "The zone to launch all the GKE nodes in."
|
||||||
|
}
|
Loading…
Reference in a new issue