mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 21:17:23 +00:00
Merge pull request #18488 from yifan-gu/dockerized_python
Auto commit by PR queue bot
This commit is contained in:
commit
3f91f18a55
@ -820,6 +820,16 @@ function kube::release::write_addon_docker_images_for_server() {
|
|||||||
) &
|
) &
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [[ ! -z "${BUILD_PYTHON_IMAGE:-}" ]]; then
|
||||||
|
(
|
||||||
|
kube::log::status "Building Docker python image"
|
||||||
|
|
||||||
|
local img_name=python:2.7-slim-pyyaml
|
||||||
|
docker build -t "${img_name}" "${KUBE_ROOT}/cluster/addons/python-image"
|
||||||
|
docker save "${img_name}" > "${1}/${img_name}.tar"
|
||||||
|
) &
|
||||||
|
fi
|
||||||
|
|
||||||
kube::util::wait-for-jobs || { kube::log::error "unable to pull or write addon image"; return 1; }
|
kube::util::wait-for-jobs || { kube::log::error "unable to pull or write addon image"; return 1; }
|
||||||
kube::log::status "Addon images done"
|
kube::log::status "Addon images done"
|
||||||
)
|
)
|
||||||
|
@ -58,6 +58,8 @@ of:
|
|||||||
pods.
|
pods.
|
||||||
1. Note that this cannot happen for Services as their version is always empty.
|
1. Note that this cannot happen for Services as their version is always empty.
|
||||||
|
|
||||||
|
Note that in order to run the updator script, python is required on the machine.
|
||||||
|
For OS distros that don't have python installed, a python container will be used.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
3
cluster/addons/python-image/Dockerfile
Normal file
3
cluster/addons/python-image/Dockerfile
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
FROM python:2.7-slim
|
||||||
|
|
||||||
|
RUN pip install pyyaml
|
6
cluster/addons/python-image/README.md
Normal file
6
cluster/addons/python-image/README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Python image
|
||||||
|
|
||||||
|
The python image here is used by OS distros that don't have python installed to
|
||||||
|
run python scripts to parse the yaml files in the addon updator script.
|
||||||
|
|
||||||
|
[]()
|
@ -98,7 +98,7 @@ function log() {
|
|||||||
function get-object-kind-from-file() {
|
function get-object-kind-from-file() {
|
||||||
# prints to stdout, so log cannot be used
|
# prints to stdout, so log cannot be used
|
||||||
#WARNING: only yaml is supported
|
#WARNING: only yaml is supported
|
||||||
cat $1 | python -c '''
|
cat $1 | ${PYTHON} -c '''
|
||||||
try:
|
try:
|
||||||
import pipes,sys,yaml
|
import pipes,sys,yaml
|
||||||
y = yaml.load(sys.stdin)
|
y = yaml.load(sys.stdin)
|
||||||
@ -120,7 +120,7 @@ function get-object-nsname-from-file() {
|
|||||||
# prints to stdout, so log cannot be used
|
# prints to stdout, so log cannot be used
|
||||||
#WARNING: only yaml is supported
|
#WARNING: only yaml is supported
|
||||||
#addons that do not specify a namespace are assumed to be in "default".
|
#addons that do not specify a namespace are assumed to be in "default".
|
||||||
cat $1 | python -c '''
|
cat $1 | ${PYTHON} -c '''
|
||||||
try:
|
try:
|
||||||
import pipes,sys,yaml
|
import pipes,sys,yaml
|
||||||
y = yaml.load(sys.stdin)
|
y = yaml.load(sys.stdin)
|
||||||
|
@ -24,6 +24,16 @@ ADDON_CHECK_INTERVAL_SEC=${TEST_ADDON_CHECK_INTERVAL_SEC:-600}
|
|||||||
SYSTEM_NAMESPACE=kube-system
|
SYSTEM_NAMESPACE=kube-system
|
||||||
token_dir=${TOKEN_DIR:-/srv/kubernetes}
|
token_dir=${TOKEN_DIR:-/srv/kubernetes}
|
||||||
|
|
||||||
|
function ensure_python() {
|
||||||
|
if ! python --version > /dev/null 2>&1; then
|
||||||
|
echo "No python on the machine, will use a python image"
|
||||||
|
local -r PYTHON_IMAGE=python:2.7-slim-pyyaml
|
||||||
|
export PYTHON="docker run --interactive --rm --net=none ${PYTHON_IMAGE} python"
|
||||||
|
else
|
||||||
|
export PYTHON=python
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function create-kubeconfig-secret() {
|
function create-kubeconfig-secret() {
|
||||||
local -r token=$1
|
local -r token=$1
|
||||||
local -r username=$2
|
local -r username=$2
|
||||||
@ -152,11 +162,16 @@ function load-docker-images() {
|
|||||||
# managed result is of that. Start everything below that directory.
|
# managed result is of that. Start everything below that directory.
|
||||||
echo "== Kubernetes addon manager started at $(date -Is) with ADDON_CHECK_INTERVAL_SEC=${ADDON_CHECK_INTERVAL_SEC} =="
|
echo "== Kubernetes addon manager started at $(date -Is) with ADDON_CHECK_INTERVAL_SEC=${ADDON_CHECK_INTERVAL_SEC} =="
|
||||||
|
|
||||||
|
# Load any images that we may need
|
||||||
|
load-docker-images /srv/salt/kube-addons-images
|
||||||
|
|
||||||
|
ensure_python
|
||||||
|
|
||||||
# Load the kube-env, which has all the environment variables we care
|
# Load the kube-env, which has all the environment variables we care
|
||||||
# about, in a flat yaml format.
|
# about, in a flat yaml format.
|
||||||
kube_env_yaml="/var/cache/kubernetes-install/kube_env.yaml"
|
kube_env_yaml="/var/cache/kubernetes-install/kube_env.yaml"
|
||||||
if [ ! -e "${kubelet_kubeconfig_file}" ]; then
|
if [ ! -e "${kubelet_kubeconfig_file}" ]; then
|
||||||
eval $(python -c '''
|
eval $(${PYTHON} -c '''
|
||||||
import pipes,sys,yaml
|
import pipes,sys,yaml
|
||||||
|
|
||||||
for k,v in yaml.load(sys.stdin).iteritems():
|
for k,v in yaml.load(sys.stdin).iteritems():
|
||||||
@ -164,8 +179,6 @@ for k,v in yaml.load(sys.stdin).iteritems():
|
|||||||
''' < "${kube_env_yaml}")
|
''' < "${kube_env_yaml}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Load any images that we may need
|
|
||||||
load-docker-images /srv/salt/kube-addons-images
|
|
||||||
|
|
||||||
# Create the namespace that will be used to host the cluster-level add-ons.
|
# Create the namespace that will be used to host the cluster-level add-ons.
|
||||||
start_addon /etc/kubernetes/addons/namespace.yaml 100 10 "" &
|
start_addon /etc/kubernetes/addons/namespace.yaml 100 10 "" &
|
||||||
|
Loading…
Reference in New Issue
Block a user