Adding k8s metrics server
This commit is contained in:
parent
ddc971f6df
commit
36126132db
|
|
@ -455,6 +455,7 @@ Useful checks after a rebuild:
|
||||||
export KUBECONFIG=/home/jv/.kube/config
|
export KUBECONFIG=/home/jv/.kube/config
|
||||||
|
|
||||||
kubectl get nodes
|
kubectl get nodes
|
||||||
|
kubectl top nodes
|
||||||
kubectl -n argocd get applications
|
kubectl -n argocd get applications
|
||||||
kubectl -n container-registry get pods
|
kubectl -n container-registry get pods
|
||||||
kubectl -n website-production get pods -o wide
|
kubectl -n website-production get pods -o wide
|
||||||
|
|
|
||||||
|
|
@ -455,6 +455,7 @@ Useful checks after a rebuild:
|
||||||
export KUBECONFIG=/home/jv/.kube/config
|
export KUBECONFIG=/home/jv/.kube/config
|
||||||
|
|
||||||
kubectl get nodes
|
kubectl get nodes
|
||||||
|
kubectl top nodes
|
||||||
kubectl -n argocd get applications
|
kubectl -n argocd get applications
|
||||||
kubectl -n container-registry get pods
|
kubectl -n container-registry get pods
|
||||||
kubectl -n website-production get pods -o wide
|
kubectl -n website-production get pods -o wide
|
||||||
|
|
|
||||||
|
|
@ -425,6 +425,73 @@ EOT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "helm_release" "metrics_server" {
|
||||||
|
for_each = var.metrics_server.enabled ? { enabled = true } : {}
|
||||||
|
|
||||||
|
depends_on = [null_resource.calico_ready]
|
||||||
|
name = "metrics-server"
|
||||||
|
repository = var.metrics_server.repository
|
||||||
|
chart = var.metrics_server.chart
|
||||||
|
version = var.metrics_server.version
|
||||||
|
namespace = var.metrics_server.namespace
|
||||||
|
create_namespace = false
|
||||||
|
timeout = 600
|
||||||
|
wait = true
|
||||||
|
|
||||||
|
values = [
|
||||||
|
yamlencode({
|
||||||
|
args = [
|
||||||
|
"--kubelet-insecure-tls",
|
||||||
|
]
|
||||||
|
nodeSelector = local.prometheus_stack_node_selector
|
||||||
|
resources = {
|
||||||
|
requests = {
|
||||||
|
cpu = "50m"
|
||||||
|
memory = "128Mi"
|
||||||
|
}
|
||||||
|
limits = {
|
||||||
|
memory = "256Mi"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "null_resource" "metrics_server_ready" {
|
||||||
|
for_each = var.metrics_server.enabled ? { enabled = true } : {}
|
||||||
|
|
||||||
|
depends_on = [helm_release.metrics_server]
|
||||||
|
|
||||||
|
triggers = {
|
||||||
|
kubeconfig_path = var.kubeconfig_path
|
||||||
|
namespace = var.metrics_server.namespace
|
||||||
|
version = var.metrics_server.version
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "local-exec" {
|
||||||
|
interpreter = ["/bin/bash", "-lc"]
|
||||||
|
command = <<EOT
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
kubectl --kubeconfig "${self.triggers.kubeconfig_path}" wait --for=condition=Available --timeout=180s apiservice/v1beta1.metrics.k8s.io
|
||||||
|
kubectl --kubeconfig "${self.triggers.kubeconfig_path}" -n "${self.triggers.namespace}" rollout status deployment/metrics-server --timeout=300s
|
||||||
|
|
||||||
|
elapsed=0
|
||||||
|
until kubectl --kubeconfig "${self.triggers.kubeconfig_path}" top nodes >/dev/null 2>&1; do
|
||||||
|
if [ "$elapsed" -ge 180 ]; then
|
||||||
|
echo "Timed out waiting for metrics-server to serve node metrics." >&2
|
||||||
|
kubectl --kubeconfig "${self.triggers.kubeconfig_path}" get apiservice v1beta1.metrics.k8s.io -o yaml || true
|
||||||
|
kubectl --kubeconfig "${self.triggers.kubeconfig_path}" -n "${self.triggers.namespace}" get pods -l app.kubernetes.io/name=metrics-server -o wide || true
|
||||||
|
kubectl --kubeconfig "${self.triggers.kubeconfig_path}" -n "${self.triggers.namespace}" logs deployment/metrics-server --tail=120 || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep 10
|
||||||
|
elapsed=$((elapsed + 10))
|
||||||
|
done
|
||||||
|
EOT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
resource "kubernetes_manifest" "nodelocal_dns_service_account" {
|
resource "kubernetes_manifest" "nodelocal_dns_service_account" {
|
||||||
for_each = var.nodelocal_dns.enabled ? { enabled = true } : {}
|
for_each = var.nodelocal_dns.enabled ? { enabled = true } : {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,24 @@ variable "nodelocal_dns" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "metrics_server" {
|
||||||
|
type = object({
|
||||||
|
enabled = bool
|
||||||
|
repository = string
|
||||||
|
chart = string
|
||||||
|
version = string
|
||||||
|
namespace = string
|
||||||
|
})
|
||||||
|
|
||||||
|
default = {
|
||||||
|
enabled = true
|
||||||
|
repository = "https://kubernetes-sigs.github.io/metrics-server/"
|
||||||
|
chart = "metrics-server"
|
||||||
|
version = "3.13.1"
|
||||||
|
namespace = "kube-system"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
variable "metallb" {
|
variable "metallb" {
|
||||||
type = object({
|
type = object({
|
||||||
enabled = bool
|
enabled = bool
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue