-
Notifications
You must be signed in to change notification settings - Fork 41.5k
mesos/docker automated local cluster deployment #10049
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
certs |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Copyright 2015 The Kubernetes Authors All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# Wait for a file to exist in the filesystem. | ||
# Block up to the timeout duration in seconds (default: 10). | ||
# Usage: await-health-check [-t=<duration>] <address> | ||
# Requires: timeout, file | ||
|
||
set -o errexit | ||
set -o nounset | ||
set -o pipefail | ||
|
||
duration=10 | ||
if [[ "${1:-}" == "-t="* ]]; then | ||
duration="${1:3}" | ||
[ -z "${duration}" ] && echo "Invalid duration supplied" && exit 1 | ||
shift | ||
fi | ||
|
||
file="$1" | ||
[ -z "$file" ] && echo "No file supplied" && exit 1 | ||
|
||
echo "Waiting (up to ${duration}s) for ${file} to exist" | ||
if ! timeout "${duration}" bash -c "while [ ! -f \"${file}\" ]; do sleep 0.5; done"; then | ||
echo "Timed out" | ||
exit 1 | ||
fi | ||
|
||
echo "File ${file} exists now!" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
#!/usr/bin/env bash | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. missing copyright? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (Resolved.) |
||
# Copyright 2015 The Kubernetes Authors All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# Wait for a service to accept connections. | ||
# Block up to the timeout duration in seconds (default: 10). | ||
# Usage: await-health-check [-t=<duration>] <address> | ||
# Requires: timeout, health-check | ||
|
||
set -o errexit | ||
set -o nounset | ||
set -o pipefail | ||
|
||
duration=10 | ||
if [[ "${1:-}" == "-t="* ]]; then | ||
duration="${1:3}" | ||
[ -z "${duration}" ] && echo "Invalid duration supplied" && exit 1 | ||
shift | ||
fi | ||
|
||
address=${1:-} | ||
[ -z "${address}" ] && echo "No address supplied" && exit 1 | ||
|
||
bin=$(cd $(dirname $0) && pwd -P) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consistency: KUBE_ROOT instead of relative. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The scripts in common/bin are added into the docker images, where they're not in the KUBE_ROOT anymore. |
||
|
||
echo "Waiting (up to ${duration}s) for ${address} to be healthy" | ||
if ! timeout "${duration}" bash -c "while ! ${bin}/health-check ${address}; do sleep 0.5; done"; then | ||
echo "Timed out" | ||
exit 1 | ||
fi | ||
|
||
echo "Health check of ${address} succeeded!" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
#!/usr/bin/env bash | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. missing copyright? |
||
# Copyright 2015 The Kubernetes Authors All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# Curl an endpoint and expect it to respond with status 200. | ||
# Usage: health-check <address> | ||
|
||
set -o errexit | ||
set -o nounset | ||
set -o pipefail | ||
|
||
address=${1:-} | ||
[ -z "${address}" ] && echo "No address supplied" && exit 1 | ||
|
||
status=$(curl -s -o /dev/null -w '%{http_code}' ${address}) | ||
if [[ "${status}" == '200' ]]; then | ||
exit 0 | ||
fi | ||
if [[ "${status}" == '000' ]]; then | ||
exit 7 | ||
fi | ||
|
||
exit 1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#!/usr/bin/env bash | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. missing copyright? |
||
# Copyright 2015 The Kubernetes Authors All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# Resolve an IP from a hostname (using getent) | ||
# Usage: resolveip <hostname> | ||
# Requires: getent | ||
# TODO: Mac support | ||
|
||
set -o errexit | ||
set -o nounset | ||
set -o pipefail | ||
|
||
hostname=$1 | ||
[ -z "${hostname}" ] && echo "No hostname supplied" && exit 1 | ||
|
||
getent hosts "${hostname}" | cut -d' ' -f1 | sort -u | tail -1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#!/bin/bash | ||
|
||
# Copyright 2015 The Kubernetes Authors All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
## Contains configuration values for interacting with the mesos/docker cluster | ||
|
||
NUM_MINIONS=${NUM_MINIONS:-2} | ||
INSTANCE_PREFIX="${INSTANCE_PREFIX:-kubernetes}" | ||
MASTER_NAME="${INSTANCE_PREFIX}-master" | ||
MINION_NAMES=($(eval echo ${INSTANCE_PREFIX}-minion-{1..${NUM_MINIONS}})) | ||
|
||
SERVICE_CLUSTER_IP_RANGE=10.10.10.0/24 | ||
|
||
# Extra options to set on the Docker command line. This is useful for setting | ||
# --insecure-registry for local registries. | ||
DOCKER_OPTS="" | ||
|
||
# Optional: Deploy cluster DNS. | ||
#ENABLE_CLUSTER_DNS=false | ||
ENABLE_CLUSTER_DNS=true | ||
DNS_SERVER_IP="10.10.10.10" | ||
DNS_DOMAIN="cluster.local" | ||
DNS_REPLICAS=1 | ||
|
||
# Optional: Deploy cluster web interface. | ||
ENABLE_CLUSTER_UI=true |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#!/bin/bash | ||
|
||
# Copyright 2015 The Kubernetes Authors All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
## Contains configuration values for interacting with the docker-compose cluster in test mode | ||
#Set NUM_MINIONS to minimum required for testing. | ||
NUM_MINIONS=2 | ||
|
||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../../.. | ||
source "${KUBE_ROOT}/cluster/${KUBERNETES_PROVIDER}/config-default.sh" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
#!/bin/bash | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you have a bug to get rid of this entirely? It's against where add-ons are headed, and definitely doesn't work with any existing add-on upgrade mechanics. It's closer to where add-ons started when I first filed #3579. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In the current state the whole docker-compose setup for k8sm is for fire-and-forget test clusters. Upgrades of addons doesn't play a role here (yet). I would prefer to defer any change to this part to a later PR. I have added a ticket: d2iq-archive/kubernetes-mesos#424 |
||
|
||
# Copyright 2015 The Kubernetes Authors All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# Deploy the addon services after the cluster is available | ||
# TODO: integrate with or use /cluster/saltbase/salt/kube-addons/kube-addons.sh | ||
# Requires: | ||
# ENABLE_CLUSTER_DNS (Optional) - 'Y' to deploy kube-dns | ||
# KUBE_SERVER (Optional) - url to the api server for configuring kube-dns | ||
|
||
set -o errexit | ||
set -o nounset | ||
set -o pipefail | ||
|
||
KUBE_ROOT=$(cd "$(dirname "${BASH_SOURCE}")/../../.." && pwd) | ||
source "${KUBE_ROOT}/cluster/${KUBERNETES_PROVIDER}/${KUBE_CONFIG_FILE-"config-default.sh"}" | ||
source "${KUBE_ROOT}/cluster/${KUBERNETES_PROVIDER}/util-temp-dir.sh" | ||
kubectl="${KUBE_ROOT}/cluster/kubectl.sh" | ||
|
||
|
||
function deploy_dns { | ||
echo "Deploying DNS Addon" 1>&2 | ||
local workspace=$(pwd) | ||
|
||
# Process salt pillar templates manually | ||
sed -e "s/{{ pillar\['dns_replicas'\] }}/${DNS_REPLICAS}/g;s/{{ pillar\['dns_domain'\] }}/${DNS_DOMAIN}/g" "${KUBE_ROOT}/cluster/addons/dns/skydns-rc.yaml.in" > "${workspace}/skydns-rc.yaml" | ||
sed -e "s/{{ pillar\['dns_server'\] }}/${DNS_SERVER_IP}/g" "${KUBE_ROOT}/cluster/addons/dns/skydns-svc.yaml.in" > "${workspace}/skydns-svc.yaml" | ||
|
||
# Use kubectl to create skydns rc and service | ||
"${kubectl}" create -f "${workspace}/skydns-rc.yaml" | ||
"${kubectl}" create -f "${workspace}/skydns-svc.yaml" | ||
} | ||
|
||
function deploy_ui { | ||
echo "Deploying UI Addon" 1>&2 | ||
|
||
# Use kubectl to create ui rc and service | ||
"${kubectl}" create -f "${KUBE_ROOT}/cluster/addons/kube-ui/kube-ui-rc.yaml" | ||
"${kubectl}" create -f "${KUBE_ROOT}/cluster/addons/kube-ui/kube-ui-svc.yaml" | ||
} | ||
|
||
# create the kube-system namespace | ||
"${kubectl}" create -f "${KUBE_ROOT}/cluster/mesos/docker/kube-system-ns.yaml" | ||
|
||
if [ "${ENABLE_CLUSTER_DNS}" == true ]; then | ||
cluster::mesos::docker::run_in_temp_dir 'k8sm-dns' 'deploy_dns' | ||
fi | ||
|
||
if [ "${ENABLE_CLUSTER_UI}" == true ]; then | ||
deploy_ui | ||
fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing copyright?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(Resolved.)