TGViewer
DevOps Brain 🧠 DevOps Brain 🧠 @devopsbrain · 1.29K subscribers
Post #134 625
🆕 Настройка самоподписных валидных ssl-сертификатов в локальном k8s. Часть 1.

В данном гайде мы настроим автоматический выпуск “валидных” сертификатов в локальном kubernetes кластере. В качестве примера запустим приложение grafana.

Что будем делать:

1. Развернем локально кластер локально. Установим MetalLB, cert-manager, ingress и поднимем тестовое приложение grafana.
2. Настроим нашу систему так, чтобы она доверяла выпущенным в кубе сертификатам.
3. Используем nip.io, чтобы не заморачиваться с hosts-файлом

# Поднимаем кластер

Тут совершенно нет никаких проблем, я буду использовать стандартный Docker Desktop для запуска. Ставим галочку в настройках Docker Desktop, что нам нужен куб и погнали дальше.

# MetalLB

MetalLB — это балансировщик нагрузки для Kubernetes, предназначенный для работы в средах, где нет встроенного облачного балансировщика, например, в bare-metal кластерах. Kubernetes изначально предполагает, что балансировка нагрузки будет предоставляться облачными провайдерами (AWS, GCP, Azure), но в локальных кластерах или в on-premise инфраструктуре такой возможности нет. MetalLB решает эту проблему, предоставляя LoadBalancer-сервисам реальные IP-адреса.

MetalLB поставим и сконфигурируем просто для удобства. Он выдаст сервису Ingress Load Balancer наш локальный IP-адрес.


# Для начала проверим что мы точно в нужном кластере
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* docker-desktop docker-desktop docker-desktop

# Устанавливаем
$ kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/main/config/manifests/metallb-native.yaml

# Проверяем что подики поднялись
$ kubectl get pods -n metallb-system

# Найдем наш локальный ip адрес (у меня macos).
$ ifconfig | grep "inet " | grep -v 127.0.0.1
inet 192.168.1.52 netmask 0xffffff00 broadcast 192.168.1.255


Теперь сразу же настроим, чтобы выдавался только нужный нам IP адрес. Вы можете тоже самое сделать и для 127.0.0.1. Но я буду вешать на IP адрес в локальной сети, так как в дальнейшем планирую, что доступ понадобится из локальной сети. В моем случае это будет 192.168.1.52.


kubectl apply -f - <<EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: ingress-ip-pool
namespace: metallb-system
spec:
addresses:
- "192.168.1.52-192.168.1.52"
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: advert
namespace: metallb-system
EOF



Продолжение далее ⬇️
  • 🔥 9
  • 👍 2
More from @devopsbrain
  1. Sep 30, 2026🔖 Наконец-то дождались: git branch --delete-merged У нас у всех есть куча проектов. Мы ра…
  2. Sep 28, 2026Ребята, хочу рассказать про конференцию, которую я бы сам с удовольствием посетил. 3 октяб…
  3. Sep 19, 2026Только что релизнул net-peek v0.1.8. Этот маленький, но классный 🚳 на Go я сделал, когда…
  4. Sep 17, 2026🔖 AI больше не стыдно? Обратили внимание, как быстро мы прошли фазу от “фууу, это нейросл…
  5. Sep 12, 2026Ленту моего твиттера последние 2 дня разрывает от двух вещей - складного айфона и мухи. И…
  6. Sep 8, 2026🔖 Kafka: Partitions и Consumer Groups — Часть 2 В первой части разобрались, зачем Kafka в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →