nebula/modules/bootkube/main.tf

204 lines
7.5 KiB
HCL

resource "docker_container" "bootkube" {
image = "${docker_image.image.latest}"
name = "bootkube"
volumes {
container_path = "/etc/kubernetes/manifests"
host_path = "/etc/kubernetes/manifests"
}
# bootstrap manifests
upload {
content = "${file("${var.asset-dir}/bootstra-manifests/bootstrap-apiserver.yaml")}"
file = "/home/.bootkube/bootstra-manifests/bootstrap-apiserver.yaml"
}
upload {
content = "${file("${var.asset-dir}/bootstra-manifests/bootstrap-controller-manager.yaml")}"
file = "/home/.bootkube/bootstra-manifests/bootstrap-controller-manager.yaml"
}
upload {
content = "${file("${var.asset-dir}/bootstra-manifests/bootstrap-scheduler.yaml")}"
file = "/home/.bootkube/bootstra-manifests/bootstrap-scheduler.yaml"
}
# Cluster Networking
upload {
content = "${file("${var.asset-dir}/manifests-networking/cluster-role-binding.yaml")}"
file = "/home/.bootkube/manifests-networking/cluster-role-binding.yaml"
}
upload {
content = "${file("${var.asset-dir}/manifests-networking/cluster-role.yaml")}"
file = "/home/.bootkube/manifests-networking/cluster-role.yaml"
}
upload {
content = "${file("${var.asset-dir}/manifests-networking/config.yaml")}"
file = "/home/.bootkube/manifests-networking/config.yaml"
}
upload {
content = "${file("${var.asset-dir}/manifests-networking/daemonset.yaml")}"
file = "/home/.bootkube/manifests-networking/daemonset.yaml"
}
upload {
content = "${file("${var.asset-dir}/manifests-networkingservice-account.yaml")}"
file = "/home/.bootkube/manifests-networking/service-account.yaml"
}
# TLS
upload {
file = "/home/.bootkube/tls/service-account.pub"
content = "${file("${var.asset-dir}/tls/service-account.pub")}"
}
upload {
content = "${file("${var.asset-dir}/tls/ca.key")}"
file = "/home/.bootkube/tls/ca.key"
}
upload {
content = "${file("${var.asset-dir}/tls/ca.crt")}"
file = "/home/.bootkube/tls/ca.crt"
}
upload {
content = "${file("${var.asset-dir}/tls/apiserver.key")}"
file = "/home/.bootkube/tls/apiserver.key"
}
upload {
content = "${file("${var.asset-dir}/tls/apiserver.crt")}"
file = "/home/.bootkube/tls/apiserver.crt"
}
upload {
content = "${var.assets["kubelet_cert"]}"
file = "/home/.bootkube/tls/kubelet.crt"
}
upload {
content = "${var.assets["kubelet_key"]}"
file = "/home/.bootkube/tls/kubelet.key"
}
# TODO: Generate Filenames Dynamically
# TODO: Check if this is needed at all
upload {
content = "${file("${var.asset-dir}/auth/k8s.bb8.fun-config")}"
file = "/home/.bootkube/auth/k8s.bb8.fun-config"
}
# auth/kubeconfig-kubelet
upload {
content = "${var.assets["kubeconfig-kubelet"]}"
file = "/home/.bootkube/auth/kubeconfig-kubelet"
}
# Manifests Directory
upload {
file = "/home/.bootkube/manifests/kube-apiserver-role-binding.yaml"
content = "${file("${var.asset-dir}/manifests/kube-apiserver-role-binding.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-apiserver-sa.yaml"
content = "${file("${var.asset-dir}/manifests/kube-apiserver-sa.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-apiserver-secret.yaml"
content = "${file("${var.asset-dir}/manifests/kube-apiserver-secret.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-apiserver.yaml"
content = "${file("${var.asset-dir}/manifests/kube-apiserver.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kubeconfig-in-cluster.yaml"
content = "${file("${var.asset-dir}/manifests/kubeconfig-in-cluster.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-controller-manager-disruption.yaml"
content = "${file("${var.asset-dir}/manifests/kube-controller-manager-disruption.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-controller-manager-role-binding.yaml"
content = "${file("${var.asset-dir}/manifests/kube-controller-manager-role-binding.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-controller-manager-sa.yaml"
content = "${file("${var.asset-dir}/manifests/kube-controller-manager-sa.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-controller-manager-secret.yaml"
content = "${file("${var.asset-dir}/manifests/kube-controller-manager-secret.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-controller-manager.yaml"
content = "${file("${var.asset-dir}/manifests/kube-controller-manager.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kubelet-nodes-cluster-role-binding.yaml"
content = "${file("${var.asset-dir}/manifests/kubelet-nodes-cluster-role-binding.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-proxy-role-binding.yaml"
content = "${file("${var.asset-dir}/manifests/kube-proxy-role-binding.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-proxy-sa.yaml"
content = "${file("${var.asset-dir}/manifests/kube-proxy-sa.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-proxy.yaml"
content = "${file("${var.asset-dir}/manifests/kube-proxy.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-scheduler-disruption.yaml"
content = "${file("${var.asset-dir}/manifests/kube-scheduler-disruption.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-scheduler-role-binding.yaml"
content = "${file("${var.asset-dir}/manifests/kube-scheduler-role-binding.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-scheduler-sa.yaml"
content = "${file("${var.asset-dir}/manifests/kube-scheduler-sa.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-scheduler-volume-scheduler-role-binding.yaml"
content = "${file("${var.asset-dir}/manifests/kube-scheduler-volume-scheduler-role-binding.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/kube-scheduler.yaml"
content = "${file("${var.asset-dir}/manifests/kube-scheduler.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/pod-checkpointer-cluster-role-binding.yaml"
content = "${file("${var.asset-dir}/manifests/pod-checkpointer-cluster-role-binding.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/pod-checkpointer-cluster-role.yaml"
content = "${file("${var.asset-dir}/manifests/pod-checkpointer-cluster-role.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/pod-checkpointer-role-binding.yaml"
content = "${file("${var.asset-dir}/manifests/pod-checkpointer-role-binding.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/pod-checkpointer-role.yaml"
content = "${file("${var.asset-dir}/manifests/pod-checkpointer-role.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/pod-checkpointer-sa.yaml"
content = "${file("${var.asset-dir}/manifests/pod-checkpointer-sa.yaml")}"
}
upload {
file = "/home/.bootkube/manifests/pod-checkpointer.yaml"
content = "${file("${var.asset-dir}/manifests/pod-checkpointer.yaml")}"
}
command = [
"/bootkube",
"start",
"--asset-dir=/home/.bootkube",
]
network_mode = "host"
restart = "on-failure"
max_retry_count = 5
}
data "docker_registry_image" "image" {
name = "quay.io/coreos/bootkube:v${var.version}"
}
resource "docker_image" "image" {
name = "${data.docker_registry_image.image.name}"
pull_triggers = ["${data.docker_registry_image.image.sha256_digest}"]
}