<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Сетевые возможности on Cozystack</title><link>https://cozystack.ru/docs/v1.5/networking/</link><description>Recent content in Сетевые возможности on Cozystack</description><generator>Hugo</generator><language>en</language><atom:link href="https://cozystack.ru/docs/v1.5/networking/index.xml" rel="self" type="application/rss+xml"/><item><title>Сетевая архитектура</title><link>https://cozystack.ru/docs/v1.5/networking/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/architecture/</guid><description>&lt;h2 id="обзор"&gt;Обзор&lt;/h2&gt;
&lt;p&gt;Cozystack использует многослойный сетевой стек, разработанный для bare-metal-кластеров Kubernetes. Архитектура объединяет несколько компонентов, каждый из которых отвечает за свой уровень сети:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Уровень&lt;/th&gt;
 &lt;th&gt;Компонент&lt;/th&gt;
 &lt;th&gt;Назначение&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Внешняя балансировка нагрузки&lt;/td&gt;
 &lt;td&gt;MetalLB&lt;/td&gt;
 &lt;td&gt;Публикация сервисов во внешние сети&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Балансировка нагрузки сервисов&lt;/td&gt;
 &lt;td&gt;Cilium eBPF&lt;/td&gt;
 &lt;td&gt;Замена kube-proxy, DNAT внутри ядра&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Сетевые политики&lt;/td&gt;
 &lt;td&gt;Cilium eBPF&lt;/td&gt;
 &lt;td&gt;Изоляция тенантов и обеспечение безопасности&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Сеть подов (CNI)&lt;/td&gt;
 &lt;td&gt;Kube-OVN&lt;/td&gt;
 &lt;td&gt;Централизованный IPAM, оверлейная сеть&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Проброс IP в ВМ&lt;/td&gt;
 &lt;td&gt;
&lt;a href="https://github.com/cozystack/cozy-proxy/" target="_blank"&gt;cozy-proxy&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Проброс внешних IP-адресов внутрь виртуальных машин&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Вторичные интерфейсы ВМ&lt;/td&gt;
 &lt;td&gt;
