{"id":380223,"date":"2024-06-28T15:00:24","date_gmt":"2024-06-28T15:00:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=380223"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=380223","title":{"rendered":"<span>\u0412 \u0447\u0435\u043c \u0441\u0438\u043b\u0438\u0443\u043c, \u0431\u0440\u0430\u0442? \u041e\u0431\u0437\u043e\u0440 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0444\u0438\u0448\u0435\u043a Cilium \u0438 \u0435\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043d\u0430 \u0444\u043e\u043d\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 CNI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0430\u043d\u0438\u0438\u043b, \u044f DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0432 <a href=\"https:\/\/kts.tech\/\"><u>KTS<\/u><\/a>.<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e Cilium \u2013 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u043e\u043c CNI-\u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0434\u043b\u044f Kubernetes \u0441 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 eBPF \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e CNI, Cilium \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0438\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 eBPF \u0438 \u0432 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u043d\u0435\u0442\u0432\u043e\u0440\u043a\u0438\u043d\u0433 \u0432 Kubernetes. \u0418\u0445 \u044f \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0432 \u0441\u0432\u043e\u0438 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f \u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044f \u0431\u0443\u0434\u0443 \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430: \u043f\u0435\u0440\u0432\u044b\u0439 \u2013 \u043e\u0431\u044b\u0447\u043d\u044b\u0439, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 kubeadm, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2013 managed k8s \u0432 Yandex Cloud. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044e Cilium \u2013 1.15.1.<\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"#%D0%92%20%D1%87%D0%B5%D0%BC%20%D1%84%D0%B8%D1%88%D0%BA%D0%B0%20eBPF?\">\u0412 \u0447\u0435\u043c \u0444\u0438\u0448\u043a\u0430 eBPF?<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9F%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B8%D0%BC%20%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">\u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#%D0%9F%D0%BE%D0%BA%D0%B0,%20kube-proxy\">\u041f\u043e\u043a\u0430, kube-proxy<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A2%D0%B5%D1%81%D1%82%D1%8B%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">\u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#%D0%9A%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5%20%D1%84%D0%B8%D1%87%D0%B8%20Cilium\">\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 Cilium<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C%20%D0%B8%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B8\">\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0%20ingress%20%D0%B8%20egress\">\u041f\u0440\u0430\u0432\u0438\u043b\u0430 ingress \u0438 egress<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#L7\">L7<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B8%20%D0%BD%D0%BE%D0%B4\">\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u043e\u0434<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%92%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA\">\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#Observability%20%D0%B8%20Hubble\">Observability \u0438 Hubble<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3%20L7\">\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 L7<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#Ingress-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%20%D0%B8%20Gateway%20API\">Ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438 Gateway API<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#L4-%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA%D0%B8\">L4-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#Service%20Mesh\">Service Mesh<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#Control%20plane\">Control plane<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D0%B5\">\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"%D0%92%20%D1%87%D0%B5%D0%BC%20%D1%84%D0%B8%D1%88%D0%BA%D0%B0%20eBPF?\" id=\"\u0412 \u0447\u0435\u043c \u0444\u0438\u0448\u043a\u0430 eBPF?\"><\/a><\/p>\n<h2>\u0412 \u0447\u0435\u043c \u0444\u0438\u0448\u043a\u0430 eBPF?<\/h2>\n<p>\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e eBPF \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043a\u0438\u043b\u043b\u0435\u0440-\u0444\u0438\u0447\u0435\u0439 Cilium. \u041a\u0430\u043a\u0443\u044e \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442?<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u044f\u0434\u0440\u043e. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u044d\u0442\u043e \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u0441\u0435\u0442\u044f\u043c\u0438, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043b\u0438 \u0432\u043e\u0432\u0441\u0435 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c, \u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u044f\u0434\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439.<\/p>\n<p>\u042d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f eBPF. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 \u044f\u0434\u0440\u0435. <a href=\"https:\/\/youtu.be\/wv_9YxdC49Y?si=loNktZxyYbEUt3vw\"><u>\u041f\u043e \u0441\u043b\u043e\u0432\u0430\u043c<\/u><\/a> \u0422\u043e\u043c\u0430\u0441\u0430 \u0413\u0440\u0430\u0444\u0430, \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Cilium, \u00abeBPF \u0434\u043b\u044f \u044f\u0434\u0440\u0430 Linux \u2013 \u043a\u0430\u043a JavaScript \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u00bb.<\/p>\n<p><a class=\"anchor\" name=\"%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0\" id=\"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\"><\/a><\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0444\u0438\u0447 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432, \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Cilium.<\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c Kubernetes-\u0441\u0435\u0440\u0432\u0438\u0441, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u0434\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0442\u043e \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u043a\u0430\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Cilium \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u044b cilium, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 Helm-\u0447\u0430\u0440\u0442 (\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0440\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 Helm):<\/p>\n<pre><code>  $ cilium install --version 1.15.1 \u2139  Using Cilium version 1.15.1 ? Auto-detected cluster name: kubernetes ? Auto-detected kube-proxy has been installed<\/code><\/pre>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>helm list -n kube-system<\/code> \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0447\u0430\u0440\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d:<\/p>\n<pre><code>$ helm list -n kube-system NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION cilium  kube-system     1               2024-02-19 14:24:38.564620737 +0000 UTC deployed        cilium-1.15.1   1.15.1 <\/code><\/pre>\n<p>\u0427\u0435\u0440\u0435\u0437 <code>cilium status<\/code> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Cilium. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e Cilium \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e:<\/p>\n<pre><code>    \/\u00af\u00af\\\\  \/\u00af\u00af\\\\__\/\u00af\u00af\\\\    Cilium:             OK  \\\\__\/\u00af\u00af\\\\__\/    Operator:           OK  \/\u00af\u00af\\\\__\/\u00af\u00af\\\\    Envoy DaemonSet:    disabled (using embedded mode)  \\\\__\/\u00af\u00af\\\\__\/    Hubble Relay:       disabled     \\\\__\/       ClusterMesh:        disabled  Deployment             cilium-operator    Desired: 1, Ready: 1\/1, Available: 1\/1 DaemonSet              cilium             Desired: 3, Ready: 3\/3, Available: 3\/3 Containers:            cilium             Running: 3                        cilium-operator    Running: 1 Cluster Pods:          2\/2 managed by Cilium Helm chart version:    1.15.1 Image versions         cilium             quay.io\/cilium\/cilium:v1.15.1@sha256:351d6685dc6f6ffbcd5451043167cfa8842c6decf80d8c8e426a417c73fb56d4: 3                        cilium-operator    quay.io\/cilium\/operator-generic:v1.15.1@sha256:819c7281f5a4f25ee1ce2ec4c76b6fbc69a660c68b7825e9580b1813833fa743: 1<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0447\u0435\u0440\u0435\u0437 Yandex Cloud, \u0442\u043e \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u00ab\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0443\u043d\u043d\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c\u00bb \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f0e\/395\/cad\/f0e395cadcf2dc9563e2635fce31ee71.png\" width=\"2000\" height=\"885\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f0e\/395\/cad\/f0e395cadcf2dc9563e2635fce31ee71.png\"\/><\/figure>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"%D0%9F%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B8%D0%BC%20%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\" id=\"\u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\"><\/a><\/p>\n<h2>\u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Cilium \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0444\u0438\u0448\u0435\u043a \u0438 \u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u043c. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432.<\/p>\n<p><a class=\"anchor\" name=\"%D0%9F%D0%BE%D0%BA%D0%B0,%20kube-proxy\" id=\"\u041f\u043e\u043a\u0430, kube-proxy\"><\/a><\/p>\n<h3>\u041f\u043e\u043a\u0430, kube-proxy<\/h3>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u0447 Cilium \u2013 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c kube-proxy. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f? \u0417\u0430\u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 kube-proxy:<\/p>\n<pre><code>$ kubeadm init --skip-phases=addon\/kube-proxy<\/code><\/pre>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c Cilium \u0447\u0435\u0440\u0435\u0437 Helm, \u0442\u043e \u0432 values \u0447\u0430\u0440\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>kubeProxyReplacement: true k8sServiceHost: &lt;\u0430\u0434\u0440\u0435\u0441 kube-apiserver> k8sServicePort: &lt;\u043f\u043e\u0440\u0442 kube-apiserver><\/code><\/pre>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b cilium, \u0442\u043e CLI \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 kube-proxy \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>$ cilium install --version 1.15.1 \u2139  Using Cilium version 1.15.1 ? Auto-detected cluster name: kubernetes ? Auto-detected kube-proxy has not been installed \u2139  Cilium will fully replace all functionalities of kube-proxy<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u043c\u0435\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u043f\u043e\u0434\u0435 Cilium-\u0430\u0433\u0435\u043d\u0442\u0430:<\/p>\n<pre><code>$ kubectl exec -n kube-system cilium-pnjxh -- cilium status --verbose &lt;...> KubeProxyReplacement Details:   Status:                 Strict   Socket LB:              Enabled   Socket LB Tracing:      Enabled   Socket LB Coverage:     Full   Devices:                eth0   10.12.12.5 fe80::d20d:10ff:fe08:9a52 (Direct Routing)   Mode:                   SNAT   Backend Selection:      Random   Session Affinity:       Enabled   Graceful Termination:   Enabled   NAT46\/64 Support:       Disabled   XDP Acceleration:       Disabled   Services:   - ClusterIP:      Enabled   - NodePort:       Enabled (Range: 30000-32767)   - LoadBalancer:   Enabled   - externalIPs:    Enabled   - HostPort:       Enabled &lt;...><\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u00abStatus\u00bb \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00abStrict\u00bb \u0438\u043b\u0438 \u00abTrue\u00bb, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0430\u0433\u0435\u043d\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0437\u0430\u043c\u0435\u043d\u044b kube-proxy.<\/p>\n<p><a class=\"anchor\" name=\"%D0%A2%D0%B5%D1%81%D1%82%D1%8B%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\" id=\"\u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\"><\/a><\/p>\n<h3>\u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p>\u041d\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438<a href=\"https:\/\/youtu.be\/bIRwSIwNHC0?si=-KrfEwr_xsGHLH1R\"> <\/a>\u00ab<a href=\"https:\/\/youtu.be\/bIRwSIwNHC0?si=-KrfEwr_xsGHLH1R\"><u>Liberating Kubernetes From Kube-proxy and Iptables<\/u><\/a>\u00bb \u041c\u0430\u0440\u0442\u0438\u043d\u0430\u0441 \u041f\u0443\u043c\u043f\u0443\u0442\u0438\u0441, \u043e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Cilium, \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u0433\u0434\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c Cilium (eBPF) \u0438 kube-proxy (ipvs \u0438 iptables).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/70e\/87e\/7b7\/70e87e7b7e1991d0d483ab5ff9ade942.png\" width=\"2000\" height=\"1123\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/70e\/87e\/7b7\/70e87e7b7e1991d0d483ab5ff9ade942.png\"\/><\/figure>\n<p>\u041e\u0441\u044c Y \u043d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u2013 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445, \u043e\u0441\u044c X \u2013 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0440\u0430\u0441\u0442\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 kube-proxy \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 iptables. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 kube-proxy \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u0446\u0435\u043f\u0438 iptables, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 O(n)). \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0430\u0432\u0438\u043b \u0432 \u0446\u0435\u043f\u0438, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<p>\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 Cilium \u0438 kube-proxy \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 ipvs \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 O(1) (\u0432 Cilium \u044d\u0442\u043e lookup hash-\u0442\u0430\u0431\u043b\u0438\u0446\u044b), \u043f\u0440\u0438 \u044d\u0442\u043e\u043c Cilium \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0443\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 netperf (\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u2013 \u0442\u0435\u0441\u0442 TCP_CRR), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f TCP-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u0432\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u0442\u0435\u0441\u0442 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u043c ipvs, \u0431\u0443\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e eBPF \u0438 iptables. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043d\u043e\u0434 (\u043e\u0434\u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440-\u043d\u043e\u0434\u0430 \u0438 \u0434\u0432\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0430) \u043d\u0430 Ubuntu 22.04 \u0432 Yandex Cloud.<\/p>\n<p>netperf \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u043f\u043b\u043e\u0438\u043c netserver \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 (\u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c NodePort \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u0430\u043a \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438):<\/p>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u043f\u0443\u0441\u043a netserver<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>apiVersion: apps\/v1 kind: Deployment metadata:   name: netserver   labels:     app: netserver spec:   replicas: 1   selector:     matchLabels:       app: netserver   template:     metadata:       labels:         app: netserver     spec:       containers:       - name: netserver         image: networkstatic\/netserver:latest         args:           - -D         ports:         - containerPort: 12865         - containerPort: 30002 --- apiVersion: v1 kind: Service metadata:   name: netserver spec:   type: NodePort   selector:     app: netserver   ports:     # netperf \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 2 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f - \u043e\u0434\u043d\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u0435\u0441\u0442\u0435, \u0434\u0440\u0443\u0433\u043e\u0435 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430     - protocol: TCP       port: 12865       targetPort: 12865       nodePort: 30001       name: control     - protocol: TCP       port: 30002       targetPort: 30002       nodePort: 30002       name: data<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e \u043b\u043e\u0433\u0430\u043c, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<pre><code>$ kubectl logs &lt;\u043f\u043e\u0434 netserver> Starting netserver with host 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432\u043d\u0435\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u0442 \u043d\u043e\u0434\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u0441 netserver.<\/p>\n<pre><code>$ netperf -t TCP_CRR -H &lt;\u0430\u0434\u0440\u0435\u0441 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430> -p 30001 -- -P 30002 -o rt_latency<\/code><\/pre>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0444\u043b\u0430\u0433\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><code>t TCP_CRR<\/code> \u2013 \u0442\u0438\u043f \u0442\u0435\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p><code>H<\/code> \u2013 \u0445\u043e\u0441\u0442, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 (\u0442\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d netserver);<\/p>\n<\/li>\n<li>\n<p><code>p 30001<\/code> \u2013 \u043f\u043e\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u0442 netserver.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u00ab&#8212;\u00bb \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0430 (<code>-P 30002<\/code>) \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e\u0434 \u00ab\u00b5seq per tx\u00bb \u043d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u043c\u0435\u043b\u0438 \u0432 \u0432\u0438\u0434\u0443 rt_latency, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432:<\/p>\n<pre><code>for i in {1..2767}; do cat &lt;&lt;EOF | kubectl delete -f - apiVersion: v1 kind: Service metadata:   name: netserver-$i spec:   selector:     app: netserver   ports:     - protocol: TCP       port: 12865       targetPort: 12865       name: control     - protocol: TCP       port: 30002       targetPort: 30002       name: data EOF done<\/code><\/pre>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/32b\/540\/23b\/32b54023b5650e78ac4ed3f67f7b0873.png\" width=\"1489\" height=\"919\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/32b\/540\/23b\/32b54023b5650e78ac4ed3f67f7b0873.png\"\/><\/figure>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0435\u0441\u0442 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u0434\u0430\u0436\u0435 \u0433\u0440\u0443\u0431\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u0434\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u2013 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 kube-proxy \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0441\u0442\u0435\u0442 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a Cilium \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435.<\/p>\n<p><a class=\"anchor\" name=\"%D0%9A%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5%20%D1%84%D0%B8%D1%87%D0%B8%20Cilium\" id=\"\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 Cilium\"><\/a><\/p>\n<h2>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 Cilium<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d? \u041f\u0435\u0440\u0432\u043e\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435 \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e \u043d\u0430\u043c, \u0447\u0442\u043e eBPF \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 Cilium \u043d\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0432\u0435\u0434\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p><a class=\"anchor\" name=\"%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C%20%D0%B8%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B8\" id=\"\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438\"><\/a><\/p>\n<h3>\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438<\/h3>\n<p>Cilium \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0438\u0431\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a. \u0418\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 Cilium \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a Kubernetes: \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443 \u043f\u043e\u0434\u0430 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 ingress- \u0438 egress-\u0442\u0440\u0430\u0444\u0438\u043a, \u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0434 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438, \u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u00abdefault deny\u00bb. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u0435\u0441\u044c \u0442\u0440\u0430\u0444\u0438\u043a, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438, \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041e\u0442\u0432\u0435\u0442\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0438\u043c\u043f\u043b\u0438\u0446\u0438\u0442\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d. Cilium \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0435 \u0434\u0432\u0430 \u0440\u0435\u0436\u0438\u043c\u0430:<\/p>\n<ul>\n<li>\n<p><strong>always<\/strong> \u2013 \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u00abdefault deny\u00bb \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u044b \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043e\u043d\u0438 \u043f\u043e\u0434 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u0438\u043b\u0438 \u043d\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p><strong>never<\/strong> \u2013 \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u043c\u043e\u0436\u043d\u043e \u0432 values.yaml \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>extraEnv: - name: CILIUM_ENABLE_POLICY   value: &lt;default,always,never><\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 Cilium, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (<code>backend1<\/code> \u0438 <code>backend2<\/code>) \u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. <code>backend1<\/code> \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f <code>backend2<\/code>, \u0430 <code>backend2<\/code> \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0411\u0414. \u0422\u043e\u0433\u0434\u0430 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 <code>CiliumNetworkPolicy<\/code> \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 <code>backend2<\/code> \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>apiVersion: \"cilium.io\/v2\" kind: CiliumNetworkPolicy metadata:   name: example spec:   endpointSelector:     matchLabels:       app: backend2   ingress:   - fromEndpoints:     - matchLabels:         app: backend1     toPorts:     - ports:       - port: \"5000\"         protocol: TCP   egress:   - toEndpoints:     - matchLabels:         app: database     toPorts:     - ports:       - port: \"5432\"         protocol: TCP   description: Allow backend1 ingress and DB egress<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043b\u044f:<\/p>\n<ul>\n<li>\n<p><strong>endpointSelector<\/strong> \u2013 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0432, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>ingress<\/strong> \u2013 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>egress<\/strong> \u2013 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>description<\/strong> \u2013 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (\u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0431\u0443\u0434\u0435\u0442\u0435, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0432\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0438).<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u044b \u0441 \u043b\u0435\u0439\u0431\u043b\u043e\u043c <code>app: backend2<\/code> \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0438\u0437 \u043f\u043e\u0434\u043e\u0432 \u0441 \u043b\u0435\u0439\u0431\u043b\u043e\u043c <code>app: backend1<\/code> \u043d\u0430 \u043f\u043e\u0440\u0442 5000 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u043f\u043e\u0434\u044b \u0441 \u043b\u0435\u0439\u0431\u043b\u043e\u043c <code>app: database<\/code> \u043d\u0430 \u043f\u043e\u0440\u0442 5432.\u00a0<\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u0447\u0435\u0440\u0435\u0437 Calico, \u0438 \u0434\u0430\u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a Kubernetes, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a Cilium \u044d\u0442\u0438\u043c \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p><a class=\"anchor\" name=\"%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0%20ingress%20%D0%B8%20egress\" id=\"\u041f\u0440\u0430\u0432\u0438\u043b\u0430 ingress \u0438 egress\"><\/a><\/p>\n<h4>\u041f\u0440\u0430\u0432\u0438\u043b\u0430 ingress \u0438 egress<\/h4>\n<p>\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 Cilium \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u00ab\u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044f\u0445\u00bb (identity). \u0418\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u0438 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e\u043c, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043b\u0435\u0439\u0431\u043b\u043e\u0432. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u043e\u0434\u0430\u043c\u0438, \u043b\u0435\u0439\u0431\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043e\u0432.<\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 Cilium-\u0430\u0433\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0435\u0439<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>$ kubectl exec -n kube-system ds\/cilium -- cilium identity list  ID      LABELS 1       reserved:host 2       reserved:world 3       reserved:unmanaged 4       reserved:health 5       reserved:init 6       reserved:remote-node 7       reserved:kube-apiserver         reserved:remote-node 8       reserved:ingress 9       reserved:world-ipv4 10      reserved:world-ipv6 6488    k8s:app=backend1         k8s:io.cilium.k8s.namespace.labels.kubernetes.io\/metadata.name=default         k8s:io.cilium.k8s.policy.cluster=kubernetes         k8s:io.cilium.k8s.policy.serviceaccount=default         k8s:io.kubernetes.pod.namespace=default 13657   k8s:app=database         k8s:io.cilium.k8s.namespace.labels.kubernetes.io\/metadata.name=default         k8s:io.cilium.k8s.policy.cluster=kubernetes         k8s:io.cilium.k8s.policy.serviceaccount=default         k8s:io.kubernetes.pod.namespace=default 24168   k8s:io.cilium.k8s.namespace.labels.kubernetes.io\/metadata.name=kube-system         k8s:io.cilium.k8s.policy.cluster=kubernetes         k8s:io.cilium.k8s.policy.serviceaccount=coredns         k8s:io.kubernetes.pod.namespace=kube-system         k8s:k8s-app=kube-dns 64056   k8s:app=backend2         k8s:io.cilium.k8s.namespace.labels.kubernetes.io\/metadata.name=default         k8s:io.cilium.k8s.policy.cluster=kubernetes         k8s:io.cilium.k8s.policy.serviceaccount=default         k8s:io.kubernetes.pod.namespace=default<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u0438\u0437 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 6488 (k8s:app=backend1) \u0432 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c 64056 (k8s:app=backend2) \u0438 \u0438\u0437 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 64056 \u0432 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c 13657 (k8s:app=database). \u0418\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0434\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 Cilium \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0439 \u043f\u0440\u0430\u0432\u0438\u043b ingress \u0438 egress \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>CIDR:<\/p>\n<pre><code>spec:   egress:   - toCIDR:     - 192.168.3.1\/32<\/code><\/pre>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u0441\u0435\u0440\u0432\u0438\u0441\u044b:<\/p>\n<pre><code>spec:   egress:   - toServices:     - k8sService:         serviceName: some-service         namespace: default<\/code><\/pre>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>DNS-\u0438\u043c\u0435\u043d\u0430:<\/p>\n<pre><code>spec:   egress:   - toFQDNs:     - matchName: \"example.com\"<\/code><\/pre>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>ICMP:<\/p>\n<pre><code>spec:   egress:   - icmps:     - fields:       - type: 0         family: IPv4<\/code><\/pre>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u00ab\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438\u00bb (entity):<\/p>\n<pre><code>spec:   egress:   - toEntities:     - host<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><strong>host<\/strong> \u2013 \u0445\u043e\u0441\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434;<\/p>\n<\/li>\n<li>\n<p><strong>remote-node<\/strong> \u2013 \u0432\u0441\u0435 \u043d\u043e\u0434\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434;<\/p>\n<\/li>\n<li>\n<p><strong>kube-apiserver<\/strong> \u2013 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b kube-apiserver;<\/p>\n<\/li>\n<li>\n<p><strong>ingress<\/strong> \u2013 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 Envoy, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Cilium \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f ingress-\u0442\u0440\u0430\u0444\u0438\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>cluster<\/strong> \u2013 \u0432\u0441\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u043e\u0434\u044b \u0438 \u043f\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f Cilium;<\/p>\n<\/li>\n<li>\n<p><strong>init<\/strong> \u2013 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 Cilium \u043f\u043e\u043a\u0430 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p><strong>health<\/strong> \u2013 health-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043d\u043e\u0434;<\/p>\n<\/li>\n<li>\n<p><strong>unmanaged<\/strong> \u2013 \u043f\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f Cilium;<\/p>\n<\/li>\n<li>\n<p><strong>world<\/strong> \u2013 \u0432\u043d\u0435\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p><strong>all<\/strong> \u2013 \u0434\u0443\u043c\u0430\u044e, \u0438 \u0442\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0434\u0435\u0441\u044f\u0442\u044c\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 Cilium.<\/p>\n<p><a class=\"anchor\" name=\"L7\" id=\"L7\"><\/a><\/p>\n<h4>L7<\/h4>\n<p>\u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u0444\u0438\u0447\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a Cilium \u2013 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 L7 (HTTP \u0438 Kafka). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 Envoy, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 DaemonSet \u0438\u043b\u0438 \u0432\u0448\u0438\u0442\u044b\u0439 \u0432 Cilium-\u0430\u0433\u0435\u043d\u0442.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u0435\u0449\u0435 \u0440\u0430\u0437 \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0438 \u0411\u0414. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b <code>backend1<\/code> \u043c\u043e\u0433 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e GET \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043f\u0443\u0442\u044c <code>\/api\/users<\/code> \u0432 <code>backend2<\/code>. \u0422\u043e\u0433\u0434\u0430 \u043d\u0430\u0448 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code>apiVersion: \"cilium.io\/v2\" kind: CiliumNetworkPolicy metadata:   name: example spec:   endpointSelector:     matchLabels:       app: backend2   ingress:   - fromEndpoints:     - matchLabels:         env: backend1     toPorts:     - ports:       - port: \"5000\"         protocol: TCP       rules:         http:         - method: \"GET\"           path: \"\/api\/users\"<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B8%20%D0%BD%D0%BE%D0%B4\" id=\"\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u043e\u0434\"><\/a><\/p>\n<h4>\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u043e\u0434<\/h4>\n<p>\u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0430\u0435\u0440\u0432\u043e\u043b\u0430 \u0434\u043b\u044f \u0445\u043e\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Cilium. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 <code>values.yaml<\/code> \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <code>hostFirewall.enabled: true<\/code>. \u0412 \u043f\u043e\u043b\u0435 <code>devices:<\/code> \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0442\u043e Cilium \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u0438\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438).<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0441 \u0445\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u043e\u0434, \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a kube-apiserver. \u042d\u0442\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u043c\u0438 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 <code>hostNetwork: true<\/code>) \u0438 \u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b \u0443\u0440\u043e\u0432\u043d\u044f L7.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u043e\u0434\u0430\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e SSH, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442:<\/p>\n<pre><code>apiVersion: \"cilium.io\/v2\" kind: CiliumClusterwideNetworkPolicy metadata:   name: example spec:   nodeSelector:     matchLabels:       node: ssh   ingress:   - fromEntities:     - cluster   - toPorts:     - ports:       - port: \"22\"         protocol: TCP<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0437\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f <code>CiliumClusterwideNetworkPolicy<\/code>, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0430 \u043d\u0435 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u043c\u0435\u0441\u0442\u043e <code>endpointSelector<\/code> \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>nodeSelector<\/code> \u0441 \u043b\u0435\u0439\u0431\u043b\u0430\u043c\u0438 \u043d\u043e\u0434, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 (<code>node: ssh<\/code>). \u0412 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 \u043c\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0438\u0437 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 <code>cluster<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043d\u043e\u0434\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u0440\u0442\u0443 22.<\/p>\n<p><a class=\"anchor\" name=\"%D0%92%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA\" id=\"\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\"><\/a><\/p>\n<h4>\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a<\/h4>\n<p>\u0415\u0449\u0435 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043f\u0440\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Cilium, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 <code>NetworkPolicy<\/code> \u0438\u043b\u0438 <code>CiliumNetworkPolicy<\/code>. \u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e<a href=\"https:\/\/editor.networkpolicy.io\/\"> <u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2b2\/3a0\/32e\/2b23a032e7cd56b3f286247628681f93.png\" width=\"2000\" height=\"1490\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2b2\/3a0\/32e\/2b23a032e7cd56b3f286247628681f93.png\"\/><\/figure>\n<p><a class=\"anchor\" name=\"Observability%20%D0%B8%20Hubble\" id=\"Observability \u0438 Hubble\"><\/a><\/p>\n<h3>Observability \u0438 Hubble<\/h3>\n<p>Hubble \u2013 \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Cilium. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f eBPF \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u044f\u043c\u043e \u0432 \u044f\u0434\u0440\u0435 Linux, \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 sidecar-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u0438 \u0442.\u043f. Hubble \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>Hubble-\u0441\u0435\u0440\u0432\u0435\u0440, \u0432\u0448\u0438\u0442\u044b\u0439 \u0432 Cilium-\u0430\u0433\u0435\u043d\u0442. \u041e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u043e\u0434\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442.<\/p>\n<\/li>\n<li>\n<p>Hubble Relay, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u0441\u0435\u0445 Hubble-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u0449\u0435\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0439 API.<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0438\u0447\u0438 Hubble, \u0432 values.yaml \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>hubble-ui.yaml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>--- # Source: cilium\/templates\/hubble-ui-serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata:   name: \"hubble-ui\"   namespace: kube-system --- # Source: cilium\/templates\/hubble-ui-configmap.yaml apiVersion: v1 kind: ConfigMap metadata:   name: hubble-ui-envoy   namespace: kube-system data:   envoy.yaml: |     static_resources:       listeners:         - name: listener_hubble_ui           address:             socket_address:               address: 0.0.0.0               port_value: 8081           filter_chains:             - filters:                 - name: envoy.filters.network.http_connection_manager                   typed_config:                     \"@type\": type.googleapis.com\/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager                     codec_type: auto                     stat_prefix: ingress_http                     route_config:                       name: local_route                       virtual_hosts:                         - name: local_service                           domains: [\"*\"]                           routes:                             - match:                                 prefix: \"\/api\/\"                               route:                                 cluster: backend                                 prefix_rewrite: \"\/\"                                 timeout: 0s                                 max_stream_duration:                                   grpc_timeout_header_max: 0s                             - match:                                 prefix: \"\/\"                               route:                                 cluster: frontend                           cors:                             allow_origin_string_match:                               - prefix: \"*\"                             allow_methods: GET, PUT, DELETE, POST, OPTIONS                             allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout                             max_age: \"1728000\"                             expose_headers: grpc-status,grpc-message                     http_filters:                       - name: envoy.filters.http.grpc_web                       - name: envoy.filters.http.cors                       - name: envoy.filters.http.router       clusters:         - name: frontend           connect_timeout: 0.25s           type: strict_dns           lb_policy: round_robin           load_assignment:             cluster_name: frontend             endpoints:               - lb_endpoints:                   - endpoint:                       address:                         socket_address:                           address: 127.0.0.1                           port_value: 8080         - name: backend           connect_timeout: 0.25s           type: logical_dns           lb_policy: round_robin           http2_protocol_options: {}           load_assignment:             cluster_name: backend             endpoints:               - lb_endpoints:                   - endpoint:                       address:                         socket_address:                           address: 127.0.0.1                           port_value: 8090 --- # Source: cilium\/templates\/hubble-ui-clusterrole.yaml kind: ClusterRole apiVersion: rbac.authorization.k8s.io\/v1 metadata:   name: hubble-ui rules:   - apiGroups:       - networking.k8s.io     resources:       - networkpolicies     verbs:       - get       - list       - watch   - apiGroups:       - \"\"     resources:       - componentstatuses       - endpoints       - namespaces       - nodes       - pods       - services     verbs:       - get       - list       - watch   - apiGroups:       - apiextensions.k8s.io     resources:       - customresourcedefinitions     verbs:       - get       - list       - watch   - apiGroups:       - cilium.io     resources:       - \"*\"     verbs:       - get       - list       - watch --- # Source: cilium\/templates\/hubble-ui-clusterrolebinding.yaml kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io\/v1 metadata:   name: hubble-ui roleRef:   apiGroup: rbac.authorization.k8s.io   kind: ClusterRole   name: hubble-ui subjects:   - kind: ServiceAccount     namespace: kube-system     name: \"hubble-ui\" --- # Source: cilium\/templates\/hubble-ui-service.yaml kind: Service apiVersion: v1 metadata:   name: hubble-ui   labels:     k8s-app: hubble-ui   namespace: kube-system spec:   selector:     k8s-app: hubble-ui   ports:     - name: http       port: 80       targetPort: 8081   type: ClusterIP --- # Source: cilium\/templates\/hubble-ui-deployment.yaml kind: Deployment apiVersion: apps\/v1 metadata:   namespace: kube-system   labels:     k8s-app: hubble-ui   name: hubble-ui spec:   replicas: 1   selector:     matchLabels:       k8s-app: hubble-ui   template:     metadata:       annotations:       labels:         k8s-app: hubble-ui     spec:       securityContext:         runAsUser: 1001       serviceAccount: \"hubble-ui\"       serviceAccountName: \"hubble-ui\"       containers:         - name: frontend           image: \"quay.io\/cilium\/hubble-ui:v0.7.9@sha256:e0e461c680ccd083ac24fe4f9e19e675422485f04d8720635ec41f2ba9e5562c\"           imagePullPolicy: IfNotPresent           ports:             - containerPort: 8080               name: http           resources: {}         - name: backend           image: \"quay.io\/cilium\/hubble-ui-backend:v0.7.9@sha256:632c938ef6ff30e3a080c59b734afb1fb7493689275443faa1435f7141aabe76\"           imagePullPolicy: IfNotPresent           env:             - name: EVENTS_SERVER_PORT               value: \"8090\"             - name: FLOWS_API_ADDR               value: \"hubble-relay:80\"           ports:             - containerPort: 8090               name: grpc           resources: {}         - name: proxy           image: \"docker.io\/envoyproxy\/envoy:v1.18.2@sha256:e8b37c1d75787dd1e712ff389b0d37337dc8a174a63bed9c34ba73359dc67da7\"           imagePullPolicy: IfNotPresent           ports:             - containerPort: 8081               name: http           resources: {}           command: [\"envoy\"]           args: [\"-c\", \"\/etc\/envoy.yaml\", \"-l\", \"info\"]           volumeMounts:             - name: hubble-ui-envoy-yaml               mountPath: \/etc\/envoy.yaml               subPath: envoy.yaml       volumes:         - name: hubble-ui-envoy-yaml           configMap:             name: hubble-ui-envoy<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043e\u043c\u0438\u043c\u043e Hubble Relay \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f Hubble UI \u2013 \u0432\u0435\u0431 GUI-\u043a\u043b\u0438\u0435\u043d\u0442. \u041a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>cilium hubble ui<\/code> \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e port-forward. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0434\u0435\u043c\u043e \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f Cilium \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439:<\/p>\n<pre><code>kubectl create -f &lt;https:\/\/raw.githubusercontent.com\/cilium\/cilium\/HEAD\/examples\/kubernetes-grpc\/cc-door-app.yaml> kubectl exec terminal-87 -- python3 \/cloudcity\/cc_door_client.py GetName 1<\/code><\/pre>\n<p>\u0414\u0435\u043c\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043f\u043e\u0434\u0430 <code>terminal-87<\/code>, \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430 <code>cc-door-mgr<\/code> \u0438 \u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c gRPC-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 <code>cc-door-mgr<\/code>. \u0415\u0441\u043b\u0438 \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c Hubble UI \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0442\u043e \u043e\u043d \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0440\u0438\u0441\u0443\u0435\u0442 \u043a\u0430\u0440\u0442\u0443 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c80\/b88\/12e\/c80b8812ea99a36d51b1daa5b8ad8509.png\" width=\"2000\" height=\"1682\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c80\/b88\/12e\/c80b8812ea99a36d51b1daa5b8ad8509.png\"\/><\/figure>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u0434\u0432\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u2013 <code>public-terminal<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u043e\u0434\u0443 <code>terminal-87<\/code>, \u0438 <code>cc-door-mgr<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u043e\u0434\u0430\u043c \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430 <code>cc-door-mgr<\/code>. \u0421\u0442\u0440\u0435\u043b\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430: \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0440\u0430\u0444\u0438\u043a \u0448\u0435\u043b \u043e\u0442 <code>public-terminal<\/code> \u0434\u043e <code>cc-door-mgr<\/code> \u043d\u0430 \u043f\u043e\u0440\u0442 50051 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 TCP.\u00a0<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432\u0435\u0440\u0434\u0438\u043a\u0442 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a (\u0442.\u0435. \u0431\u044b\u043b \u043b\u0438 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d \u044d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u0442), TCP-\u0444\u043b\u0430\u0433\u0438, \u043b\u0435\u0439\u0431\u043b\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0442.\u0434.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/76c\/d32\/511\/76cd32511dc155b67374a9ff210cbb64.png\" width=\"2000\" height=\"739\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/76c\/d32\/511\/76cd32511dc155b67374a9ff210cbb64.png\"\/><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0443 Hubble \u0435\u0441\u0442\u044c CLI-\u043a\u043b\u0438\u0435\u043d\u0442. \u0412 \u043f\u043e\u0434\u0435 Cilium-\u0430\u0433\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0443 \u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>hubble observe<\/code>:<\/p>\n<pre><code>$ hubble observe -n default  Apr  3 07:38:36.239: default\/terminal-87:52380 (ID:6040) -> default\/cc-door-mgr-76658457d4-sm5dp:50051 (ID:1419) to-endpoint FORWARDED  (TCP Flags: ACK, PSH) Apr  3 07:38:36.239: default\/terminal-87:52380 (ID:6040) &lt;> default\/cc-door-mgr-76658457d4-sm5dp (ID:1419) pre-xlate-rev TRACED (TCP) Apr  3 07:38:36.239: default\/terminal-87:52380 (ID:6040) &lt;- default\/cc-door-mgr-76658457d4-sm5dp:50051 (ID:1419) to-endpoint FORWARDED  (TCP Flags: ACK, PSH) Apr  3 07:38:36.240: default\/terminal-87:52380 (ID:6040) &lt;- default\/cc-door-mgr-76658457d4-sm5dp:50051 (ID:1419) to-endpoint FORWARDED  (TCP Flags: ACK, FIN) Apr  3 07:38:36.240: default\/terminal-87:52380 (ID:6040) -> default\/cc-door-mgr-76658457d4-sm5dp:50051 (ID:1419) to-endpoint FORWARDED  (TCP Flags: ACK) Apr  3 07:38:36.240: default\/terminal-87:52380 (ID:6040) -> default\/cc-door-mgr-76658457d4-sm5dp:50051 (ID:1419) to-endpoint FORWARDED  (TCP Flags: ACK, FIN) &lt;...><\/code><\/pre>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0443 Hubble \u0435\u0441\u0442\u044c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 \u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u0438 \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0432 values.yaml \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438. \u0421 \u043f\u043e\u043b\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043c\u0435\u0442\u0440\u0438\u043a \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f<a href=\"https:\/\/docs.cilium.io\/en\/stable\/observability\/metrics\/#hubble-exported-metrics\"> <u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<pre><code>hubble:   metrics:     enabled: \"{tcp,icmp,httpV2,drop}\"<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3%20L7\" id=\"\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 L7\"><\/a><\/p>\n<h4>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 L7<\/h4>\n<p>\u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430\u0445 Hubble \u0432\u044b\u0448\u0435 \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u0435\u0441\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u00abL7 info\u00bb. \u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u043f\u0443\u0441\u0442, \u0435\u0441\u043b\u0438 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c gRPC-\u0437\u0430\u043f\u0440\u043e\u0441, \u0442.\u0435. \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 L7? \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Cilium \u0438 Hubble \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 L3\/L4. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f L7 \u0441\u0442\u0430\u043b\u0438 \u0432\u0438\u0434\u043d\u044b, \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u044f L7. \u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0435\u043c\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442:<\/p>\n<pre><code>apiVersion: \"cilium.io\/v2\" kind: CiliumNetworkPolicy metadata:   name: example spec:   endpointSelector:     matchLabels:       app: cc-door-mgr   ingress:   - fromEndpoints:     - matchLabels:         app: public-terminal     toPorts:     - ports:       - port: \"50051\"         protocol: TCP       rules:         http:         - method: \"POST\"           path: \"\/cloudcity.DoorManager\/GetName\"<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a gRPC \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 HTTP, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HTTP-\u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0441 \u043f\u0443\u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 gRPC-\u0432\u044b\u0437\u043e\u0432\u0443. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <code>\/cloudcity.DoorManager\/GetName<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043b\u044e\u0431\u043e\u0439 L7-\u0442\u0440\u0430\u0444\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0443 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443, \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u043d \u0432 Hubble:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a40\/1e4\/fc9\/a401e4fc9d46c38fa742e137226e940e.png\" width=\"2000\" height=\"1911\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a40\/1e4\/fc9\/a401e4fc9d46c38fa742e137226e940e.png\"\/><\/figure>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0435\u0440\u0435\u0437 CLI (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430 \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443):<\/p>\n<pre><code>$ hubble observe -n default -f -t l7  Apr  3 17:19:45.115: default\/terminal-87:41982 (ID:6040) -> default\/cc-door-mgr-76658457d4-sm5dp:50051 (ID:1419) http-request FORWARDED (HTTP\/2 POST &lt;http:\/\/cc-door-server:50051\/cloudcity.DoorManager\/GetName>) Apr  3 17:19:45.117: default\/terminal-87:41982 (ID:6040) &lt;- default\/cc-door-mgr-76658457d4-sm5dp:50051 (ID:1419) http-response FORWARDED (HTTP\/2 200 1ms (POST &lt;http:\/\/cc-door-server:50051\/cloudcity.DoorManager\/GetName>))<\/code><\/pre>\n<p>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 L7 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438 Envoy-\u043f\u0440\u043e\u043a\u0441\u0438 \u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443. \u00abRedirected\u00bb \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u00abVerdict\u00bb \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0432\u044b\u0448\u0435 \u043a\u0430\u043a \u0440\u0430\u0437 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 Envoy.<\/p>\n<p>L7-\u0442\u0440\u0430\u0444\u0438\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u0432 TLS-\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0445. \u042d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u043e. \u042f \u0431\u044b \u043d\u0435 \u043d\u0430\u0437\u0432\u0430\u043b \u044d\u0442\u0443 \u0444\u0438\u0447\u0443 \u0443\u0434\u043e\u0431\u043d\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043f\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 CA-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445 \u044d\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0439 \u0433\u0430\u0439\u0434 \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/docs.cilium.io\/en\/stable\/security\/tls-visibility\/\"><u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<p><a class=\"anchor\" name=\"Ingress-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%20%D0%B8%20Gateway%20API\" id=\"Ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438 Gateway API\"><\/a><\/p>\n<h3>Ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438 Gateway API<\/h3>\n<p>Cilium \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 Gateway API. \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0444\u0438\u0447 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u0443 kube-proxy (\u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b <a href=\"#%D0%9F%D0%BE%D0%BA%D0%B0,%20kube-proxy\"><strong>\u041f\u043e\u043a\u0430, kube-proxy<\/strong><\/a>), \u0430 \u0432 <code>values.yaml<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>ingressController:   enabled: true   loadbalancerMode: shared<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432 \u043f\u043e\u043b\u0435 <code>ingressController.loadbalancerMode<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><code>dedicated<\/code> \u2013 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e ingress;<\/p>\n<\/li>\n<li>\n<p><code>shared<\/code> \u2013 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 ingress \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043e\u0431\u0449\u0438\u0439 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 NodePort, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>ingressController:   enabled: true   loadbalancerMode: shared   service:     type: NodePort     insecureNodePort: 30080     secureNodePort: 30443<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043e\u043b\u044f <code>insecureNodePort<\/code> \u0438 <code>secureNodePort<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432 HTTP \u0438 HTTPS \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0430 \u0432 <code>type<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0438\u043f \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 CRD \u0434\u043b\u044f Gateway API:<\/p>\n<pre><code>$ kubectl apply -f &lt;https:\/\/raw.githubusercontent.com\/kubernetes-sigs\/gateway-api\/v1.0.0\/config\/crd\/standard\/gateway.networking.k8s.io_gatewayclasses.yaml> $ kubectl apply -f &lt;https:\/\/raw.githubusercontent.com\/kubernetes-sigs\/gateway-api\/v1.0.0\/config\/crd\/standard\/gateway.networking.k8s.io_gateways.yaml> $ kubectl apply -f &lt;https:\/\/raw.githubusercontent.com\/kubernetes-sigs\/gateway-api\/v1.0.0\/config\/crd\/standard\/gateway.networking.k8s.io_httproutes.yaml> $ kubectl apply -f &lt;https:\/\/raw.githubusercontent.com\/kubernetes-sigs\/gateway-api\/v1.0.0\/config\/crd\/standard\/gateway.networking.k8s.io_referencegrants.yaml> $ kubectl apply -f &lt;https:\/\/raw.githubusercontent.com\/kubernetes-sigs\/gateway-api\/v1.0.0\/config\/crd\/experimental\/gateway.networking.k8s.io_grpcroutes.yaml> $ kubectl apply -f &lt;https:\/\/raw.githubusercontent.com\/kubernetes-sigs\/gateway-api\/v1.0.0\/config\/crd\/experimental\/gateway.networking.k8s.io_tlsroutes.yaml><\/code><\/pre>\n<p>\u0418 \u0432 <code>values.yaml<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>gatewayAPI:   enabled: true<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0441\u043a\u0430\u0442\u043a\u0438 \u0447\u0430\u0440\u0442\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Cilium-\u0430\u0433\u0435\u043d\u0442\u044b \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440:<\/p>\n<pre><code>$ kubectl -n kube-system rollout restart deployment\/cilium-operator $ kubectl -n kube-system rollout restart ds\/cilium<\/code><\/pre>\n<p>\u0412 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f <code>IngressClass<\/code> \u0438 <code>GatewayClass cilium<\/code>.<\/p>\n<p>\u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e Ingress- \u0438 Gateway API-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d Ingress- \u0438\u043b\u0438 Gateway API-\u0440\u0435\u0441\u0443\u0440\u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0422\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0433\u0440\u0435\u0441\u0441\u0430 \u0432 \u044f\u0434\u0440\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u043c\u043e\u0434\u0443\u043b\u0438 <code>xt_socket<\/code> \u0438 <code>iptable_raw<\/code>. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, NixOS) \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u043e\u0431\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0444\u0438\u0447 \u043f\u043e \u0442\u0438\u043f\u0443 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u0445\u043e\u0442\u044f \u0431\u044b basic auth), rate-\u043b\u0438\u043c\u0438\u0442\u043e\u0432 \u0438 \u0442.\u043f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043e\u043d\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f production-\u0441\u0440\u0435\u0434.<\/p>\n<p><a class=\"anchor\" name=\"L4%20%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA%D0%B8\" id=\"L4 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438\"><\/a><\/p>\n<h2>L4-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0442\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441\u0432\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u0432\u043d\u0435 \u0432\u044b, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432:<\/p>\n<ol>\n<li>\n<p><code>NodePort<\/code> \u0438\u043b\u0438 <code>hostNetwork<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>NodePort<\/code> \u0438\u043b\u0438 <code>hostNetwork<\/code> \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a Cloud native, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<\/li>\n<\/ol>\n<p>\u0411\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a Cilium \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a 3 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438, \u0438 UX \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 MetalLB \u2013 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Cilium \u0434\u043b\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0442\u0438\u043f\u043e\u043c <code>LoadBalancer<\/code>. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 <code>CiliumLoadBalancerIPPool<\/code>:<\/p>\n<pre><code>apiVersion: \"cilium.io\/v2alpha1\" kind: CiliumLoadBalancerIPPool metadata:   name: \"pool\" spec:   blocks:   - cidr: \"192.168.1.0\/24\"   - start: \"192.168.2.2\"     stop: \"192.168.2.30\"   - start: \"192.168.31.2\"<\/code><\/pre>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0444\u0438\u0447, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d, \u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0440\u0435\u0441\u0443\u0440\u0441 <code>CiliumLoadBalancerIPPool<\/code>. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0443\u043b \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u043d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>serviceSelector<\/code>:<\/p>\n<pre><code>apiVersion: \"cilium.io\/v2alpha1\" kind: CiliumLoadBalancerIPPool metadata:   name: \"pool\" spec:   blocks:   - cidr: \"192.168.1.0\/24\"   - start: \"192.168.2.2\"     stop: \"192.168.2.30\"   - start: \"192.168.31.2\"   serviceSelector:     matchLabels:       app: backend<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0435\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u043b\u044b \u0441 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u043c\u0438, \u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0449\u0438\u043c \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043e:<\/p>\n<pre><code>$ kubectl get ippool NAME      DISABLED   CONFLICTING   IPS AVAILABLE   AGE pool-1    false      False         30              2m pool-2    false      True          30              14s<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0441 \u043f\u0443\u043b\u043e\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0431\u044b\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d, \u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0442\u0438\u043f\u043e\u043c <code>LoadBalancer<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 (<code>status.loadBalancer.ingress<\/code>). \u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431 \u044d\u0442\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u0430\u0445 \u0443\u0437\u043d\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044f\u044f \u0441\u0435\u0442\u044c. \u0422\u0443\u0442 Cilium \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u2013 BGP \u0438 L2 Announcement. \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e L2 Announcement, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438).<\/p>\n<p>L2 Announcement \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 ARP, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u043e \u0441\u0443\u0442\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u043f\u043f\u0438\u043d\u0433\u043e\u043c \u043c\u0435\u0436\u0434\u0443 IP \u0438 MAC-\u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438. \u0415\u0441\u043b\u0438 \u043d\u043e\u0434\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 ARP, \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430, \u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d MAC-\u0430\u0434\u0440\u0435\u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u043e\u0434\u044b, \u0447\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430.<\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0438\u043c \u0444\u0438\u0447\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 <code>values.yaml<\/code> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 (\u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0430 kube-proxy \u0443\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430):<\/p>\n<pre><code>l2announcements:   enabled: true k8sClientRateLimit:   qps: &lt;qps>   burst: &lt;burts><\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u043d\u0443\u0442\u044c Cilium-\u0430\u0433\u0435\u043d\u0442\u044b \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440.<\/p>\n<p><code>k8sClientRateLimit<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 rate-\u043b\u0438\u043c\u0438\u0442\u043e\u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 Kubernetes, \u0442\u0430\u043a \u043a\u0430\u043a L2 Announcement \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c <code>kube-apiserver<\/code>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 Cilium-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u0438\u043c\u0438\u0442\u044b. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c<a href=\"https:\/\/docs.cilium.io\/en\/stable\/network\/l2-announcements\/#sizing-client-rate-limit\"> <u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 L2 Announcement:<\/p>\n<pre><code>apiVersion: \"cilium.io\/v2alpha1\" kind: CiliumL2AnnouncementPolicy metadata:   name: l2announcement spec:   serviceSelector:     matchLabels:       app: backend   nodeSelector:     matchExpressions:       - key: node-role.kubernetes.io\/control-plane         operator: In         values:         - l2announcement   interfaces:   - ^eth[0-9]+   externalIPs: true   loadBalancerIPs: true<\/code><\/pre>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043f\u043e\u043b\u044f\u0445:<\/p>\n<ul>\n<li>\n<p><code>serviceSelector<\/code> \u2013 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0447\u044c\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0442\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b;<\/p>\n<\/li>\n<li>\n<p><code>nodeSelector<\/code> \u2013 \u043d\u043e\u0434\u044b, \u0447\u044c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0442\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0441\u0435 \u043d\u043e\u0434\u044b;<\/p>\n<\/li>\n<li>\n<p><code>interfaces<\/code> \u2013 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b;<\/p>\n<\/li>\n<li>\n<p><code>externalIPs<\/code> \u0438 <code>loadBalancerIPs<\/code> \u2013 \u0430\u0434\u0440\u0435\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b:<\/p>\n<ul>\n<li>\n<p>\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 <code>externalIPs<\/code> \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b <code>spec.externalIPs<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 <code>loadBalancerIPs<\/code> \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d <code>status.loadbalancer.ingress<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u043b\u043e\u043c <code>CiliumLoadBalancerIPPool<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 <code>CiliumL2AnnouncementPolicy<\/code> \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b <code>Lease<\/code> \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c <code>cilium-l2announce-<\/code> \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b Ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438 Gateway API, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<pre><code>$ kubectl get lease -A NAMESPACE         NAME                                                  HOLDER                      AGE &lt;...> kube-system       cilium-l2announce-default-cilium-gateway-my-gateway   worker2                     16m kube-system       cilium-l2announce-kube-system-cilium-ingress          worker2                     16m &lt;...><\/code><\/pre>\n<p>Lease \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f \u043d\u043e\u0434\u044b-\u043b\u0438\u0434\u0435\u0440\u0430, \u0447\u0435\u0439 MAC-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u043f\u0430\u0434\u0435\u0442 \u0432 ARP-\u0442\u0430\u0431\u043b\u0438\u0446\u0443. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c worker2. \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 ARP \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u043c MAC-\u0430\u0434\u0440\u0435\u0441:<\/p>\n<pre><code>$ arp -a &lt;...> ? (192.168.31.3) at 74:56:3c:67:ec:ca on en0 ifscope [ethernet] &lt;...>  $ ifconfig &lt;...> eno1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500         inet 192.168.31.2  netmask 255.255.255.0  broadcast 0.0.0.0         inet6 fe80::7656:3cff:fe67:ecca  prefixlen 64  scopeid 0x20&lt;link>         ether 74:56:3c:67:ec:ca  txqueuelen 1000  (Ethernet)         RX packets 13313  bytes 3241632 (3.0 MiB)         RX errors 0  dropped 0  overruns 0  frame 0         TX packets 22961  bytes 24963524 (23.8 MiB)         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0<\/code><\/pre>\n<p>\u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0431\u044b\u043b <code>192.168.31.3<\/code>, \u0438 \u043e\u043d \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. MAC-\u0430\u0434\u0440\u0435\u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b <code>ifconfig<\/code>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u0441\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.<\/p>\n<p><a class=\"anchor\" name=\"Service%20Mesh\" id=\"Service Mesh\"><\/a><\/p>\n<h3>Service Mesh<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c Cilium \u0438 eBPF \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Service Mesh. \u042f \u0434\u0443\u043c\u0430\u044e, \u043d\u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u043e\u0432\u043e\u0441\u0442\u044c\u044e, \u0447\u0442\u043e \u0441\u0430\u043c\u044b\u043c \u0441\u043f\u043e\u0440\u043d\u044b\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 Service Mesh (\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, Istio \u0438 Linkerd) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 sidecar-\u043f\u0440\u043e\u043a\u0441\u0438. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043e\u043d\u0438 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u043c\u0438, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0441 \u043f\u043e\u0434\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0434\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0444\u0438\u0447\u0443 \u00absingle-tenancy\u00bb, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u043e\u0434\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u00abrace condition\u00bb \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u043e\u0434\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 Job \u0438 CronJob;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043a\u0441\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 sidecar-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0441\u043a\u043e\u0440\u0435\u0435 \u043a\u0430\u043a \u00ab\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0437\u043b\u043e\u00bb, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0438\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u0447\u0438 Service Mesh. \u041c\u043e\u0436\u0435\u0442 \u043b\u0438 Cilium \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0438 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0441 \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441 sidecar-\u043f\u0440\u043e\u043a\u0441\u0438?<\/p>\n<p>\u041e\u0442\u0432\u0435\u0442 \u2013 \u0438 \u0434\u0430, \u0438 \u043d\u0435\u0442. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0432\u0438\u0434\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d eBPF, \u0432 \u043d\u0435\u0433\u043e \u043f\u043e\u043a\u0430 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0443\u0440\u043e\u0432\u043d\u044f L7 (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u042e\u0432\u0430\u043b \u041a\u043e\u0445\u0430\u0432\u0438 \u0438\u0437 Solo.io<a href=\"https:\/\/youtu.be\/heDVglDRDNw?si=SQrKL6MLBtbWTevP\"> <u>\u0432 \u0441\u0432\u043e\u0435\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438<\/u><\/a>). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 Cilium \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Envoy \u0434\u043b\u044f L7, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0443\u0440\u043e\u0432\u043d\u0435\u0439 L3 \u0438 L4 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d \u0432 \u044f\u0434\u0440\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 eBPF.<\/p>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b \u0432\u044b\u0448\u0435, Envoy \u0432 Cilium \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443 \u043a\u0430\u043a DaemonSet, \u043b\u0438\u0431\u043e \u043a\u0430\u043a \u0432\u0448\u0438\u0442\u044b\u0439 \u0432 Cilium-\u0430\u0433\u0435\u043d\u0442. \u041f\u043e\u0445\u043e\u0436\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 Ambient-\u0440\u0435\u0436\u0438\u043c \u0432 Istio, \u0433\u0434\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443, \u043b\u0438\u0431\u043e \u043d\u0430 namespace. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0440\u0435\u0448\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b sidecar&#8217;\u043e\u0432, \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d \u0438 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0443 \u043f\u0440\u043e\u043a\u0441\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u00abnoisy neighbour\u00bb: \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c QoS \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0432\u0441\u0435 \u0435\u0433\u043e \u0442\u0435\u043d\u0430\u043d\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, Cilium \u0438\u0437\u0431\u0430\u0432\u0438\u043b\u0441\u044f \u043e\u0442 sidecar&#8217;\u043e\u0432, \u043d\u043e \u043d\u0435 \u0438\u0437\u0431\u0430\u0432\u0438\u043b\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u043a\u0441\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u043c \u043d\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445. \u0412\u043e\u043f\u0440\u043e\u0441 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a\u043e\u0439 \u0441\u043a\u043e\u0443\u043f \u0434\u043b\u044f \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c: \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0434, \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 \u0438\u043b\u0438 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443? \u0412\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u0445\u043e\u0440\u043e\u0448\u0438 \u0438 \u043f\u043b\u043e\u0445\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u043e\u0440 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439 \u0438 \u0437\u0430\u0434\u0430\u0447.<\/p>\n<p><a class=\"anchor\" name=\"Control%20plane\" id=\"Control plane\"><\/a><\/p>\n<h3>Control plane<\/h3>\n<p>Control plane \u0432 Cilium \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>Ingress;<\/p>\n<\/li>\n<li>\n<p>Gateway API;<\/p>\n<\/li>\n<li>\n<p>CiliumNetworkPolicy;<\/p>\n<\/li>\n<li>\n<p>CiliumEnvoyConfig;<\/p>\n<\/li>\n<li>\n<p>CiliumClusterideEnvoyConfig.<\/p>\n<\/li>\n<\/ol>\n<p>\u041e \u043f\u0435\u0440\u0432\u044b\u0445 \u0442\u0440\u0435\u0445 \u043f\u0443\u043d\u043a\u0442\u0430\u0445 \u044f \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0432\u044b\u0448\u0435. \u041f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, Cilium \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0444\u0438\u0447\u0430\u043c\u0438 Control plane, \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 Istio, \u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 Control plane&#8217;\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CiliumEnvoyConfig \u0438 CiliumClusterideEnvoyConfig. \u041e\u043d\u0438 \u0434\u0430\u044e\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443 Envoy \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438\u0445 listener&#8217;\u043e\u0432.<\/p>\n<p>Cilium Ingress \u0438 Gateway API \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u044d\u0442\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c Ingress \u0434\u043b\u044f Hubble UI, \u0435\u0433\u043e CiliumEnvoyConfig \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<details class=\"spoiler\">\n<summary>CiliumEnvoyConfig<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>apiVersion: cilium.io\/v2 kind: CiliumEnvoyConfig metadata:   creationTimestamp: \"2024-04-13T17:12:39Z\"   generation: 5   labels:     cilium.io\/use-original-source-address: \"false\"   name: cilium-ingress   namespace: kube-system   resourceVersion: \"1459379\"   uid: 71deeebf-6436-49d0-bd1b-5fd3f8e81b51 spec:   backendServices:   - name: hubble-ui     namespace: kube-system     number:     - http   resources:   - '@type': type.googleapis.com\/envoy.config.listener.v3.Listener     filterChains:     - filterChainMatch:         transportProtocol: raw_buffer       filters:       - name: envoy.filters.network.http_connection_manager         typedConfig:           '@type': type.googleapis.com\/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager           commonHttpProtocolOptions:             maxStreamDuration: 0s           httpFilters:           - name: envoy.filters.http.grpc_web             typedConfig:               '@type': type.googleapis.com\/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb           - name: envoy.filters.http.grpc_stats             typedConfig:               '@type': type.googleapis.com\/envoy.extensions.filters.http.grpc_stats.v3.FilterConfig               emitFilterState: true               enableUpstreamStats: true           - name: envoy.filters.http.router             typedConfig:               '@type': type.googleapis.com\/envoy.extensions.filters.http.router.v3.Router           rds:             routeConfigName: listener-insecure           statPrefix: listener-insecure           upgradeConfigs:           - upgradeType: websocket           useRemoteAddress: true     listenerFilters:     - name: envoy.filters.listener.tls_inspector       typedConfig:         '@type': type.googleapis.com\/envoy.extensions.filters.listener.tls_inspector.v3.TlsInspector     name: listener     socketOptions:     - description: Enable TCP keep-alive (default to enabled)       intValue: \"1\"       level: \"1\"       name: \"9\"     - description: TCP keep-alive idle time (in seconds) (defaults to 10s)       intValue: \"10\"       level: \"6\"       name: \"4\"     - description: TCP keep-alive probe intervals (in seconds) (defaults to 5s)       intValue: \"5\"       level: \"6\"       name: \"5\"     - description: TCP keep-alive probe max failures.       intValue: \"10\"       level: \"6\"       name: \"6\"   - '@type': type.googleapis.com\/envoy.config.route.v3.RouteConfiguration     name: listener-insecure     virtualHosts:     - domains:       - hubble.test.local       - hubble.test.local:*       name: hubble.test.local       routes:       - match:           prefix: \/         route:           cluster: kube-system:hubble-ui:http   - '@type': type.googleapis.com\/envoy.config.cluster.v3.Cluster     connectTimeout: 5s     edsClusterConfig:       serviceName: kube-system\/hubble-ui:http     name: kube-system:hubble-ui:http     outlierDetection:       splitExternalLocalOriginErrors: true     type: EDS     typedExtensionProtocolOptions:       envoy.extensions.upstreams.http.v3.HttpProtocolOptions:         '@type': type.googleapis.com\/envoy.extensions.upstreams.http.v3.HttpProtocolOptions         commonHttpProtocolOptions:           idleTimeout: 60s         useDownstreamProtocolConfig:           http2ProtocolOptions: {}   services:   - listener: \"\"     name: cilium-ingress     namespace: kube-system<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0413\u043e\u0432\u043e\u0440\u044f \u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 Control plane&#8217;\u0430\u0445, \u0443 Cilium \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Istio \u043a\u0430\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 sidecar, \u0442\u0430\u043a \u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 ambient. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f Istio \u0441 Cilium \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 c \u043b\u044e\u0431\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c CNI. \u041d\u043e \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043d\u044e\u0430\u043d\u0441\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0430 <code>kube-proxy<\/code>, \u0442\u043e \u0432 <code>values.yaml<\/code> Cilium \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c <code>socketLB.hostNamespaceOnly: true<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u0444\u0438\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u044f L7 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Cilium \u0438 Istio \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u00absplit-brain\u00bb \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D0%B5\" id=\"\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435\"><\/a><\/p>\n<h2>\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0444\u0438\u0447\u0438 Cilium. \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0435\u0445, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043c\u043d\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0433\u043b\u0443\u0431\u0436\u0435, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0449\u0435 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a<a href=\"https:\/\/docs.cilium.io\/en\/stable\/network\/clustermesh\/clustermesh\/\"> <u>\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 \u043e\u0431\u0449\u0443\u044e \u0441\u0435\u0442\u044c (Cluster mesh)<\/u><\/a> \u0438\u043b\u0438<a href=\"https:\/\/docs.cilium.io\/en\/stable\/security\/network\/encryption\/\"> <u>\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0434\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e IPsec \u0438 Wireguard<\/u><\/a>.<\/p>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u043e\u0431\u0437\u043e\u0440\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0432\u0430\u043c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 eBPF \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e \u0432 Kubernetes. \u0412\u043a\u0443\u043f\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438, \u044d\u0442\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 Cilium \u043d\u0430 \u0444\u043e\u043d\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 CNI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432\u0440\u043e\u0434\u0435 Calico \u0438 Flannel.<\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/719938\/\">\u042d\u0440\u0433\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/kts\/blog\/682062\/\">\u0417\u0430\u0447\u0435\u043c \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0432 Kubernetes<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/587236\/\">\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b Kubernetes \u0432 \u0447\u0438\u0441\u0442\u043e\u0442\u0435 \u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u0430\u043c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u0434\u0430\u0436\u0435 \u043d\u0435 \u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0443\u043a\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u043e Kubernetes \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0431\u044d\u043a\u044d\u043d\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e CNI-\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/kts\/blog\/591355\/\">Kubernetes \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/kts\/blog\/708418\/\">\u041a\u0430\u043a \u0438\u0437\u0443\u0447\u0430\u0442\u044c Kubernetes \u0434\u0436\u0443\u043d\u0443 \u2014 \u0438 \u0437\u0430\u0447\u0435\u043c<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/593599\/\">\u0414\u0435\u043f\u043b\u043e\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Django \u0432 Kubernetes \u0441 \u043d\u0443\u043b\u044f<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/825136\/\"> https:\/\/habr.com\/ru\/articles\/825136\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0430\u043d\u0438\u0438\u043b, \u044f DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0432 <a href=\"https:\/\/kts.tech\/\"><u>KTS<\/u><\/a>.<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e Cilium \u2013 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u043e\u043c CNI-\u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0434\u043b\u044f Kubernetes \u0441 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 eBPF \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e CNI, Cilium \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0438\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 eBPF \u0438 \u0432 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u043d\u0435\u0442\u0432\u043e\u0440\u043a\u0438\u043d\u0433 \u0432 Kubernetes. \u0418\u0445 \u044f \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0432 \u0441\u0432\u043e\u0438 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f \u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044f \u0431\u0443\u0434\u0443 \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430: \u043f\u0435\u0440\u0432\u044b\u0439 \u2013 \u043e\u0431\u044b\u0447\u043d\u044b\u0439, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 kubeadm, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2013 managed k8s \u0432 Yandex Cloud. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044e Cilium \u2013 1.15.1.<\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"#%D0%92%20%D1%87%D0%B5%D0%BC%20%D1%84%D0%B8%D1%88%D0%BA%D0%B0%20eBPF?\">\u0412 \u0447\u0435\u043c \u0444\u0438\u0448\u043a\u0430 eBPF?<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9F%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B8%D0%BC%20%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">\u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#%D0%9F%D0%BE%D0%BA%D0%B0,%20kube-proxy\">\u041f\u043e\u043a\u0430, kube-proxy<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A2%D0%B5%D1%81%D1%82%D1%8B%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">\u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#%D0%9A%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5%20%D1%84%D0%B8%D1%87%D0%B8%20Cilium\">\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 Cilium<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C%20%D0%B8%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B8\">\u0421\u0435\u0442\u0435\u0432\u0430\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0%20ingress%20%D0%B8%20egress\">\u041f\u0440\u0430\u0432\u0438\u043b\u0430 ingress \u0438 egress<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#L7\">L7<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B8%20%D0%BD%D0%BE%D0%B4\">\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u043e\u0434<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%92%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA\">\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#Observability%20%D0%B8%20Hubble\">Observability \u0438 Hubble<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3%20L7\">\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 L7<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#Ingress-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%20%D0%B8%20Gateway%20API\">Ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438 Gateway API<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#L4-%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA%D0%B8\">L4-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#Service%20Mesh\">Service Mesh<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#Control%20plane\">Control plane<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D0%B5\">\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"%D0%92%20%D1%87%D0%B5%D0%BC%20%D1%84%D0%B8%D1%88%D0%BA%D0%B0%20eBPF?\" id=\"\u0412 \u0447\u0435\u043c \u0444\u0438\u0448\u043a\u0430 eBPF?\">\u0430 eBPF?&#187;<\/a><\/p>\n<h2>\u0412 \u0447\u0435\u043c \u0444\u0438\u0448\u043a\u0430 eBPF?<\/h2>\n<p>\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e eBPF \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043a\u0438\u043b\u043b\u0435\u0440-\u0444\u0438\u0447\u0435\u0439 Cilium. \u041a\u0430\u043a\u0443\u044e \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442?<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u044f\u0434\u0440\u043e. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u044d\u0442\u043e \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u0441\u0435\u0442\u044f\u043c\u0438, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043b\u0438 \u0432\u043e\u0432\u0441\u0435 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c, \u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u044f\u0434\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439.<\/p>\n<p>\u042d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f eBPF. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 \u044f\u0434\u0440\u0435. <a href=\"https:\/\/youtu.be\/wv_9YxdC49Y?si=loNktZxyYbEUt3vw\"><u>\u041f\u043e \u0441\u043b\u043e\u0432\u0430\u043c<\/u><\/a> \u0422\u043e\u043c\u0430\u0441\u0430 \u0413\u0440\u0430\u0444\u0430, \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Cilium, \u00abeBPF \u0434\u043b\u044f \u044f\u0434\u0440\u0430 Linux \u2013 \u043a\u0430\u043a JavaScript \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u00bb.<\/p>\n<p><a class=\"anchor\" name=\"%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0\" id=\"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\">\u043e\u0432\u043a\u0430&#187;<\/a><\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0444\u0438\u0447 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432, \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Cilium.<\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c Kubernetes-\u0441\u0435\u0440\u0432\u0438\u0441, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u0434\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0442\u043e \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u043a\u0430\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Cilium \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u044b cilium, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 Helm-\u0447\u0430\u0440\u0442 (\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0440\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 Helm):<\/p>\n<pre><code>  $ cilium install --version 1.15.1 \u2139  Using Cilium version 1.15.1 ? Auto-detected cluster name: kubernetes ? Auto-detected kube-proxy has been installed<\/code><\/pre>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>helm list -n kube-system<\/code> \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0447\u0430\u0440\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d:<\/p>\n<pre><code>$ helm list -n kube-system NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION cilium  kube-system     1               2024-02-19 14:24:38.564620737 +0000 UTC deployed        cilium-1.15.1   1.15.1 <\/code><\/pre>\n<p>\u0427\u0435\u0440\u0435\u0437 <code>cilium status<\/code> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Cilium. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e Cilium \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e:<\/p>\n<pre><code>    \/\u00af\u00af\\\\  \/\u00af\u00af\\\\__\/\u00af\u00af\\\\    Cilium:             OK  \\\\__\/\u00af\u00af\\\\__\/    Operator:           OK  \/\u00af\u00af\\\\__\/\u00af\u00af\\\\    Envoy DaemonSet:    disabled (using embedded mode)  \\\\__\/\u00af\u00af\\\\__\/    Hubble Relay:       disabled     \\\\__\/       ClusterMesh:        disabled  Deployment             cilium-operator    Desired: 1, Ready: 1\/1, Available: 1\/1 DaemonSet              cilium             Desired: 3, Ready: 3\/3, Available: 3\/3 Containers:            cilium             Running: 3                        cilium-operator    Running: 1 Cluster Pods:          2\/2 managed by Cilium Helm chart version:    1.15.1 Image versions         cilium             quay.io\/cilium\/cilium:v1.15.1@sha256:351d6685dc6f6ffbcd5451043167cfa8842c6decf80d8c8e426a417c73fb56d4: 3                        cilium-operator    quay.io\/cilium\/operator-generic:v1.15.1@sha256:819c7281f5a4f25ee1ce2ec4c76b6fbc69a660c68b7825e9580b1813833fa743: 1<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0447\u0435\u0440\u0435\u0437 Yandex Cloud, \u0442\u043e \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u00ab\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0443\u043d\u043d\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c\u00bb \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<figure class=\"full-width\"><\/figure>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"%D0%9F%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B8%D0%BC%20%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\" id=\"\u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\">\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438&#187;><\/a><\/p>\n<h2>\u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Cilium \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0444\u0438\u0448\u0435\u043a \u0438 \u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u043c. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432.<\/p>\n<p><a class=\"anchor\" name=\"%D0%9F%D0%BE%D0%BA%D0%B0,%20kube-proxy\" id=\"\u041f\u043e\u043a\u0430, kube-proxy\">xy&#187;><\/a><\/p>\n<h3>\u041f\u043e\u043a\u0430, kube-proxy<\/h3>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u0447 Cilium \u2013 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c kube-proxy. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f? \u0417\u0430\u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 kube-proxy:<\/p>\n<pre><code>$ kubeadm init --skip-phases=addon\/kube-proxy<\/code><\/pre>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c Cilium \u0447\u0435\u0440\u0435\u0437 Helm, \u0442\u043e \u0432 values \u0447\u0430\u0440\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>kubeProxyReplacement: true k8sServiceHost: &lt;\u0430\u0434\u0440\u0435\u0441 kube-apiserver> k8sServicePort: &lt;\u043f\u043e\u0440\u0442 kube-apiserver><\/code><\/pre>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b cilium, \u0442\u043e CLI \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 kube-proxy \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>$ cilium install --version 1.15.1 \u2139  Using Cilium version 1.15.1 ? Auto-detected cluster name: kubernetes ? Auto-detected kube-proxy has not been installed \u2139  Cilium will fully replace all functionalities of kube-proxy<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u043c\u0435\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u043f\u043e\u0434\u0435 Cilium-\u0430\u0433\u0435\u043d\u0442\u0430:<\/p>\n<pre><code>$ kubectl exec -n kube-system cilium-pnjxh -- cilium status --verbose &lt;...> KubeProxyReplacement Details:   Status:                 Strict   Socket LB:              Enabled   Socket LB Tracing:      Enabled   Socket LB Coverage:     Full   Devices:                eth0   10.12.12.5 fe80::d20d:10ff:fe08:9a52 (Direct Routing)   Mode:                   SNAT   Backend Selection:      Random   Session Affinity:       Enabled   Graceful Termination:   Enabled   NAT46\/64 Support:       Disabled   XDP Acceleration:       Disabled   Services:   - ClusterIP:      Enabled   - NodePort:       Enabled (Range: 30000-32767)   - LoadBalancer:   Enabled   - externalIPs:    Enabled   - HostPort:       Enabled &lt;...><\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u00abStatus\u00bb \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00abStrict\u00bb \u0438\u043b\u0438 \u00abTrue\u00bb, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0430\u0433\u0435\u043d\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0437\u0430\u043c\u0435\u043d\u044b kube-proxy.<\/p>\n<p><a class=\"anchor\" name=\"%D0%A2%D0%B5%D1%81%D1%82%D1%8B%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\" id=\"\u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\">\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438&#187;<\/a><\/p>\n<h3>\u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p>\u041d\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438<a href=\"https:\/\/youtu.be\/bIRwSIwNHC0?si=-KrfEwr_xsGHLH1R\"> <\/a>\u00ab<a href=\"https:\/\/youtu.be\/bIRwSIwNHC0?si=-KrfEwr_xsGHLH1R\"><u>Liberating Kubernetes From Kube-proxy and Iptables<\/u><\/a>\u00bb \u041c\u0430\u0440\u0442\u0438\u043d\u0430\u0441 \u041f\u0443\u043c\u043f\u0443\u0442\u0438\u0441, \u043e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Cilium, \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u0433\u0434\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c Cilium (eBPF) \u0438 kube-proxy (ipvs \u0438 iptables).<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041e\u0441\u044c Y \u043d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u2013 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445, \u043e\u0441\u044c X \u2013 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0440\u0430\u0441\u0442\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 kube-proxy \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 iptables. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 kube-proxy \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u0446\u0435\u043f\u0438 iptables, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 O(n)). \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0430\u0432\u0438\u043b \u0432 \u0446\u0435\u043f\u0438, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<p>\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 Cilium \u0438 kube-proxy \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 ipvs \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 O(1) (\u0432 Cilium \u044d\u0442\u043e lookup hash-\u0442\u0430\u0431\u043b\u0438\u0446\u044b), \u043f\u0440\u0438 \u044d\u0442\u043e\u043c Cilium \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0443\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 netperf (\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u2013 \u0442\u0435\u0441\u0442 TCP_CRR), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f TCP-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u0432\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u0442\u0435\u0441\u0442 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u043c ipvs, \u0431\u0443\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e eBPF \u0438 iptables. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043d\u043e\u0434 (\u043e\u0434\u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440-\u043d\u043e\u0434\u0430 \u0438 \u0434\u0432\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0430) \u043d\u0430 Ubuntu 22.04 \u0432 Yandex Cloud.<\/p>\n<p>netperf \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u043f\u043b\u043e\u0438\u043c netserver \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 (\u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c NodePort \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u0430\u043a \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438):<\/p>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u043f\u0443\u0441\u043a netserver<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>apiVersion: apps\/v1 kind: Deployment metadata:   name: netserver   labels:     app: netserver spec:   replicas: 1   selector:     matchLabels:       app: netserver   template:     metadata:       labels:         app: netserver     spec:       containers:       - name: netserver         image: networkstatic\/netserver:latest         args:           - -D         ports:         - containerPort: 12865         - containerPort: 30002 --- apiVersion: v1 kind: Service metadata:   name: netserver spec:   type: NodePort   selector:     app: netserver   ports:     # netperf \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 2 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f - \u043e\u0434\u043d\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u0435\u0441\u0442\u0435, \u0434\u0440\u0443\u0433\u043e\u0435 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430     - protocol: TCP       port: 12865       targetPort: 12865       nodePort: 30001       name: control     - protocol: TCP       port: 30002       targetPort: 30002       nodePort: 30002       name: data<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e \u043b\u043e\u0433\u0430\u043c, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<pre><code>$ kubectl logs &lt;\u043f\u043e\u0434 netserver> Starting netserver with host 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432\u043d\u0435\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u0442 \u043d\u043e\u0434\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u0441 netserver.<\/p>\n<pre><code>$ netperf -t TCP_CRR -H &lt;\u0430\u0434\u0440\u0435\u0441 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430> -p 30001 -- -P 30002 -o rt_latency<\/code><\/pre>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0444\u043b\u0430\u0433\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><code>t TCP_CRR<\/code> \u2013 \u0442\u0438\u043f \u0442\u0435\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p><code>H<\/code> \u2013 \u0445\u043e\u0441\u0442, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 (\u0442\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d netserver);<\/p>\n<\/li>\n<li>\n<p><code>p 30001<\/code> \u2013 \u043f\u043e\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u0442 netserver.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u00ab&#8212;\u00bb \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0430 (<code>-P 30002<\/code>) \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e\u0434 \u00ab\u00b5seq per tx\u00bb \u043d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u043c\u0435\u043b\u0438 \u0432 \u0432\u0438\u0434\u0443 rt_latency, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432:<\/p>\n<pre><code>for i in {1..2767}; do cat &lt;&lt;EOF | kubectl delete -f - apiVersion: v1 kind: Service metadata:   name: netserver-$i spec:   selector:     app: netserver   ports:     - protocol: TCP       port: 12865       targetPort: 12865       name: control     - protocol: TCP       port: 30002       targetPort: 30002       name: data EOF done<\/code><\/pre>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0435\u0441\u0442 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u0434\u0430\u0436\u0435 \u0433\u0440\u0443\u0431\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u0434\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u2013 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 kube-proxy \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0441\u0442\u0435\u0442 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a Cilium \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435.<\/p>\n<p><a class=\"anchor\" name=\"%D0%9A%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D0%B5%20%D1%84%D0%B8%D1%87%D0%B8%20Cilium\" id=\"\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 Cilium\">\u0447\u0438 Cilium&#187;<\/a><\/p>\n<h2>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 Cilium<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d? \u041f\u0435\u0440\u0432\u043e\u0435<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-380223","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/380223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=380223"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/380223\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=380223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=380223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=380223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}