Skip to content

Commit 6610260

Browse files
authored
Merge pull request kubernetes#78466 from yuwenma/revert-77904-revert-76396-reapply-75624
Revert "Revert "[Re-Apply][Distroless] Convert the GCE manifests for master containers.""
2 parents 820b796 + ccbb88f commit 6610260

File tree

5 files changed

+71
-27
lines changed

5 files changed

+71
-27
lines changed

cluster/gce/gci/apiserver_manifest_test.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,12 @@ func (c *kubeAPIServerManifestTestCase) invokeTest(e kubeAPIServerEnv, kubeEnv s
9494

9595
func TestEncryptionProviderFlag(t *testing.T) {
9696
var (
97-
// command": [
98-
// "/bin/sh", - Index 0
99-
// "-c", - Index 1
100-
// "exec /usr/local/bin/kube-apiserver " - Index 2
101-
execArgsIndex = 2
97+
// command": [
98+
// "/usr/local/bin/kube-apiserver " - Index 0,
99+
// "--flag1=val1", - Index 1,
100+
// "--flag2=val2", - Index 2,
101+
// ...
102+
// "--flagN=valN", - Index N,
102103
encryptionConfigFlag = "--encryption-provider-config"
103104
)
104105

@@ -132,10 +133,15 @@ func TestEncryptionProviderFlag(t *testing.T) {
132133

133134
c.invokeTest(e, deployHelperEnv)
134135

135-
execArgs := c.pod.Spec.Containers[0].Command[execArgsIndex]
136-
flagIsInArg := strings.Contains(execArgs, encryptionConfigFlag)
137-
flag := fmt.Sprintf("%s=%s", encryptionConfigFlag, e.EncryptionProviderConfigPath)
138-
136+
var flagIsInArg bool
137+
var flag, execArgs string
138+
for _, execArgs = range c.pod.Spec.Containers[0].Args[1:] {
139+
if strings.Contains(execArgs, encryptionConfigFlag) {
140+
flagIsInArg = true
141+
flag = fmt.Sprintf("%s=%s", encryptionConfigFlag, e.EncryptionProviderConfigPath)
142+
break
143+
}
144+
}
139145
switch {
140146
case tc.wantFlag && !flagIsInArg:
141147
t.Fatalf("Got %q,\n want flags to contain %q", execArgs, flag)

cluster/gce/gci/configure-helper.sh

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,24 @@ set -o errexit
2525
set -o nounset
2626
set -o pipefail
2727

28+
function convert-manifest-params {
29+
# A helper function to convert the manifest args from a string to a list of
30+
# flag arguments.
31+
# Old format:
32+
# command=["/bin/sh", "-c", "exec KUBE_EXEC_BINARY --param1=val1 --param2-val2"].
33+
# New format:
34+
# command=["KUBE_EXEC_BINARY"] # No shell dependencies.
35+
# args=["--param1=val1", "--param2-val2"]
36+
IFS=' ' read -ra FLAGS <<< "$1"
37+
params=""
38+
for flag in "${FLAGS[@]}"; do
39+
params+="\n\"$flag\","
40+
done
41+
if [ ! -z $params ]; then
42+
echo "${params::-1}" # drop trailing comma
43+
fi
44+
}
45+
2846
function setup-os-params {
2947
# Reset core_pattern. On GCI, the default core_pattern pipes the core dumps to
3048
# /sbin/crash_reporter which is more restrictive in saving crash dumps. So for
@@ -2048,6 +2066,10 @@ function start-kube-apiserver {
20482066
# params is passed by reference, so no "$"
20492067
setup-etcd-encryption "${src_file}" params
20502068

2069+
params+=" --log-file=${KUBE_API_SERVER_LOG_PATH:-/var/log/kube-apiserver.log}"
2070+
params+=" --logtostderr=false"
2071+
params+=" --log-file-max-size=0"
2072+
params="$(convert-manifest-params "${params}")"
20512073
# Evaluate variables.
20522074
local -r kube_apiserver_docker_tag="${KUBE_API_SERVER_DOCKER_TAG:-$(cat /home/kubernetes/kube-docker-files/kube-apiserver.docker_tag)}"
20532075
sed -i -e "s@{{params}}@${params}@g" "${src_file}"
@@ -2195,7 +2217,8 @@ function update-node-label() {
21952217
function start-kube-controller-manager {
21962218
echo "Start kubernetes controller-manager"
21972219
create-kubeconfig "kube-controller-manager" ${KUBE_CONTROLLER_MANAGER_TOKEN}
2198-
prepare-log-file /var/log/kube-controller-manager.log
2220+
local LOG_PATH=/var/log/kube-controller-manager.log
2221+
prepare-log-file "${LOG_PATH}"
21992222
# Calculate variables and assemble the command line.
22002223
local params="${CONTROLLER_MANAGER_TEST_LOG_LEVEL:-"--v=2"} ${CONTROLLER_MANAGER_TEST_ARGS:-} ${CLOUD_CONFIG_OPT}"
22012224
params+=" --use-service-account-credentials"
@@ -2223,7 +2246,7 @@ function start-kube-controller-manager {
22232246
params+=" --concurrent-service-syncs=${CONCURRENT_SERVICE_SYNCS}"
22242247
fi
22252248
if [[ "${NETWORK_PROVIDER:-}" == "kubenet" ]]; then
2226-
params+=" --allocate-node-cidrs=true"
2249+
params+=" --allocate-node-cidrs"
22272250
elif [[ -n "${ALLOCATE_NODE_CIDRS:-}" ]]; then
22282251
params+=" --allocate-node-cidrs=${ALLOCATE_NODE_CIDRS}"
22292252
fi
@@ -2254,9 +2277,14 @@ function start-kube-controller-manager {
22542277
params+=" --pv-recycler-pod-template-filepath-hostpath=$PV_RECYCLER_OVERRIDE_TEMPLATE"
22552278
fi
22562279
if [[ -n "${RUN_CONTROLLERS:-}" ]]; then
2257-
params+=" --controllers=${RUN_CONTROLLERS}"
2258-
fi
2259-
2280+
# Trim the `RUN_CONTROLLERS` value. This field is quoted which is
2281+
# incompatible with the `convert-manifest-params` format.
2282+
params+=" --controllers=${RUN_CONTROLLERS//\'}"
2283+
fi
2284+
params+=" --log-file=${LOG_PATH}"
2285+
params+=" --logtostderr=false"
2286+
params+=" --log-file-max-size=0"
2287+
params="$(convert-manifest-params "${params}")"
22602288
local -r kube_rc_docker_tag=$(cat /home/kubernetes/kube-docker-files/kube-controller-manager.docker_tag)
22612289
local container_env=""
22622290
if [[ -n "${ENABLE_CACHE_MUTATION_DETECTOR:-}" ]]; then
@@ -2291,7 +2319,8 @@ function start-kube-controller-manager {
22912319
function start-kube-scheduler {
22922320
echo "Start kubernetes scheduler"
22932321
create-kubeconfig "kube-scheduler" ${KUBE_SCHEDULER_TOKEN}
2294-
prepare-log-file /var/log/kube-scheduler.log
2322+
local LOG_PATH=/var/log/kube-scheduler.log
2323+
prepare-log-file "${LOG_PATH}"
22952324

22962325
# Calculate variables and set them in the manifest.
22972326
params="${SCHEDULER_TEST_LOG_LEVEL:-"--v=2"} ${SCHEDULER_TEST_ARGS:-}"
@@ -2307,6 +2336,11 @@ function start-kube-scheduler {
23072336
params+=" --use-legacy-policy-config"
23082337
params+=" --policy-config-file=/etc/srv/kubernetes/kube-scheduler/policy-config"
23092338
fi
2339+
2340+
params+=" --log-file=${LOG_PATH}"
2341+
params+=" --logtostderr=false"
2342+
params+=" --log-file-max-size=0"
2343+
params="$(convert-manifest-params "${params}")"
23102344
local -r kube_scheduler_docker_tag=$(cat "${KUBE_HOME}/kube-docker-files/kube-scheduler.docker_tag")
23112345

23122346
# Remove salt comments and replace variables with values.

cluster/gce/manifests/kube-apiserver.manifest

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@
2525
}
2626
},
2727
"command": [
28-
"/bin/sh",
29-
"-c",
30-
"exec /usr/local/bin/kube-apiserver {{params}} --allow-privileged={{pillar['allow_privileged']}} 1>>/var/log/kube-apiserver.log 2>&1"
31-
],
28+
"/usr/local/bin/kube-apiserver"
29+
],
30+
"args": [
31+
"--allow-privileged={{pillar['allow_privileged']}}",
32+
{{params}}
33+
],
3234
{{container_env}}
3335
"livenessProbe": {
3436
"httpGet": {

cluster/gce/manifests/kube-controller-manager.manifest

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@
2525
}
2626
},
2727
"command": [
28-
"/bin/sh",
29-
"-c",
30-
"exec /usr/local/bin/kube-controller-manager {{params}} 1>>/var/log/kube-controller-manager.log 2>&1"
31-
],
28+
"/usr/local/bin/kube-controller-manager"
29+
],
30+
"args": [
31+
{{params}}
32+
],
3233
{{container_env}}
3334
"livenessProbe": {
3435
"httpGet": {

cluster/gce/manifests/kube-scheduler.manifest

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@
2525
}
2626
},
2727
"command": [
28-
"/bin/sh",
29-
"-c",
30-
"exec /usr/local/bin/kube-scheduler {{params}} 1>>/var/log/kube-scheduler.log 2>&1"
31-
],
28+
"/usr/local/bin/kube-scheduler"
29+
],
30+
"args": [
31+
{{params}}
32+
],
3233
"livenessProbe": {
3334
"httpGet": {
3435
"host": "127.0.0.1",

0 commit comments

Comments
 (0)