Skip to content
This repository was archived by the owner on Oct 31, 2019. It is now read-only.

Commit f152708

Browse files
committed
Add support for 'admin' user bearer token that can also be used for authentication.
1 parent 5b0295e commit f152708

File tree

12 files changed

+49
-2
lines changed

12 files changed

+49
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ ca_cert | (generated) | String value of
214214
ca_key | (generated) | String value of PEM encoded CA private key
215215
api_server_private_key | (generated) | String value of PEM private key of API server
216216
api_server_cert | (generated) | String value of PEM encoded certificate for API server
217+
api_server_admin_token | (generated) | String value of the admin user's bearer token for API server
217218
ssh_private_key | (generated) | String value of PEM encoded SSH key pair for instances
218219
ssh_public_key_openssh | (generated) | String value of OpenSSH encoded SSH key pair key for instances
219220

instances/k8smaster/cloud_init/bootstrap.template.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ write_files:
7575
content: |
7676
${kubelet_service_content}
7777
78-
# Kube certs
78+
# Kube certs, tokens
7979
- path: "/etc/kubernetes/ssl/ca.pem"
8080
permissions: "0600"
8181
encoding: b64
@@ -91,6 +91,11 @@ write_files:
9191
encoding: b64
9292
content: |
9393
${api-server-key-content}
94+
- path: "/etc/kubernetes/ssl/token_auth.csv"
95+
permissions: "0600"
96+
encoding: b64
97+
content: |
98+
${api-token_auth_template_content}
9499
95100
runcmd:
96101
- echo "Running k8s init..."

instances/k8smaster/datasources.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,14 @@ data "template_file" "cnibridge-sh" {
112112
template = "${file("${path.module}/scripts/cni-bridge.sh")}"
113113
}
114114

