Skip to content

Commit 5f8d290

Browse files
authored
Merge pull request kubernetes#75675 from mwwolters/addon-manager-kubeconfig
Added function to create kubeconfig for addon-manager
2 parents ef550e6 + 1456979 commit 5f8d290

File tree

4 files changed

+88
-100
lines changed

4 files changed

+88
-100
lines changed

cluster/gce/gci/configure-helper.sh

Lines changed: 43 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,9 @@ function create-master-auth {
597597
if [[ -n "${GCE_GLBC_TOKEN:-}" ]]; then
598598
append_or_replace_prefixed_line "${known_tokens_csv}" "${GCE_GLBC_TOKEN}," "system:controller:glbc,uid:system:controller:glbc"
599599
fi
600+
if [[ -n "${ADDON_MANAGER_TOKEN:-}" ]]; then
601+
append_or_replace_prefixed_line "${known_tokens_csv}" "${ADDON_MANAGER_TOKEN}," "system:addon-manager,uid:system:addon-manager,system:masters"
602+
fi
600603
local use_cloud_config="false"
601604
cat <<EOF >/etc/gce.conf
602605
[global]
@@ -954,6 +957,32 @@ EOF
954957
fi
955958
}
956959

960+
function create-kubeconfig {
961+
local component=$1
962+
local token=$2
963+
echo "Creating kubeconfig file for component ${component}"
964+
mkdir -p /etc/srv/kubernetes/${component}
965+
cat <<EOF >/etc/srv/kubernetes/${component}/kubeconfig
966+
apiVersion: v1
967+
kind: Config
968+
users:
969+
- name: ${component}
970+
user:
971+
token: ${token}
972+
clusters:
973+
- name: local
974+
cluster:
975+
insecure-skip-tls-verify: true
976+
server: https://localhost:443
977+
contexts:
978+
- context:
979+
cluster: local
980+
user: ${component}
981+
name: ${component}
982+
current-context: ${component}
983+
EOF
984+
}
985+
957986
# Arg 1: the IP address of the API server
958987
function create-kubelet-kubeconfig() {
959988
local apiserver_address="${1}"
@@ -1027,102 +1056,6 @@ current-context: service-account-context
10271056
EOF
10281057
}
10291058

