Skip to content

Commit 4c54241

Browse files
committed
Support token authentication for network proxy
1 parent debb1ed commit 4c54241

File tree

5 files changed

+56
-13
lines changed

5 files changed

+56
-13
lines changed

cluster/gce/addons/konnectivity-agent/daemonset.yaml renamed to cluster/gce/addons/konnectivity-agent/konnectivity-agent-ds.yaml

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ spec:
2222
tolerations:
2323
- key: "CriticalAddonsOnly"
2424
operator: "Exists"
25-
hostNetwork: true
26-
volumes:
27-
- name: pki
28-
hostPath:
29-
path: /etc/srv/kubernetes/pki/konnectivity-agent
3025
containers:
3126
- image: us.gcr.io/k8s-artifacts-prod/kas-network-proxy/proxy-agent:v0.0.4
3227
name: konnectivity-agent
@@ -35,7 +30,8 @@ spec:
3530
"--logtostderr=true",
3631
"--ca-cert=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt",
3732
"--proxy-server-host=__APISERVER_IP__",
38-
"--proxy-server-port=8132"
33+
"--proxy-server-port=8132",
34+
"--service-account-token-path=/var/run/secrets/tokens/konnectivity-agent-token"
3935
]
4036
env:
4137
- name: POD_NAME
@@ -50,10 +46,20 @@ spec:
5046
limits:
5147
cpu: 50m
5248
memory: 30Mi
49+
volumeMounts:
50+
- mountPath: /var/run/secrets/tokens
51+
name: konnectivity-agent-token
5352
livenessProbe:
5453
httpGet:
55-
host: 127.0.0.1
5654
port: 8093
5755
path: /healthz
5856
initialDelaySeconds: 15
5957
timeoutSeconds: 15
58+
serviceAccountName: konnectivity-agent
59+
volumes:
60+
- name: konnectivity-agent-token
61+
projected:
62+
sources:
63+
- serviceAccountToken:
64+
path: konnectivity-agent-token
65+
audience: system:konnectivity-server
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: konnectivity-agent
5+
namespace: kube-system
6+
labels:
7+
kubernetes.io/cluster-service: "true"
8+
addonmanager.kubernetes.io/mode: Reconcile
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: system:konnectivity-server
5+
labels:
6+
kubernetes.io/cluster-service: "true"
7+
addonmanager.kubernetes.io/mode: Reconcile
8+
roleRef:
9+
apiGroup: rbac.authorization.k8s.io
10+
kind: ClusterRole
11+
name: system:auth-delegator
12+
subjects:
13+
- apiGroup: rbac.authorization.k8s.io
14+
kind: User
15+
name: system:konnectivity-server

