mirror of
https://github.com/lukaszraczylo/rpi-home-cluster-setup.git
synced 2026-10-14 00:58:38 +00:00
123 lines
2.5 KiB
Terraform
123 lines
2.5 KiB
Terraform
## 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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |