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