mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #18488 from yifan-gu/dockerized_python
Auto commit by PR queue bot
This commit is contained in:
		@@ -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 "" &
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user