Skip to content

Commit ccbb88f

Browse files
committed
Revert "Revert "[Re-Apply][Distroless] Convert the GCE manifests for master containers.""
1 parent 6d70e7f commit ccbb88f

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
@@ -1842,6 +1860,10 @@ function start-kube-apiserver {
18421860
# params is passed by reference, so no "$"
18431861
setup-etcd-encryption "${src_file}" params
18441862

1863+
params+=" --log-file=${KUBE_API_SERVER_LOG_PATH:-/var/log/kube-apiserver.log}"
1864+
params+=" --logtostderr=false"
1865+
params+=" --log-file-max-size=0"
1866+
params="$(convert-manifest-params "${params}")"
18451867
# Evaluate variables.
18461868
local -r kube_apiserver_docker_tag="${KUBE_API_SERVER_DOCKER_TAG:-$(cat /home/kubernetes/kube-docker-files/kube-apiserver.docker_tag)}"
18471869
sed -i -e "s@{{params}}@${params}@g" "${src_file}"
@@ -2023,7 +2045,8 @@ function apply-encryption-config() {
20232045
function start-kube-controller-manager {
20242046
echo "Start kubernetes controller-manager"
20252047
create-kubeconfig "kube-controller-manager" ${KUBE_CONTROLLER_MANAGER_TOKEN}
2026-
prepare-log-file /var/log/kube-controller-manager.log
2048+
local LOG_PATH=/var/log/kube-controller-manager.log
2049+
prepare-log-file "${LOG_PATH}"
20272050
# Calculate variables and assemble the command line.
20282051
local params="${CONTROLLER_MANAGER_TEST_LOG_LEVEL:-"--v=2"} ${CONTROLLER_MANAGER_TEST_ARGS:-} ${CLOUD_CONFIG_OPT}"
20292052
params+=" --use-service-account-credentials"
@@ -2051,7 +2074,7 @@ function start-kube-controller-manager {
20512074
params+=" --concurrent-service-syncs=${CONCURRENT_SERVICE_SYNCS}"
20522075
fi
20532076
if [[ "${NETWORK_PROVIDER:-}" == "kubenet" ]]; then
2054-
params+=" --allocate-node-cidrs=true"
2077+
params+=" --allocate-node-cidrs"
20552078
elif [[ -n "${ALLOCATE_NODE_CIDRS:-}" ]]; then
20562079
params+=" --allocate-node-cidrs=${ALLOCATE_NODE_CIDRS}"
20572080
fi
@@ -2082,9 +2105,14 @@ function start-kube-controller-manager {
20822105
params+=" --pv-recycler-pod-template-filepath-hostpath=$PV_RECYCLER_OVERRIDE_TEMPLATE"
20832106
fi
20842107
if [[ -n "${RUN_CONTROLLERS:-}" ]]; then
2085-
params+=" --controllers=${RUN_CONTROLLERS}"
2086-
fi
2087-
2108+
# Trim the `RUN_CONTROLLERS` value. This field is quoted which is
2109+
# incompatible with the `convert-manifest-params` format.
2110+
params+=" --controllers=${RUN_CONTROLLERS//\'}"
2111+
fi
2112+
params+=" --log-file=${LOG_PATH}"
2113+
params+=" --logtostderr=false"
2114+
params+=" --log-file-max-size=0"
2115+
params="$(convert-manifest-params "${params}")"
20882116
local -r kube_rc_docker_tag=$(cat /home/kubernetes/kube-docker-files/kube-controller-manager.docker_tag)
20892117
local container_env=""
20902118
if [[ -n "${ENABLE_CACHE_MUTATION_DETECTOR:-}" ]]; then
@@ -2119,7 +2147,8 @@ function start-kube-controller-manager {
21192147
function start-kube-scheduler {
21202148
echo "Start kubernetes scheduler"
21212149
create-kubeconfig "kube-scheduler" ${KUBE_SCHEDULER_TOKEN}
2122-
prepare-log-file /var/log/kube-scheduler.log
2150+
local LOG_PATH=/var/log/kube-scheduler.log
2151+
prepare-log-file "${LOG_PATH}"
21232152

21242153
# Calculate variables and set them in the manifest.
21252154
params="${SCHEDULER_TEST_LOG_LEVEL:-"--v=2"} ${SCHEDULER_TEST_ARGS:-}"
@@ -2135,6 +2164,11 @@ function start-kube-scheduler {
21352164
params+=" --use-legacy-policy-config"
21362165
params+=" --policy-config-file=/etc/srv/kubernetes/kube-scheduler/policy-config"
21372166
fi
2167+
2168+
params+=" --log-file=${LOG_PATH}"
2169+
params+=" --logtostderr=false"
2170+
params+=" --log-file-max-size=0"
2171+
params="$(convert-manifest-params "${params}")"
21382172
local -r kube_scheduler_docker_tag=$(cat "${KUBE_HOME}/kube-docker-files/kube-scheduler.docker_tag")
21392173

21402174
# 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)