115+
data "template_file" "token_auth_file" {
116+
template = "${file("${path.module}/scripts/token_auth.csv")}"
117+
118+
vars {
119+
token_admin = "${var.k8s_apiserver_token_admin}"
120+
}
121+
}
122+
115123
data "template_file" "kube_master_cloud_init_file" {
116124
template = "${file("${path.module}/cloud_init/bootstrap.template.yaml")}"
117125

@@ -130,6 +138,7 @@ data "template_file" "kube_master_cloud_init_file" {
130138
ca-pem-content = "${base64encode(var.root_ca_pem)}"
131139
api-server-key-content = "${base64encode(var.api_server_private_key_pem)}"
132140
api-server-cert-content = "${base64encode(var.api_server_cert_pem)}"
141+
api-token_auth_template_content = "${base64encode(data.template_file.token_auth_file.rendered)}"
133142
docker_service_content = "${base64encode(data.template_file.docker-service.rendered)}"
134143
flannel_service_content = "${base64encode(data.template_file.flannel-service.rendered)}"
135144
cnibridge_service_content = "${base64encode(data.template_file.cnibridge-service.rendered)}"

instances/k8smaster/manifests/kube-apiserver.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ spec:
3232
- --etcd-quorum-read=true
3333
- --kubelet-client-certificate=/etc/kubernetes/ssl/apiserver.pem
3434
- --kubelet-client-key=/etc/kubernetes/ssl/apiserver-key.pem
35-
#- --token-auth-file=/etc/kubernetes/tokens.csv
35+
- --token-auth-file=/etc/kubernetes/ssl/token_auth.csv
3636
ports:
3737
- containerPort: 443
3838
hostPort: 443
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
${token_admin},admin,admin,"system:masters"

instances/k8smaster/variables.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ variable "etcd_lb" {}
5555
variable "root_ca_pem" {}
5656
variable "api_server_private_key_pem" {}
5757
variable "api_server_cert_pem" {}
58+
variable "k8s_apiserver_token_admin" {}
5859

5960
# etcd
6061
variable "etcd_discovery_url" {}

k8s-baremetal.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module "k8s-tls" {
66
api_server_cert = "${var.api_server_cert}"
77
ca_cert = "${var.ca_cert}"
88
ca_key = "${var.ca_key}"
9+
api_server_admin_token = "${var.api_server_admin_token}"
910
master_lb_public_ip = "${module.k8smaster-public-lb.ip_addresses[0]}"
1011
ssh_private_key = "${var.ssh_private_key}"
1112
ssh_public_key_openssh = "${var.ssh_public_key_openssh}"
@@ -254,6 +255,7 @@ module "instances-k8smaster-ad1" {
254255
api_server_cert_pem = "${module.k8s-tls.api_server_cert_pem}"
255256
api_server_count = "${var.k8sMasterAd1Count + var.k8sMasterAd2Count + var.k8sMasterAd3Count}"
256257
api_server_private_key_pem = "${module.k8s-tls.api_server_private_key_pem}"
258+
k8s_apiserver_token_admin = "${module.k8s-tls.api_server_admin_token}"
257259
availability_domain = "${lookup(data.baremetal_identity_availability_domains.ADs.availability_domains[0],"name")}"
258260
compartment_ocid = "${var.compartment_ocid}"
259261
display_name_prefix = "k8s-master-ad1"
@@ -282,6 +284,7 @@ module "instances-k8smaster-ad2" {
282284
api_server_cert_pem = "${module.k8s-tls.api_server_cert_pem}"
283285
api_server_count = "${var.k8sMasterAd1Count + var.k8sMasterAd2Count + var.k8sMasterAd3Count}"
284286
api_server_private_key_pem = "${module.k8s-tls.api_server_private_key_pem}"
287+
k8s_apiserver_token_admin = "${module.k8s-tls.api_server_admin_token}"
285288
availability_domain = "${lookup(data.baremetal_identity_availability_domains.ADs.availability_domains[1],"name")}"
286289
compartment_ocid = "${var.compartment_ocid}"
287290
display_name_prefix = "k8s-master-ad2"
@@ -310,6 +313,7 @@ module "instances-k8smaster-ad3" {
310313
api_server_cert_pem = "${module.k8s-tls.api_server_cert_pem}"
311314
api_server_count = "${var.k8sMasterAd1Count + var.k8sMasterAd2Count + var.k8sMasterAd3Count}"
312315
api_server_private_key_pem = "${module.k8s-tls.api_server_private_key_pem}"
316+
k8s_apiserver_token_admin = "${module.k8s-tls.api_server_admin_token}"
313317
availability_domain = "${lookup(data.baremetal_identity_availability_domains.ADs.availability_domains[2],"name")}"
314318
compartment_ocid = "${var.compartment_ocid}"
315319
display_name_prefix = "k8s-master-ad3"

outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ output "api_server_cert_pem" {
102102
value = "${module.k8s-tls.api_server_cert_pem}"
103103
}
104104

105+
output "api_server_admin_token" {
106+
value = "${module.k8s-tls.api_server_admin_token}"
107+
}
108+
105109
output "ssh_private_key" {
106110
value = "${module.k8s-tls.ssh_private_key}"
107111
}

tls/main.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,9 @@ resource "tls_private_key" "ssh" {
8888
count = "${var.ssh_private_key == "" ? 1 : 0}"
8989
rsa_bits = 2048
9090
}
91+
92+
93+
resource "random_id" "token-auth" {
94+
count = "${var.api_server_admin_token == "" ? 1 : 0}"
95+
byte_length = 16
96+
}

tls/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ output "api_server_cert_pem" {
1414
value = "${var.api_server_cert == "" ? join(" ", tls_locally_signed_cert.api-server.*.cert_pem) : var.api_server_cert}"
1515
}
1616

17+
output "api_server_admin_token" {
18+
value = "${var.api_server_admin_token == "" ? join(" ", random_id.token-auth.*.hex) : var.api_server_admin_token}"
19+
}
20+
1721
output "ssh_private_key" {
1822
value = "${var.ssh_private_key == "" ? join(" ", tls_private_key.ssh.*.private_key_pem) : var.ssh_private_key}"
1923
}

0 commit comments

Comments
 (0)