cluster/gce/gci/configure-helper.sh

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -652,8 +652,13 @@ function create-master-auth {
652652
append_or_replace_prefixed_line "${known_tokens_csv}" "${GCE_GLBC_TOKEN}," "system:controller:glbc,uid:system:controller:glbc"
653653
fi
654654
if [[ -n "${ADDON_MANAGER_TOKEN:-}" ]]; then
655-
append_or_replace_prefixed_line "${known_tokens_csv}" "${ADDON_MANAGER_TOKEN}," "system:addon-manager,uid:system:addon-manager,system:masters"
655+
append_or_replace_prefixed_line "${known_tokens_csv}" "${ADDON_MANAGER_TOKEN}," "system:addon-manager,uid:system:addon-manager,system:masters"
656656
fi
657+
if [[ -n "${KONNECTIVITY_SERVER_TOKEN:-}" ]]; then
658+
append_or_replace_prefixed_line "${known_tokens_csv}" "${KONNECTIVITY_SERVER_TOKEN}," "system:konnectivity-server,uid:system:konnectivity-server"
659+
create-kubeconfig "konnectivity-server" ${KONNECTIVITY_SERVER_TOKEN}
660+
fi
661+
657662
if [[ -n "${EXTRA_STATIC_AUTH_COMPONENTS:-}" ]]; then
658663
# Create a static Bearer token and kubeconfig for extra, comma-separated components.
659664
IFS="," read -r -a extra_components <<< "${EXTRA_STATIC_AUTH_COMPONENTS:-}"
@@ -810,7 +815,8 @@ egressSelections:
810815
proxyProtocol: HTTPConnect
811816
transport:
812817
uds:
813-
udsName: /etc/srv/kubernetes/konnectivity/konnectivity-server.socket
818+
udsName: /etc/srv/kubernetes/konnectivity-server/konnectivity-server.socket
819+
814820
- name: master
815821
connection:
816822
proxyProtocol: Direct
@@ -1652,13 +1658,17 @@ function prepare-konnectivity-server-manifest {
16521658
params+=("--log-file=/var/log/konnectivity-server.log")
16531659
params+=("--logtostderr=false")
16541660
params+=("--log-file-max-size=0")
1655-
params+=("--uds-name=/etc/srv/kubernetes/konnectivity/konnectivity-server.socket")
1661+
params+=("--uds-name=/etc/srv/kubernetes/konnectivity-server/konnectivity-server.socket")
16561662
params+=("--cluster-cert=/etc/srv/kubernetes/pki/apiserver.crt")
16571663
params+=("--cluster-key=/etc/srv/kubernetes/pki/apiserver.key")
16581664
params+=("--mode=http-connect")
16591665
params+=("--server-port=0")
16601666
params+=("--agent-port=$1")
16611667
params+=("--admin-port=$2")
1668+
params+=("--agent-namespace=kube-system")
1669+
params+=("--agent-service-account=konnectivity-agent")
1670+
params+=("--kubeconfig=/etc/srv/kubernetes/konnectivity-server/kubeconfig")
1671+
params+=("--authentication-audience=system:konnectivity-server")
16621672
konnectivity_args=""
16631673
for param in "${params[@]}"; do
16641674
konnectivity_args+=", \"${param}\""
@@ -2469,7 +2479,7 @@ function setup-node-termination-handler-manifest {
24692479
}
24702480

24712481
function setup-konnectivity-agent-manifest {
2472-
local -r manifest="/etc/kubernetes/addons/konnectivity-agent/daemonset.yaml"
2482+
local -r manifest="/etc/kubernetes/addons/konnectivity-agent/konnectivity-agent-ds.yaml"
24732483
sed -i "s|__APISERVER_IP__|${KUBERNETES_MASTER_NAME}|g" "${manifest}"
24742484
}
24752485

@@ -2777,6 +2787,10 @@ function main() {
27772787
if [[ "${ENABLE_APISERVER_INSECURE_PORT:-false}" != "true" ]]; then
27782788
KUBE_BOOTSTRAP_TOKEN="$(secure_random 32)"
27792789
fi
2790+
if [[ "${ENABLE_EGRESS_VIA_KONNECTIVITY_SERVICE:-false}" == "true" ]]; then
2791+
KONNECTIVITY_SERVER_TOKEN="$(secure_random 32)"
2792+
fi
2793+
27802794

27812795
setup-os-params
27822796
config-ip-firewall

cluster/gce/manifests/konnectivity-server.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ spec:
3939
mountPath: /etc/srv/kubernetes/pki
4040
readOnly: true
4141
- name: konnectivity-uds
42-
mountPath: /etc/srv/kubernetes/konnectivity
42+
mountPath: /etc/srv/kubernetes/konnectivity-server
4343
readOnly: false
4444
volumes:
4545
- name: varlogkonnectivityserver
@@ -51,5 +51,5 @@ spec:
5151
path: /etc/srv/kubernetes/pki
5252
- name: konnectivity-uds
5353
hostPath:
54-
path: /etc/srv/kubernetes/konnectivity
54+
path: /etc/srv/kubernetes/konnectivity-server
5555
type: DirectoryOrCreate

0 commit comments

Comments
 (0)