mirror of https://github.com/k3s-io/k3s
Merge pull request #6326 from ArtfulCoder/docker_image_creation
Create Docker images for master componentspull/6/head
commit
9b2f835a01
|
@ -91,6 +91,13 @@ readonly DOCKER_DATA_MOUNT_ARGS=(
|
|||
readonly RELEASE_STAGE="${LOCAL_OUTPUT_ROOT}/release-stage"
|
||||
readonly RELEASE_DIR="${LOCAL_OUTPUT_ROOT}/release-tars"
|
||||
|
||||
# The set of master binaries that run in Docker (on Linux)
|
||||
readonly KUBE_DOCKER_WRAPPED_BINARIES=(
|
||||
kube-apiserver
|
||||
kube-controller-manager
|
||||
kube-scheduler
|
||||
)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Basic setup functions
|
||||
|
||||
|
@ -553,6 +560,8 @@ function kube::release::package_server_tarballs() {
|
|||
# KUBE_SERVER_BINARIES array.
|
||||
cp "${KUBE_SERVER_BINARIES[@]/#/${LOCAL_OUTPUT_BINPATH}/${platform}/}" \
|
||||
"${release_stage}/server/bin/"
|
||||
|
||||
kube::release::create_docker_images_for_server "${release_stage}/server/bin";
|
||||
|
||||
# Include the client binaries here too as they are useful debugging tools.
|
||||
local client_bins=("${KUBE_CLIENT_BINARIES[@]}")
|
||||
|
@ -569,6 +578,30 @@ function kube::release::package_server_tarballs() {
|
|||
done
|
||||
}
|
||||
|
||||
# This will take binaries that run on master and creates Docker images
|
||||
# that wrap the binary in them. (One docker image per binary)
|
||||
function kube::release::create_docker_images_for_server() {
|
||||
# Create a sub-shell so that we don't pollute the outer environment
|
||||
(
|
||||
local binary_name;
|
||||
for binary_name in "${KUBE_DOCKER_WRAPPED_BINARIES[@]}"; do
|
||||
echo "+++ Building docker image: ${binary_name}";
|
||||
local docker_file_path="$1/Dockerfile";
|
||||
local binary_file_path="$1/${binary_name}";
|
||||
if [ -f ${docker_file_path} ]; then
|
||||
rm ${docker_file_path};
|
||||
fi;
|
||||
printf " FROM scratch \n ADD ${binary_name} /${binary_name} \n ENTRYPOINT [ \"/${binary_name}\" ]\n" >> ${docker_file_path};
|
||||
local md5_sum=$(md5sum ${binary_file_path} | awk '{print $1}')
|
||||
local docker_image_tag=gcr.io/google_containers/$binary_name:$md5_sum
|
||||
docker build -t "${docker_image_tag}" ${1};
|
||||
docker save ${docker_image_tag} > ${1}/${binary_name}.tar;
|
||||
echo $md5_sum > ${1}/${binary_name}.docker_tag;
|
||||
rm ${docker_file_path};
|
||||
done
|
||||
)
|
||||
}
|
||||
|
||||
# Package up the salt configuration tree. This is an optional helper to getting
|
||||
# a cluster up and running.
|
||||
function kube::release::package_salt_tarball() {
|
||||
|
|
|
@ -24,6 +24,12 @@ set -o pipefail
|
|||
SALT_ROOT=$(dirname "${BASH_SOURCE}")
|
||||
readonly SALT_ROOT
|
||||
|
||||
readonly KUBE_DOCKER_WRAPPED_BINARIES=(
|
||||
kube-apiserver
|
||||
kube-controller-manager
|
||||
kube-scheduler
|
||||
)
|
||||
|
||||
readonly SERVER_BIN_TAR=${1-}
|
||||
if [[ -z "$SERVER_BIN_TAR" ]]; then
|
||||
echo "!!! No binaries specified"
|
||||
|
@ -60,6 +66,15 @@ tar -xz -C "${KUBE_TEMP}" -f "$1"
|
|||
mkdir -p /srv/salt-new/salt/kube-bins
|
||||
cp -v "${KUBE_TEMP}/kubernetes/server/bin/"* /srv/salt-new/salt/kube-bins/
|
||||
|
||||
kube_bin_dir="/srv/salt-new/salt/kube-bins";
|
||||
docker_images_sls_file="/srv/salt-new/pillar/docker-images.sls";
|
||||
for docker_file in "${KUBE_DOCKER_WRAPPED_BINARIES[@]}"; do
|
||||
docker load -i "${kube_bin_dir}/${docker_file}.tar";
|
||||
docker_tag=$(cat ${kube_bin_dir}/${docker_file}.docker_tag);
|
||||
sed -i "s/#${docker_file}_docker_tag_value#/${docker_tag}/" "${docker_images_sls_file}";
|
||||
done
|
||||
|
||||
|
||||
echo "+++ Swapping in new configs"
|
||||
for dir in "${SALTDIRS[@]}"; do
|
||||
if [[ -d "/srv/$dir" ]]; then
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# This file is populated when kubernetes is built.
|
||||
kube-apiserver_docker_tag: #kube-apiserver_docker_tag_value#
|
||||
kube-controller-manager_docker_tag: #kube-controller-manager_docker_tag_value#
|
||||
kube-scheduler_docker_tag: #kube-scheduler_docker_tag_value#
|
|
@ -3,4 +3,5 @@ base:
|
|||
- mine
|
||||
- cluster-params
|
||||
- logging
|
||||
- docker-images
|
||||
- privilege
|
||||
|
|
Loading…
Reference in New Issue