From 86c0613d28d96caeb4b156ae18dfbbd3d1bec946 Mon Sep 17 00:00:00 2001
From: Nemo <me@captnemo.in>
Date: Sun, 13 Jan 2019 00:39:08 +0530
Subject: [PATCH] [k8s] S01E02 Control Plane: bootkube-render

---
 kubernetes.tf                 | 16 ++++++++++++++++
 modules/bootkube/data.tf      |  1 +
 modules/bootkube/main.tf      | 30 ++++++++++++++++++++++++++++++
 modules/bootkube/variables.tf | 29 +++++++++++++++++++++++++++++
 4 files changed, 76 insertions(+)

diff --git a/kubernetes.tf b/kubernetes.tf
index 8ab7a7e..ad5972b 100644
--- a/kubernetes.tf
+++ a/kubernetes.tf
@@ -7,3 +7,19 @@
     docker = "docker.sydney"
   }
 }
+
+# module "kubelet" {
+#   source = "modules/kubelet"
+#   listen_ip =  "${var.ips["dovpn"]}"
+# }
+
+module "bootkube-render" {
+  source   = "modules/bootkube"
+  mode     = "render"
+  host_ip  = "${var.ips["dovpn"]}"
+  k8s_host = "k8s.${var.root-domain}"
+
+  providers = {
+    docker = "docker.sydney"
+  }
+}
diff --git a/modules/bootkube/data.tf b/modules/bootkube/data.tf
new file mode 100644
index 0000000..8b13789 100644
--- /dev/null
+++ a/modules/bootkube/data.tf
@@ -1,0 +1,1 @@
+
diff --git a/modules/bootkube/main.tf b/modules/bootkube/main.tf
new file mode 100644
index 0000000..d4ac1a7 100644
--- /dev/null
+++ a/modules/bootkube/main.tf
@@ -1,0 +1,30 @@
+resource "docker_container" "bootkube" {
+  image = "${docker_image.image.latest}"
+  name  = "bootkube-render"
+
+  volumes {
+    container_path = "/home/.bootkube"
+    volume_name    = "${var.asset_dir_volume_name}"
+  }
+
+  command = [
+    "bootkube",
+    "${var.mode}",
+    "--asset-dir=/home/.bootkube",
+    "--api-servers=https://kubernetes.default:${var.host_port},https://${var.k8s_host},https://${var.host_ip}:${var.host_port}",
+    "--pod-cidr=${var.pod_cidr}",
+  ]
+
+  # "--service-cidr=${var.service_cidr}",
+  restart         = "on-failure"
+  max_retry_count = 5
+}
+
+data "docker_registry_image" "image" {
+  name = "captn3m0/bootkube:v${var.version}"
+}
+
+resource "docker_image" "image" {
+  name          = "${data.docker_registry_image.image.name}"
+  pull_triggers = ["${data.docker_registry_image.image.sha256_digest}"]
+}
diff --git a/modules/bootkube/variables.tf b/modules/bootkube/variables.tf
new file mode 100644
index 0000000..075bd5e 100644
--- /dev/null
+++ a/modules/bootkube/variables.tf
@@ -1,0 +1,29 @@
+// Based on https://github.com/v1k0d3n/dockerfiles/tree/master/bootkube
+
+variable "asset_dir_volume_name" {
+  default = "k8s-assets"
+}
+
+variable "k8s_host" {
+  description = "kubenetes hostname"
+}
+
+variable "host_port" {
+  default = "8443"
+}
+
+variable "host_ip" {}
+
+variable "pod_cidr" {
+  default = "10.25.0.0/16"
+}
+
+variable "service_cidr" {
+  default = "10.96.0.0/16"
+}
+
+variable "mode" {}
+
+variable "version" {
+  default = "0.14.0"
+}
--
rgit 0.1.5