За традицією - розіграш Telegram Premium для підписників. Дякую всім, хто читає, реагує і пише в коменти, це реально мотивує продовжувати. 😉
DevOps Інженер 👨🏼💻
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM
DevOps 👨🏼💻 Інженер pinned «За традицією - розіграш Telegram Premium для підписників. Дякую всім, хто читає, реагує і пише в коменти, це реально мотивує продовжувати. 😉 DevOps Інженер 👨🏼💻»
Підбірка постів, що вийшли з моменту останнього розіграшу:
📌 Self-hosted AI модель - перший запит у кілька рядків
📎 NanoClaw - AI-помічник у контейнері, що сам себе розширює через промпти
📌 MCP + K8s - як дати Чату доступ до кластера
📎 newreleases - трекінг нових версій сервісів без ручного моніторингу
📌 Intro to LLM від Andrej Karpathy - база про те як влаштовані моделі
📎 RAG - як моделі отримують доступ до ваших даних
📌 Embedding model - AI модель що перетворює текст на вектор
І окремо - 🇺🇦 підбірка україномовних DevOps/Architecture каналів, які сам читаю. Додавайте і діліться із знайомими.
https://t.me/addlist/ymV0bfIYkkI2YTli
DevOps Інженер 👨🏼💻
📌 Self-hosted AI модель - перший запит у кілька рядків
📎 NanoClaw - AI-помічник у контейнері, що сам себе розширює через промпти
📌 MCP + K8s - як дати Чату доступ до кластера
📎 newreleases - трекінг нових версій сервісів без ручного моніторингу
📌 Intro to LLM від Andrej Karpathy - база про те як влаштовані моделі
📎 RAG - як моделі отримують доступ до ваших даних
📌 Embedding model - AI модель що перетворює текст на вектор
І окремо - 🇺🇦 підбірка україномовних DevOps/Architecture каналів, які сам читаю. Додавайте і діліться із знайомими.
https://t.me/addlist/ymV0bfIYkkI2YTli
DevOps Інженер 👨🏼💻
Vector DB - місце, де зберігаються embeddings 🗂
Вже знаємо, що робить embedding model - вона перетворює текст (і не тільки) на вектор (лінк). Цей вектор треба кудись покласти і вміти швидко шукати по ньому. Для цього існують Vector DB.
На відміну від звичайної БД, яка шукає точний збіг, Vector DB шукає найближчі за змістом вектори. Саме так RAG знаходить потрібний шматок вашого документу.
Поширені варіанти:
pgvector - екстеншн до Postgres.
Qdrant - окрема БД написана на Rust. Швидша за pgvector на великих об'ємах, open-source.
ChromaDB - в більшості для старту і прототипів.
📹 Відео від IBM щодо VectorDB:
What is a Vector Database?
Гарних всім вихідних!🏖️
DevOps Інженер 👨🏼💻
Вже знаємо, що робить embedding model - вона перетворює текст (і не тільки) на вектор (лінк). Цей вектор треба кудись покласти і вміти швидко шукати по ньому. Для цього існують Vector DB.
На відміну від звичайної БД, яка шукає точний збіг, Vector DB шукає найближчі за змістом вектори. Саме так RAG знаходить потрібний шматок вашого документу.
Поширені варіанти:
pgvector - екстеншн до Postgres.
Qdrant - окрема БД написана на Rust. Швидша за pgvector на великих об'ємах, open-source.
ChromaDB - в більшості для старту і прототипів.
What is a Vector Database?
Гарних всім вихідних!
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Чанкінг у RAG ✂️
Перед тим як зберегти документ у Vector DB (лінк), його треба розбити на менші шматки - чанки. Якщо цього не зробити, RAG просто не знайде потрібне місце в документі, бо embedding великого тексту дає занадто розмитий вектор.
Розмір чанку напряму впливає на якість відповідей. Задовеликий - вектор розмитий. Задрібний - втрачається контекст. Щоб не розрізати думку на межі чанків, використовують overlap - сусідні чанки трохи перекривають одне одного.
Детальніше про стратегії чанкінгу:
📃 Evaluating Chunking Strategies (стаття)
📹 The BEST Way to Chunk Text for RAG (відео)
DevOps Інженер 👨🏼💻
Перед тим як зберегти документ у Vector DB (лінк), його треба розбити на менші шматки - чанки. Якщо цього не зробити, RAG просто не знайде потрібне місце в документі, бо embedding великого тексту дає занадто розмитий вектор.
Розмір чанку напряму впливає на якість відповідей. Задовеликий - вектор розмитий. Задрібний - втрачається контекст. Щоб не розрізати думку на межі чанків, використовують overlap - сусідні чанки трохи перекривають одне одного.
Детальніше про стратегії чанкінгу:
📃 Evaluating Chunking Strategies (стаття)
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Kubernetes Control Plane ⚙️
Control Plane - це мозок кластера. Він не запускає додатки, але вирішує де, коли і як вони мають працювати.
Складається з чотирьох компонентів:
⚙️ kube-apiserver - єдина точка входу. Будь-яке звернення до кластера (kubectl, контролери, ноди) йде через нього. Нічого не звертається до бази напряму, тільки через apiserver.
⚙️ etcd (або альтернативи) - база даних кластера. Зберігає весь стан: які поди мають працювати, які ноди існують, конфіги, секрети. Єдине джерело правди.
⚙️ kube-scheduler - слідкує за новими подами без призначеної ноди і вирішує на яку ноду їх запустити.
⚙️ kube-controller-manager - постійно звіряє бажаний стан із реальним і виправляє розбіжності.
Базовий флоу: ти описуєш бажаний стан → apiserver зберігає це в etcd → scheduler призначає поду ноду → kubelet (розглянем пізніше) на цій ноді запускає контейнери → контролери постійно звіряють що реальність відповідає бажаному стану.
DevOps Інженер 👨🏼💻
Control Plane - це мозок кластера. Він не запускає додатки, але вирішує де, коли і як вони мають працювати.
Складається з чотирьох компонентів:
Базовий флоу: ти описуєш бажаний стан → apiserver зберігає це в etcd → scheduler призначає поду ноду → kubelet (розглянем пізніше) на цій ноді запускає контейнери → контролери постійно звіряють що реальність відповідає бажаному стану.
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4 4❤1🔥1
Kubernetes Services (всіх з суботою) 🌐
Поди (контейнери) в кластері постійно вмирають і перестворюються, і кожен раз отримують новий IP. Щоб не ганятись за цими IP, існує абстракція Service - стабільна точка доступу до групи подів.
Є три основних типи, і кожен наступний надбудовується над попереднім:
⚙️ ClusterIP - внутрішній IP, доступний тільки всередині кластера. Дефолт для комунікації між сервісами.
⚙️ NodePort - відкриває порт (30000–32767) на кожній ноді. Тепер до сервісу можна достукатись ззовні через <node-ip>:<port>. Під капотом має ClusterIP.
⚙️ LoadBalancer - піднімає зовнішній load balancer (AWS, GCP) з публічним IP. Під капотом має і NodePort (не завжди), і ClusterIP.
Тобто це не те щоб три окремі об'єкти - це один Service з вкладеними рівнями.
DevOps Інженер 👨🏼💻
Поди (контейнери) в кластері постійно вмирають і перестворюються, і кожен раз отримують новий IP. Щоб не ганятись за цими IP, існує абстракція Service - стабільна точка доступу до групи подів.
Є три основних типи, і кожен наступний надбудовується над попереднім:
Тобто це не те щоб три окремі об'єкти - це один Service з вкладеними рівнями.
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Знову K8s Control Plane (наочно) 👀
У попередніх постах розібрали компоненти Control Plane (лінк). Але одна річ прочитати, а інша - побачити їх наживо у своєму кластері. Зробимо це за пару хвилин.
1. Встановлюємо minikube (гайд)
2. minikube start --driver=docker
3. kubectl get pods -n kube-system
У виводі бачимо компоненти з минулого посту:⚙ kube-apiserver, ⚙ etcd, ⚙ kube-scheduler, ⚙ kube-controller-manager - кожен як окремий под.
Прибрати за собою: minikube delete
Але якщо ці компоненти самі частково відповідають за життєвий цикл подів - то хто тоді створив поди, в яких працюють вони? Курка чи яйце? Про це - пізніше🙂 .
DevOps Інженер 👨🏼💻
У попередніх постах розібрали компоненти Control Plane (лінк). Але одна річ прочитати, а інша - побачити їх наживо у своєму кластері. Зробимо це за пару хвилин.
1. Встановлюємо minikube (гайд)
2. minikube start --driver=docker
3. kubectl get pods -n kube-system
У виводі бачимо компоненти з минулого посту:
Прибрати за собою: minikube delete
Але якщо ці компоненти самі частково відповідають за життєвий цикл подів - то хто тоді створив поди, в яких працюють вони? Курка чи яйце? Про це - пізніше
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6 5
Привіт!
Зібрав корисні підбірки 🇺🇦 контенту в одному місці:
🗂 DevOps/Architecture Telegram канали, які сам читаю:
[переглянути і додати папку]
💬 AI/ML канали - свіжа папка для тих, хто занурюється в цю тему:
[переглянути і додати папку]
🚣 IT канали - ширша добірка каналів на різні теми:
[переглянути і додати папку]
⚙️ Емоджі-пак з іконками Kubernetes-ресурсів - зручно підписувати флоу і пости:
[переглянути і додати емодзі]
Додавайте, лишайте в підписці тільки те, що до вподоби, і діліться зі знайомими. У коментах можете залишити свої канали, або ті, про які я міг не знати, зможу додати в папку😉 . На диво - дуже ефективний механізм.
DevOps Інженер 👨🏼💻
Зібрав корисні підбірки 🇺🇦 контенту в одному місці:
[переглянути і додати папку]
[переглянути і додати папку]
🚣 IT канали - ширша добірка каналів на різні теми:
[переглянути і додати папку]
[переглянути і додати емодзі]
Додавайте, лишайте в підписці тільки те, що до вподоби, і діліться зі знайомими. У коментах можете залишити свої канали, або ті, про які я міг не знати, зможу додати в папку
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Kubernetes Ingress 🌐
У минулому пості (лінк) розібрали Services і дійшли до LoadBalancer. Але піднімати окремий LB на кожен сервіс - дорого і незручно. Що робити, якщо треба виставити назовні десяток сервісів?
Відповідь - Ingress. Він складається з двох частин:
⚙️ Ingress resource - YAML-об'єкт із правилами роутингу: який хост чи шлях веде на який сервіс, які TLS-сертифікати. Сам по собі нічого не робить.
⚙️ Ingress controller - софт (наприклад traefik), що виконує ці правила. Моніторить K8s API, помічає нові Ingress-правила і оновлює маршрути.
Ingress працює на L7 - бачить HTTP-запит і роутить за хостом (api.example.com) або шляхом (/api). Сам контролер (зазвичай) виставляється назовні через один LB, а він уже роздає трафік усередину.
⚠️ Але в Kubernetes уже є офіційний наступник Ingress - гнучкіший Gateway API. Про нього розповім окремо, він набагато цікавіший.
DevOps Інженер 👨🏼💻
У минулому пості (лінк) розібрали Services і дійшли до LoadBalancer. Але піднімати окремий LB на кожен сервіс - дорого і незручно. Що робити, якщо треба виставити назовні десяток сервісів?
Відповідь - Ingress. Він складається з двох частин:
Ingress працює на L7 - бачить HTTP-запит і роутить за хостом (api.example.com) або шляхом (/api). Сам контролер (зазвичай) виставляється назовні через один LB, а він уже роздає трафік усередину.
⚠️ Але в Kubernetes уже є офіційний наступник Ingress - гнучкіший Gateway API. Про нього розповім окремо, він набагато цікавіший.
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Kubernetes Gateway API 🚪
У минулому пості (лінк) розібрали Ingress. Що ж таке Gateway API і чому він гнучкіший?
Замість монолітного Ingress-об'єкта є рольове розділення на ресурси:
⚙️ GatewayClass - яка саме реалізація Gateway API використовується в кластері (istio, envoy тощо).
⚙️ Gateway - сам балансувальник, керує платформна команда.
⚙️ HTTPRoute - правила роутингу, керує команда розробки.
Тобто команди та сервіси більше не б'ються за один спільний об'єкт.
Бонусом - L4+gRPC трафік, вбудований canary і все це без специфічного менеджменту анотаціями.
У SIG Network є офіційний тул Ingress2Gateway, що допомагає перегенерувати маніфести.
DevOps Інженер 👨🏼💻
У минулому пості (лінк) розібрали Ingress. Що ж таке Gateway API і чому він гнучкіший?
Замість монолітного Ingress-об'єкта є рольове розділення на ресурси:
⚙️ GatewayClass - яка саме реалізація Gateway API використовується в кластері (istio, envoy тощо).
⚙️ Gateway - сам балансувальник, керує платформна команда.
⚙️ HTTPRoute - правила роутингу, керує команда розробки.
Тобто команди та сервіси більше не б'ються за один спільний об'єкт.
Бонусом - L4+gRPC трафік, вбудований canary і все це без специфічного менеджменту анотаціями.
У SIG Network є офіційний тул Ingress2Gateway, що допомагає перегенерувати маніфести.
DevOps Інженер 👨🏼💻
👍6 5🔥1
Kubernetes kubelet 🧑🔧
У постах про Control Plane (лінк) я обіцяв розказати про⚙️ kubelet.
Якщо Control Plane це мозок і пункт прийняття рішень, то kubelet - той, хто то все виконує. Це агент, який працює на кожній⚙️ node (нода - зазвичай VM-ка в твоєму кластері, завжди готова розгорнути на собі якісь твої сервіси). Kubelet не вирішує що запускати, бо це робота ⚙ kube-scheduler. Задача ж kubelet - запустити вже вказаний Control Planʼом ворклоад.
Що робить kubelet:
🔧 отримує від⚙ kube-apiserver список подів на запуск
🔧 керує container runtime на машині (наприклад containerd)
🔧 стежить за здоров'ям контейнерів (не подів) і рестартує їх якщо впали (liveness/readiness проби, restartPolicy)
🔧 репортить статус ноди й подів назад в kube-apiserver
DevOps Інженер 👨🏼💻
У постах про Control Plane (лінк) я обіцяв розказати про
Якщо Control Plane це мозок і пункт прийняття рішень, то kubelet - той, хто то все виконує. Це агент, який працює на кожній
Що робить kubelet:
🔧 отримує від
🔧 керує container runtime на машині (наприклад containerd)
🔧 стежить за здоров'ям контейнерів (не подів) і рестартує їх якщо впали (liveness/readiness проби, restartPolicy)
🔧 репортить статус ноди й подів назад в kube-apiserver
DevOps Інженер 👨🏼💻
Please open Telegram to view this post
VIEW IN TELEGRAM