1030-
function create-kubecontrollermanager-kubeconfig {
1031-
echo "Creating kube-controller-manager kubeconfig file"
1032-
mkdir -p /etc/srv/kubernetes/kube-controller-manager
1033-
cat <<EOF >/etc/srv/kubernetes/kube-controller-manager/kubeconfig
1034-
apiVersion: v1
1035-
kind: Config
1036-
users:
1037-
- name: kube-controller-manager
1038-
user:
1039-
token: ${KUBE_CONTROLLER_MANAGER_TOKEN}
1040-
clusters:
1041-
- name: local
1042-
cluster:
1043-
insecure-skip-tls-verify: true
1044-
server: https://localhost:443
1045-
contexts:
1046-
- context:
1047-
cluster: local
1048-
user: kube-controller-manager
1049-
name: service-account-context
1050-
current-context: service-account-context
1051-
EOF
1052-
}
1053-
1054-
function create-l7-lb-controller-kubeconfig {
1055-
echo "Creating l7-lb-controller kubeconfig file"
1056-
mkdir -p /etc/srv/kubernetes/l7-lb-controller
1057-
cat <<EOF >/etc/srv/kubernetes/l7-lb-controller/kubeconfig
1058-
apiVersion: v1
1059-
kind: Config
1060-
users:
1061-
- name: l7-lb-controller
1062-
user:
1063-
token: ${GCE_GLBC_TOKEN}
1064-
clusters:
1065-
- name: local
1066-
cluster:
1067-
insecure-skip-tls-verify: true
1068-
server: https://localhost:443
1069-
contexts:
1070-
- context:
1071-
cluster: local
1072-
user: l7-lb-controller
1073-
name: l7-lb-controller
1074-
current-context: l7-lb-controller
1075-
EOF
1076-
}
1077-
1078-
function create-kubescheduler-kubeconfig {
1079-
echo "Creating kube-scheduler kubeconfig file"
1080-
mkdir -p /etc/srv/kubernetes/kube-scheduler
1081-
cat <<EOF >/etc/srv/kubernetes/kube-scheduler/kubeconfig
1082-
apiVersion: v1
1083-
kind: Config
1084-
users:
1085-
- name: kube-scheduler
1086-
user:
1087-
token: ${KUBE_SCHEDULER_TOKEN}
1088-
clusters:
1089-
- name: local
1090-
cluster:
1091-
insecure-skip-tls-verify: true
1092-
server: https://localhost:443
1093-
contexts:
1094-
- context:
1095-
cluster: local
1096-
user: kube-scheduler
1097-
name: kube-scheduler
1098-
current-context: kube-scheduler
1099-
EOF
1100-
}
1101-
1102-
function create-clusterautoscaler-kubeconfig {
1103-
echo "Creating cluster-autoscaler kubeconfig file"
1104-
mkdir -p /etc/srv/kubernetes/cluster-autoscaler
1105-
cat <<EOF >/etc/srv/kubernetes/cluster-autoscaler/kubeconfig
1106-
apiVersion: v1
1107-
kind: Config
1108-
users:
1109-
- name: cluster-autoscaler
1110-
user:
1111-
token: ${KUBE_CLUSTER_AUTOSCALER_TOKEN}
1112-
clusters:
1113-
- name: local
1114-
cluster:
1115-
insecure-skip-tls-verify: true
1116-
server: https://localhost:443
1117-
contexts:
1118-
- context:
1119-
cluster: local
1120-
user: cluster-autoscaler
1121-
name: cluster-autoscaler
1122-
current-context: cluster-autoscaler
1123-
EOF
1124-
}
1125-
11261059
function create-kubescheduler-policy-config {
11271060
echo "Creating kube-scheduler policy config file"
11281061
mkdir -p /etc/srv/kubernetes/kube-scheduler
@@ -2060,7 +1993,7 @@ function apply-encryption-config() {
20601993
# DOCKER_REGISTRY
20611994
function start-kube-controller-manager {
20621995
echo "Start kubernetes controller-manager"
2063-
create-kubecontrollermanager-kubeconfig
1996+
create-kubeconfig "kube-controller-manager" ${KUBE_CONTROLLER_MANAGER_TOKEN}
20641997
prepare-log-file /var/log/kube-controller-manager.log
20651998
# Calculate variables and assemble the command line.
20661999
local params="${CONTROLLER_MANAGER_TEST_LOG_LEVEL:-"--v=2"} ${CONTROLLER_MANAGER_TEST_ARGS:-} ${CLOUD_CONFIG_OPT}"
@@ -2156,7 +2089,7 @@ function start-kube-controller-manager {
21562089
# DOCKER_REGISTRY
21572090
function start-kube-scheduler {
21582091
echo "Start kubernetes scheduler"
2159-
create-kubescheduler-kubeconfig
2092+
create-kubeconfig "kube-scheduler" ${KUBE_SCHEDULER_TOKEN}
21602093
prepare-log-file /var/log/kube-scheduler.log
21612094

21622095
# Calculate variables and set them in the manifest.
@@ -2194,7 +2127,7 @@ function start-cluster-autoscaler {
21942127
if [[ "${ENABLE_CLUSTER_AUTOSCALER:-}" == "true" ]]; then
21952128
echo "Start kubernetes cluster autoscaler"
21962129
setup-addon-manifests "addons" "rbac/cluster-autoscaler"
2197-
create-clusterautoscaler-kubeconfig
2130+
create-kubeconfig "cluster-autoscaler" ${KUBE_CLUSTER_AUTOSCALER_TOKEN}
21982131
prepare-log-file /var/log/cluster-autoscaler.log
21992132

22002133
# Remove salt comments and replace variables with values
@@ -2532,6 +2465,8 @@ function start-kube-addons {
25322465
local -r src_dir="${KUBE_HOME}/kube-manifests/kubernetes/gci-trusty"
25332466
local -r dst_dir="/etc/kubernetes/addons"
25342467

2468+
create-kubeconfig "addon-manager" ${ADDON_MANAGER_TOKEN}
2469+
25352470
# prep addition kube-up specific rbac objects
25362471
setup-addon-manifests "addons" "rbac/kubelet-api-auth"
25372472
setup-addon-manifests "addons" "rbac/kubelet-cert-rotation"
@@ -2765,7 +2700,7 @@ function start-lb-controller {
27652700
prepare-log-file /var/log/glbc.log
27662701
setup-addon-manifests "addons" "cluster-loadbalancing/glbc"
27672702
setup-addon-manifests "addons" "rbac/cluster-loadbalancing/glbc"
2768-
create-l7-lb-controller-kubeconfig
2703+
create-kubeconfig "l7-lb-controller" ${GCE_GLBC_TOKEN}
27692704

27702705
local -r src_manifest="${KUBE_HOME}/kube-manifests/kubernetes/gci-trusty/glbc.manifest"
27712706
local -r dest_manifest="/etc/kubernetes/manifests/glbc.manifest"
@@ -2884,6 +2819,12 @@ spec:
28842819
EOF
28852820
}
28862821

2822+
function wait-till-apiserver-ready() {
2823+
until kubectl get nodes; do
2824+
sleep 5
2825+
done
2826+
}
2827+
28872828
########### Main Function ###########
28882829
function main() {
28892830
echo "Start to configure instance for kubernetes"
@@ -2938,6 +2879,7 @@ function main() {
29382879
if [[ "${ENABLE_L7_LOADBALANCING:-}" == "glbc" ]]; then
29392880
GCE_GLBC_TOKEN="$(secure_random 32)"
29402881
fi
2882+
ADDON_MANAGER_TOKEN="$(secure_random 32)"
29412883

29422884
setup-os-params
29432885
config-ip-firewall
@@ -2982,6 +2924,7 @@ function main() {
29822924
start-kube-apiserver
29832925
start-kube-controller-manager
29842926
start-kube-scheduler
2927+
wait-till-apiserver-ready
29852928
start-kube-addons
29862929
start-cluster-autoscaler
29872930
start-lb-controller

cluster/gce/manifests/kube-addon-manager.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,21 @@ spec:
3030
- mountPath: /var/log
3131
name: varlog
3232
readOnly: false
33+
- mountPath: /etc/srv/kubernetes/addon-manager/
34+
name: srvkube
35+
readOnly: true
3336
env:
3437
- name: KUBECTL_EXTRA_PRUNE_WHITELIST
3538
value: {{kubectl_extra_prune_whitelist}}
39+
- name: KUBECTL_OPTS
40+
value: '--kubeconfig=/etc/srv/kubernetes/addon-manager/kubeconfig'
3641
volumes:
3742
- hostPath:
3843
path: /etc/kubernetes/
3944
name: addons
4045
- hostPath:
4146
path: /var/log
4247
name: varlog
48+
- hostPath:
49+
path: /etc/srv/kubernetes/addon-manager/
50+
name: srvkube

test/kubemark/resources/manifests/kube-addon-manager.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ spec:
2424
readOnly: true
2525
- name: varlog
2626
mountPath: /var/log/kube-addon-manager.log
27+
- mountPath: /etc/srv/kubernetes/addon-manager/
28+
name: srvkube
29+
readOnly: true
30+
env:
31+
- name: KUBECTL_OPTS
32+
value: '--kubeconfig=/etc/srv/kubernetes/addon-manager/kubeconfig'
2733
volumes:
2834
- name: addons
2935
hostPath:
@@ -32,3 +38,6 @@ spec:
3238
hostPath:
3339
path: /var/log/kube-addon-manager.log
3440
type: FileOrCreate
41+
- hostPath:
42+
path: /etc/srv/kubernetes/addon-manager/
43+
name: srvkube

test/kubemark/resources/start-kubemark-master.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,30 @@ current-context: kube-scheduler
187187
EOF
188188
}
189189

190+
function create-addonmanager-kubeconfig {
191+
echo "Creating addonmanager kubeconfig file"
192+
mkdir -p "${KUBE_ROOT}/k8s_auth_data/addon-manager"
193+
cat <<EOF >"${KUBE_ROOT}/k8s_auth_data/addon-manager/kubeconfig"
194+
apiVersion: v1
195+
kind: Config
196+
users:
197+
- name: addon-manager
198+
user:
199+
token: ${ADDON_MANAGER_TOKEN}
200+
clusters:
201+
- name: local
202+
cluster:
203+
insecure-skip-tls-verify: true
204+
server: https://localhost:443
205+
contexts:
206+
- context:
207+
cluster: local
208+
user: addon-manager
209+
name: addon-manager
210+
current-context: addon-manager
211+
EOF
212+
}
213+
190214
function assemble-docker-flags {
191215
echo "Assemble docker command line flags"
192216
local docker_opts="-p /var/run/docker.pid --iptables=false --ip-masq=false"
@@ -681,6 +705,10 @@ if [[ ! -f "${KUBE_ROOT}/k8s_auth_data/kube-scheduler/kubeconfig" ]]; then
681705
create-kubescheduler-kubeconfig
682706
fi
683707

708+
ADDON_MANAGER_TOKEN=$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64 | tr -d "=+/" | dd bs=32 count=1 2>/dev/null)
709+
echo "${ADDON_MANAGER_TOKEN},system:addon-manager,admin,system:masters" >> "${KUBE_ROOT}/k8s_auth_data/known_tokens.csv"
710+
create-addonmanager-kubeconfig
711+
684712
# Mount master PD for etcd and create symbolic links to it.
685713
{
686714
main_etcd_mount_point="/mnt/disks/master-pd"

0 commit comments

Comments
 (0)