mirror of
https://github.com/lukaszraczylo/rpi-home-cluster-setup.git
synced 2026-10-18 01:27:31 +00:00
Home K8S setup
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
## Install metrics server
|
||||
module "dashboard_metrics" {
|
||||
depends_on = [kubernetes_service.traefik_svc]
|
||||
source = "./modules/dashboard-metrics"
|
||||
}
|
||||
|
||||
## Install dashboard
|
||||
resource "helm_release" "k8s_dashboard" {
|
||||
name = "k8s-dashboard"
|
||||
namespace = "default"
|
||||
repository = "https://kubernetes.github.io/dashboard/"
|
||||
chart = "kubernetes-dashboard"
|
||||
|
||||
set {
|
||||
name = "protocolHttp"
|
||||
value = "true"
|
||||
}
|
||||
set {
|
||||
name = "ingress.enabled"
|
||||
value = "false"
|
||||
}
|
||||
set {
|
||||
name = "rbac.create"
|
||||
value = "true"
|
||||
}
|
||||
set {
|
||||
name = "serviceAccount.create"
|
||||
value = "true"
|
||||
}
|
||||
set {
|
||||
name = "service.externalPort"
|
||||
value = "1337"
|
||||
}
|
||||
set {
|
||||
name = "networkPolicy.enabled"
|
||||
value = "true"
|
||||
}
|
||||
set {
|
||||
name = "podLabels.app"
|
||||
value = "k8s-dashboard"
|
||||
}
|
||||
set {
|
||||
name = "metrics-server.enabled"
|
||||
value = "false"
|
||||
}
|
||||
set {
|
||||
name = "metricsScraper.enabled"
|
||||
value = "true"
|
||||
}
|
||||
set {
|
||||
name = "metricsScraper.image.repository"
|
||||
value = "kubernetesui/metrics-scraper-arm"
|
||||
}
|
||||
set {
|
||||
name = "metricsScraper.image.tag"
|
||||
value = "latest"
|
||||
}
|
||||
}
|
||||
|
||||
resource "kubernetes_cluster_role_binding" "k8s_dashboard_role" {
|
||||
metadata {
|
||||
name = "kubernetes-dashboard"
|
||||
}
|
||||
role_ref {
|
||||
api_group = "rbac.authorization.k8s.io"
|
||||
kind = "ClusterRole"
|
||||
name = "cluster-admin"
|
||||
}
|
||||
subject {
|
||||
kind = "ServiceAccount"
|
||||
name = "k8s-dashboard-kubernetes-dashboard"
|
||||
namespace = "default"
|
||||
}
|
||||
}
|
||||
|
||||
# Commented out as traffic runs via traefik anyway.
|
||||
|
||||
# resource "kubernetes_service" "k8s_dashboard_svc" {
|
||||
# depends_on = [ kubernetes_config_map.metallb_cfg_map ]
|
||||
# metadata {
|
||||
# namespace = "default"
|
||||
# name = "dashboard"
|
||||
# annotations = {
|
||||
# "metallb.universe.tf/address-pool": "default"
|
||||
# }
|
||||
# }
|
||||
# spec {
|
||||
# port {
|
||||
# port = 80
|
||||
# target_port = 9090
|
||||
# }
|
||||
# load_balancer_ip = "192.168.50.200"
|
||||
# selector = {
|
||||
# "app.kubernetes.io/instance": "k8s-dashboard"
|
||||
# }
|
||||
# type = "LoadBalancer"
|
||||
# }
|
||||
# }
|
||||
|
||||
resource "kubernetes_ingress" "traefik_dashboard_routing" {
|
||||
metadata {
|
||||
name = "traefik-k8s-dashboard"
|
||||
annotations = {
|
||||
"kubernetes.io/ingress.class" : "traefik"
|
||||
}
|
||||
namespace = "default"
|
||||
}
|
||||
|
||||
spec {
|
||||
rule {
|
||||
host = "k8s.local"
|
||||
http {
|
||||
path {
|
||||
path = "/"
|
||||
backend {
|
||||
service_name = "k8s-dashboard-kubernetes-dashboard"
|
||||
service_port = 1337
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user