&lt;a href="https://github.com/k8snetworkplumbingwg/multus-cni" target="_blank"&gt;Multus CNI&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Подключение вторичных L2-интерфейсов к виртуальным машинам&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Наблюдаемость&lt;/td&gt;
 &lt;td&gt;Hubble (опционально)&lt;/td&gt;
 &lt;td&gt;Видимость сетевого трафика (по умолчанию отключено)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;pre class="mermaid"&gt;flowchart TD
 EXT[&amp;#34;External Clients&amp;#34;]
 RTR[&amp;#34;Upstream Router / Gateway&amp;#34;]
 MLB[&amp;#34;MetalLB&amp;lt;br/&amp;gt;(L2 ARP / BGP)&amp;#34;]
 CIL[&amp;#34;Cilium eBPF&amp;lt;br/&amp;gt;(Service Load Balancing &amp;#43; Network Policies)&amp;#34;]
 OVN[&amp;#34;Kube-OVN&amp;lt;br/&amp;gt;(Pod Networking &amp;#43; IPAM)&amp;#34;]
 PODS[&amp;#34;Pods&amp;#34;]

 EXT --&amp;gt; RTR
 RTR --&amp;gt; MLB
 MLB --&amp;gt; CIL
 CIL --&amp;gt; OVN
 OVN --&amp;gt; PODS&lt;/pre&gt;
&lt;h2 id="сетевая-конфигурация-кластера"&gt;Сетевая конфигурация кластера&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Параметр&lt;/th&gt;
 &lt;th&gt;Значение по умолчанию&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pod CIDR&lt;/td&gt;
 &lt;td&gt;10.244.0.0/16&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Service CIDR&lt;/td&gt;
 &lt;td&gt;10.96.0.0/16&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Join CIDR&lt;/td&gt;
 &lt;td&gt;100.64.0.0/16&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Домен кластера&lt;/td&gt;
 &lt;td&gt;cozy.local&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Тип оверлея&lt;/td&gt;
 &lt;td&gt;GENEVE&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;CNI&lt;/td&gt;
 &lt;td&gt;Kube-OVN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Замена kube-proxy&lt;/td&gt;
 &lt;td&gt;Cilium eBPF&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="варианты-сетевого-стека"&gt;Варианты сетевого стека&lt;/h3&gt;
&lt;p&gt;Cozystack поддерживает несколько вариантов сетевого стека для разных
типов кластеров. Вариант выбирается через &lt;code&gt;bundles.system.variant&lt;/code&gt; в
конфигурации платформы.&lt;/p&gt;</description></item><item><title>VPC</title><link>https://cozystack.ru/docs/v1.5/networking/vpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/vpc/</guid><description>&lt;!--
Автоматически сгенерированное содержимое. Не редактируйте этот файл напрямую; редактируйте исходные файлы.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1.5/networking/_include/vpc.md
source: https://github.com/cozystack/cozystack/blob/release-1.5/packages/apps/vpc/README.md
--&gt;
&lt;p&gt;VPC предоставляет набор выделенных подсетей вместе со связанными с ними сетевыми сервисами.
По мере развития сервиса будет появляться больше способов изоляции рабочих нагрузок.&lt;/p&gt;
&lt;h2 id="детали-сервиса"&gt;Детали сервиса&lt;/h2&gt;
&lt;p&gt;Для работы сервису требуются kube-ovn и multus CNI, поэтому по умолчанию он работает только с бандлом &lt;code&gt;paas-full&lt;/code&gt;.
Kube-ovn предоставляет ресурсы VPC и Subnet, а также обеспечивает изоляцию и обслуживание сети, например DHCP. Внутри он использует виртуальные маршрутизаторы и виртуальные коммутаторы ovn.
Multus добавляет поддержку нескольких сетевых интерфейсов, поэтому под или ВМ могут иметь два и более сетевых интерфейса.&lt;/p&gt;</description></item><item><title>Управляемый сервис VPN</title><link>https://cozystack.ru/docs/v1.5/networking/vpn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/vpn/</guid><description>&lt;!--
Автоматически сгенерированное содержимое. Не редактируйте этот файл напрямую; редактируйте исходные файлы.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1.5/networking/_include/vpn.md
source: https://github.com/cozystack/cozystack/blob/release-1.5/packages/apps/vpn/README.md
--&gt;
&lt;p&gt;Виртуальная частная сеть (VPN) - важнейший инструмент для обеспечения безопасного и приватного обмена данными через интернет.
Управляемый сервис VPN упрощает развёртывание VPN-сервера и управление им, позволяя легко устанавливать защищённые соединения.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Клиентские приложения VPN: 
&lt;a href="https://shadowsocks5.github.io/en/download/clients.html" target="_blank"&gt;https://shadowsocks5.github.io/en/download/clients.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="детали-развёртывания"&gt;Детали развёртывания&lt;/h2&gt;
&lt;p&gt;Сервис VPN работает на основе Outline Server - продвинутого и удобного VPN-решения.
Его внутреннее название - «Shadowbox»; он упрощает процесс настройки и совместного использования серверов Shadowsocks.
Он работает, запуская экземпляры Shadowsocks по требованию.
Кроме того, Shadowbox совместим со стандартными клиентами Shadowsocks, что обеспечивает гибкость и удобство использования VPN.&lt;/p&gt;</description></item><item><title>Gateway API (Cilium)</title><link>https://cozystack.ru/docs/v1.5/networking/gateway-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/gateway-api/</guid><description>&lt;h2 id="обзор"&gt;Обзор&lt;/h2&gt;
&lt;p&gt;Cozystack ships Gateway API support as an opt-in alternative to ingress-nginx. When enabled, a tenant that explicitly opts in via &lt;code&gt;tenant.spec.gateway: true&lt;/code&gt; gets its own &lt;code&gt;Gateway&lt;/code&gt; (own LoadBalancer Service, own LB IP, and — on the ACME cert modes — its own per-tenant Issuer and Certificate) materialised in its own namespace. Every other tenant in the tree publishes through the Gateway of the nearest ancestor that owns one — same shape as the existing &lt;code&gt;_namespace.ingress&lt;/code&gt; inheritance.&lt;/p&gt;</description></item><item><title>Управляемый сервис HTTP-кеширования на основе Nginx</title><link>https://cozystack.ru/docs/v1.5/networking/http-cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/http-cache/</guid><description>&lt;!--
Автоматически сгенерированное содержимое. Не редактируйте этот файл напрямую; редактируйте исходные файлы.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1.5/networking/_include/http-cache.md
source: https://github.com/cozystack/cozystack/blob/release-1.5/packages/apps/http-cache/README.md
--&gt;
&lt;p&gt;Сервис HTTP-кеширования на основе Nginx предназначен для оптимизации веб-трафика и повышения производительности веб-приложений.
Сервис объединяет специально собранные экземпляры Nginx и HAProxy для эффективного кеширования и балансировки нагрузки.&lt;/p&gt;
&lt;h2 id="информация-о-развёртывании"&gt;Информация о развёртывании&lt;/h2&gt;
&lt;p&gt;Экземпляры Nginx включают следующие модули и возможности:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;модуль VTS для статистики&lt;/li&gt;
&lt;li&gt;интеграция с ip2location&lt;/li&gt;
&lt;li&gt;интеграция с ip2proxy&lt;/li&gt;
&lt;li&gt;поддержка 51Degrees&lt;/li&gt;
&lt;li&gt;функция очистки кеша&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HAProxy играет ключевую роль в этой схеме: он направляет входящий трафик на конкретные экземпляры Nginx на основе консистентного хеша, вычисляемого от URL. Каждый экземпляр Nginx использует Persistent Volume Claim (PVC) для хранения кешированного содержимого, обеспечивая быстрый и надёжный доступ к часто используемым ресурсам.&lt;/p&gt;</description></item><item><title>PROXY-protocol и исправление hairpin-NAT</title><link>https://cozystack.ru/docs/v1.5/networking/hairpin-proxy-protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/hairpin-proxy-protocol/</guid><description>&lt;h2 id="о-чём-эта-страница"&gt;О чём эта страница&lt;/h2&gt;
&lt;p&gt;PROXY-protocol на ingress-nginx управляющего кластера, порождаемая им проблема hairpin-NAT, входящее в состав Cozystack исправление (&lt;code&gt;ouroboros&lt;/code&gt;, реализация 
&lt;a href="https://github.com/compumike/hairpin-proxy" target="_blank"&gt;&lt;code&gt;compumike/hairpin-proxy&lt;/code&gt;&lt;/a&gt; на Go - см. 
&lt;a href="https://github.com/lexfrei/ouroboros" target="_blank"&gt;&lt;code&gt;lexfrei/ouroboros&lt;/code&gt;&lt;/a&gt;), единый флаг платформы, связывающий обе части, аддон для того же исправления внутри кластеров тенантов и несимметричные пути отключения на каждом уровне.&lt;/p&gt;
&lt;h2 id="почему-proxy-protocol-ломает-трафик-внутри-кластера"&gt;Почему PROXY-protocol ломает трафик внутри кластера&lt;/h2&gt;
&lt;p&gt;Когда вышестоящий балансировщик L4 (облачный LB, hcloud-CCM, F5, haproxy за MetalLB и т.д.) добавляет 
&lt;a href="https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt" target="_blank"&gt;заголовок PROXY-protocol v1&lt;/a&gt; к каждому соединению, приходящему на ingress-nginx, ingress-nginx настраивается с &lt;code&gt;use-proxy-protocol: &amp;quot;true&amp;quot;&lt;/code&gt; и принимает только соединения с заголовком. Внешний трафик работает.&lt;/p&gt;</description></item><item><title>Публикация конечной точки Kubernetes API через external-dns</title><link>https://cozystack.ru/docs/v1.5/networking/kuberture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/kuberture/</guid><description>&lt;h2 id="о-чём-эта-страница"&gt;О чём эта страница&lt;/h2&gt;
&lt;p&gt;Как опубликовать конечную точку Kubernetes API самого кластера в виде DNS-записи с помощью &lt;code&gt;external-dns&lt;/code&gt;, почему очевидный подход (направить &lt;code&gt;external-dns&lt;/code&gt; напрямую на EndpointSlice &lt;code&gt;default/kubernetes&lt;/code&gt;) не работает, что представляет собой входящий в состав Cozystack мост (&lt;code&gt;kuberture&lt;/code&gt;, см. 
&lt;a href="https://github.com/lexfrei/kuberture" target="_blank"&gt;&lt;code&gt;lexfrei/kuberture&lt;/code&gt;&lt;/a&gt;), как одна установка &lt;code&gt;kuberture&lt;/code&gt; может одновременно обслуживать несколько экземпляров &lt;code&gt;external-dns&lt;/code&gt;, а также как всё это отключить.&lt;/p&gt;
&lt;h2 id="почему-external-dns-не-может-читать-endpointslice-напрямую"&gt;Почему external-dns не может читать EndpointSlice напрямую&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;external-dns&lt;/code&gt; считывает значимое для DNS состояние из источников Kubernetes - &lt;code&gt;service&lt;/code&gt;, &lt;code&gt;ingress&lt;/code&gt;, &lt;code&gt;gateway-httproute&lt;/code&gt; и ряда других. Источник &lt;code&gt;EndpointSlice&lt;/code&gt; он &lt;strong&gt;не&lt;/strong&gt; поддерживает. EndpointSlice управляющего слоя, который Kubernetes поддерживает в &lt;code&gt;default/kubernetes&lt;/code&gt;, - это канонический, всегда актуальный список адресов узлов, обслуживающих API; кроме того, это единственный полноценный объект, который несёт эту информацию без меток или селекторов, задаваемых оператором. Операторы, которые хотят публиковать конечную точку API своего кластера в публичный DNS через &lt;code&gt;external-dns&lt;/code&gt; (проверки &lt;code&gt;dns01&lt;/code&gt; в cert-manager, внутренняя автоматизация, обращающаяся к API по FQDN, обнаружение сервисов между кластерами и т.д.), сразу упираются в этот пробел.&lt;/p&gt;</description></item><item><title>Управляемый сервис балансировки TCP-нагрузки</title><link>https://cozystack.ru/docs/v1.5/networking/tcp-balancer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/tcp-balancer/</guid><description>&lt;!--
Автоматически сгенерированное содержимое. Не редактируйте этот файл напрямую; редактируйте исходные файлы.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1.5/networking/_include/tcp-balancer.md
source: https://github.com/cozystack/cozystack/blob/release-1.5/packages/apps/tcp-balancer/README.md
--&gt;
&lt;p&gt;Управляемый сервис балансировки TCP-нагрузки упрощает развёртывание балансировщиков нагрузки и управление ими. Он эффективно распределяет входящий TCP-трафик между несколькими бэкенд-серверами, обеспечивая высокую доступность и оптимальное использование ресурсов.&lt;/p&gt;
&lt;h2 id="детали-развёртывания"&gt;Детали развёртывания&lt;/h2&gt;
&lt;p&gt;Управляемый сервис балансировки TCP-нагрузки использует для балансировки HAProxy. HAProxy - проверенное и надёжное решение для распределения входящего TCP-трафика между несколькими бэкенд-серверами, обеспечивающее высокую доступность и эффективное использование ресурсов. Такой выбор гарантирует бесперебойную и надёжную работу вашей инфраструктуры балансировки нагрузки.&lt;/p&gt;</description></item><item><title>Виртуальные маршрутизаторы</title><link>https://cozystack.ru/docs/v1.5/networking/virtual-router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/networking/virtual-router/</guid><description>&lt;p&gt;Начиная с версии 
&lt;a href="https://github.com/cozystack/cozystack/releases/tag/v0.27.0" target="_blank"&gt;v0.27.0&lt;/a&gt;
Cozystack может развёртывать виртуальные маршрутизаторы (также известные как «router appliances» или «middlebox appliances»).
Эта возможность позволяет создать виртуальный маршрутизатор на основе экземпляра виртуальной машины.
Виртуальный маршрутизатор может маршрутизировать трафик между разными сетями.&lt;/p&gt;
&lt;h2 id="создание-виртуального-маршрутизатора"&gt;Создание виртуального маршрутизатора&lt;/h2&gt;
&lt;p&gt;Для создания виртуального маршрутизатора требуется учётная запись администратора Cozystack.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Создайте экземпляр ВМ&lt;/strong&gt;&lt;br/&gt;
Используйте стандартные пакеты &lt;code&gt;vm-instance&lt;/code&gt; и &lt;code&gt;virtual-machine&lt;/code&gt;, чтобы создать экземпляр виртуальной машины.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Отключите защиту от подмены адресов (anti-spoofing)&lt;/strong&gt;&lt;br/&gt;
Чтобы экземпляр ВМ мог работать как виртуальный маршрутизатор, у него должна быть отключена защита от подмены адресов:&lt;/p&gt;</description></item></channel></rss>