Подготовлен (https://cilium.io/blog/2018/06/26/cilium-11/) релиз проекта Cilium 1.1 (https://cilium.io), в рамках которого при участии компаний Google, Facebook, Netflix и Red Hat развивается система для обеспечения сетевого взаимодействия и применения политик безопасности для изолированных контейнеров и процессов. Для разграничения сетевого доступа в Cilium применяются еBPF (https://en.wikipedia.org/wiki/Berkeley_Packet_Filter#Extensi... (Berkeley Packet Filter) и XDP (https://www.iovisor.org/technology/xdp) (eXpress Data Path). Код компонентов, работающих на уровне пользователя, написаны на языке Go и распространяются (https://github.com/cilium/cilium) под лицензией Apache 2.0. Загружаемые в ядро Linux сценарии BPF доступны под лицензией GPLv2.
Основу Cilium составляет фоновый процесс, который работает в пространстве пользователя и выполняет работу по генерированию и компилированию BPF-программ, а также взаимодействия с runtime, обеспечивающим работу контейнеров. В форме BPF-программ реализованы системы обеспечения связности контейнеров, интеграции с сетевой подсистемой (физические и виртуальные сети, VXLAN, Geneve) и балансировки нагрузки. Фоновый процесс дополняют управляющий cli-интерфейс, репозиторий правил доступа, система мониторинга и модули интеграции с поддержкой Kubernetes, Mesos и Docker. Более подробно про особенности Cilium можно прочитать в тексте анонса (https://www.opennet.ru/opennews/art.shtml?num=48556) первого выпуска проекта.Основные новшества:
- Возможность интеграции с платформой управления микросервисами Istio (https://www.opennet.ru/opennews/art.shtml?num=46598), которая обеспечивает распределение нагрузки между микросервисами, организует аутентификацию, разграничение доступа и защищённое взаимодействие между микросервисами, превращая набор запущенных в разных контейнерах микросервисов в приложение, слаженно работающее как единое целое;
- Поддержка дополнительных runtime для обеспечения работы контейнеров - cri-o (https://github.com/kubernetes-incubator/cri-o) и containerd (https://www.opennet.ru/opennews/art.shtml?num=47681). Имеющийся runtime определяется автоматически, но может быть явно выбран при помощи опции "--container-runtime";
- Улучшение поддержки Kubernetes: поддержка дополнительных политик безопасности Kubernetes 1.11 (podSelector и namespaceSelector), возможность сопоставления данных аккаунтинга, возможность разделения локального трафика (например, проверок мониторинга) и трафика к внешним узлам через SNAT;
- Возможность определения комбинированных правил с номером сетевого порта (IP+L4) и названием протокола (L7), применяемых только вместе с проверкой по IP/CIDR;- Оптимизация производительности системы отслеживания соединений: Возможность отбрасывания записей отслеживания соединений, если соединения подпадает под правило блокировки трафика. Более агрессивная чистка таблиц отслеживания соединений для не TCP-трафика;
- Повышение производительности механизмов идентификации и обработки MTU;- Поддержка дополнительных метрик мониторинга производительности: добавление счётчиков перенаправления и отбрасывания трафика для
L3/L4/L7.- Возможность изменения или добавления IP-адреса хоста с автоматическим применением определённых для хоста правил. Обеспечение непрерывной синхронизации правил и выполняющих их проверку BPF-программ. Поддержка TCP keepalive;
- Базовый образ контейнера обновлён до пакетной базы Ubuntu 18.04.
URL: https://cilium.io/blog/2018/06/26/cilium-11/
Новость: https://www.opennet.ru/opennews/art.shtml?num=48897
>Загружаемые в ядро Linux сценарии BPF доступны под лицензией GPLv2.К создаваемым машиной идеям относятся как к объектам авторского права, причем не их создатели.
Учитывая то, что сценарии скомпилированы из внутреннего представления, которое скорее всего не сериализуется и не поставляется с ними, как и копия лицензии, нет ли тут нарушения GPL?
> Код компонентов,работающих на уровне
пользователя, написаны на
языке Go
А почему не на С/С++? В Гугле не умеют кодить на сишечке и плюсах?
Да вообще, чего они за этот Go вцепились, ведь, у них же есть их фирменный Dart?
А го не их фирменный?
исключительно на с/c++ кодят только скрепные нищ#еброды для устаревшего железа. а google может себе позволить докупить серверов в кластер если вдруг производительности не хватит, но тут разница c++/go и так невелика. а вот скорость и стоимость разработки давно не в пользу c/c++. на смену языкам 80-ых приходят современные языки для современного железа, кто этого не желает догонять - ошивается на обочине, пописывая freebsd драйверки для ISA шины или патча KDE в надежде сократить занимаемый обьем, такой дорогой нынче в сельпо Мухосранска, памяти
> современные языки для современного железа
> такой дорогой нынче в сельпо Мухосранска, памятиВся суть хипстеров в IT: "Оптимизация это сложна-а!!! Я не собираюсь учиться писать код правильно, я не буду оптимизировать программы! Тяп-ляп и в продакшен! Покупайте память, нищeбрoды!!!"
>> современные языки для современного железа
>> такой дорогой нынче в сельпо Мухосранска, памяти
> Вся суть хипстеров в IT: "Оптимизация это сложна-а!!! Я не собираюсь учиться
> писать код правильно, я не буду оптимизировать программы! Тяп-ляп и в
> продакшен! Покупайте память, нищeбрoды!!!"ну да, Гугель как самый главный нище#брод тут канешна попал...
Потому, что клиентская часть взаимодействует с kubernetes API, а кубернетес, внезапно, написан на гоу. Вполне логично писать клиентскую часть на гоу же -- будет проще юзать готовые либы. Часть кода, которая про BPF, написана на сях.
Go разработан по мотивам Limbo из Plan-9, с частичным привлечением тех же разработчиков.Но дело не в фирменности, а в том, что Dart и Go имеют разное предназначение.
С/С++ на сегодняшний день устарел по ряду показателей: "ездить" на нём можно, но нужно ли?
К слову, до 2014 года Гуглы для ряда своих сервисов пользовались связкой Python+C, пока на Go не перевели. А для некоторых разработок продолжают пользоваться C++, но с явным уклоном в LLVM компиляцию.
> С/С++ на сегодняшний день устарел по ряду показателей: "ездить" на нём можно,
> но нужно ли?Хотелось бы поинтересоваться наличием умственно неполноценных в вашем роду, но не буду: и так всё видно.
> Go разработан по мотивам Limbo из Plan-9, с частичным привлечением тех же разработчиков.А те самые разработчики об этой твоей фантазии хотя бы слышали? Языки, оказавшие влияние на Go давным давно известны и limbo среди них нет. Зато там есть такие языки как Newsqueak и CSP, которые оказали влияние на модель конкурентности(и только ее) как в Go, так и в Limbo. То есть у Go и Limbo есть общие предки, но напрямую друг от друга они независимы и весьма отличаются.
Limbo из Inferno, но это родственная P9 система, да.
Кстати, есть транслятор из Java в Limbo, но Dis JVM не заменит, нет у него стольких оптимизаций.
(Кстати, есть порт Inferno на Android, а ещё был проект (сообщества, не гугла) по замене Java и компании в роботе на Inferno (гуглить Hellaphone) - но работы на одной железяке они добились и успокоились. Жаль.)