{"id":28913,"date":"2023-11-01T14:23:43","date_gmt":"2023-11-01T13:23:43","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=28913"},"modified":"2023-11-01T14:23:46","modified_gmt":"2023-11-01T13:23:46","slug":"combining-powerful-cilium-features-together-in-kubernetes","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/","title":{"rendered":"Combining Powerful Cilium Features Together In Kubernetes"},"content":{"rendered":"\n<p>My colleagues and I have played with <a href=\"https:\/\/cilium.io\">Cilium<\/a> from <a href=\"https:\/\/isovalent.com\">Isovalent<\/a> for a while now and we have successfully deployed it as simple CNI (Container Network Interface) along with Hubble on several production Kubernetes cluster of our customers. <\/p>\n\n\n\n<p>However, over the past year there has been several very interesting new features being released. Smartly, Isovalent gives you the opportunity to play with each new feature in their excellent labs they have now put together in this original <a href=\"https:\/\/labs-map.isovalent.com\">map quest<\/a>. You follow the instructions to learn how the feature works and earn a badge (for the main features) if you solve the final challenge. Be careful it is very addictive, as soon as you earn your first badge you will then want to collect all of them!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-simplifying-a-kubernetes-cluster-architecture\">Simplifying a Kubernetes cluster architecture<\/h2>\n\n\n\n<p>Cilium just became a <a href=\"https:\/\/isovalent.com\/blog\/post\/cilium-graduates-cncf\/\">Graduated CNCF project<\/a> and I wanted to try to combine several of its features together to simplify our traditional Kubernetes cluster architecture for future projects.<\/p>\n\n\n\n<p>If you are using a Kubernetes on-premise cluster that hosts applications reachable from outside of this cluster then you are using an Ingress Controller and a load balancer (probably <a href=\"https:\/\/metallb.org\">MetalLB<\/a> using Layer 2 configuration). This is the traditional architecture we deploy and with Cilium it is now possible to replace these two components by using a combination of the following features: Ingress Controller, LoadBalancer IPAM and L2 Service Announcement.<\/p>\n\n\n\n<p>I&#8217;ve done my tests with Minikube as at this stage I just wanted to see how the combining configuration would work. I didn&#8217;t see yet some examples of those 3 features together so if you are also interested to optimize the architecture of your Kubernetes cluster with Cilium then read on!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-overview-of-the-configuration\">Overview of the configuration<\/h2>\n\n\n\n<p>If you are like me, you like to have some visuals about what we are doing. So I start by giving the summary of my configuration that combine the 3 Cilium features (with their name in bold in the diagram below). The colored rectangle boxes show the important parameters of the objects and when they are of the same color, it is how the link is made between the objects.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"581\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1024x581.png\" alt=\"\" class=\"wp-image-28942\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1024x581.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-300x170.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-768x436.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1536x872.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-2048x1163.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I&#8217;ve used the application &#8220;testcontainers\/helloworld&#8221; that I want to expose outside of my cluster. So from my laptop I should be able to reach it and this is my goal for this first stage of testing.<\/p>\n\n\n\n<p>Each feature brings its customized object (CRD) and you can see in the diagram above the configuration of the object for each of the 3 features. The service object with the type LoadBalancer is automatically created when the feature Ingress Controller is enabled. We then just associate a deployment for our &#8220;testcontainers\/helloworld&#8221; application to this service by using the selector\/labels association.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-minikube-configuration\">Minikube configuration<\/h2>\n\n\n\n<p>Let&#8217;s start from the beginning, here is my Minikube configuration for testing these features. I&#8217;ve started a new Minikube cluster with 3 nodes, no cni and I like to create a separate profile called here <strong>cluster-cilium<\/strong> to separate that cluster from the other cluster tests I&#8217;m doing.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ minikube start --nodes 3 --network-plugin=cni --cni=false --memory=4096 -p cluster-cilium\n<\/pre><\/div>\n\n\n<p>When my cluster is up and running, I install Cilium 1.14.2 and activate all the features and parameters I need for my testing. I also like to install Cilium in a separate namespace called here <strong>cilium<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ kubectl create ns cilium\n$ cilium install --version 1.14.2 --set kubeProxyReplacement=strict --set ingressController.enabled=true --set ingressController.loadbalancerMode=dedicated --set kubeProxyReplacement=true --set l2announcements.enabled=true --set l2announcements.leaseDuration=&quot;3s&quot; --set l2announcements.leaseRenewDeadline=&quot;1s&quot; --set l2announcements.leaseRetryPeriod=&quot;500ms&quot; --set l2podAnnouncements.enabled=true --set l2podAnnouncements.interface=&quot;eth0&quot; --set externalIPs.enabled=true -n cilium\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-combined-features-configuration\">Combined features configuration<\/h2>\n\n\n\n<p>When my cluster is ready, I can check the LoadBalancer service is automatically created with an http and https nodePort. For this example I&#8217;ve edited this service and removed the https port to avoid any confusion. The http nodePort 31814 was automatically created but that value could be changed. For my testing I&#8217;ll not use it:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ kubectl get svc -n cilium\nNAME             TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE\ncilium-ingress-basic-ingress   LoadBalancer   10.107.176.240   &lt;pending&gt;      80:31814\/TCP   16h\n<\/pre><\/div>\n\n\n<p>You can see that this service doesn&#8217;t have any external IP address yet (the status shows pending). To provide one, we need to create an object CiliumLoadBalancerIPPool and define a cidr range of IP to use as external IP Address. Note that \/30 (so 2 IP Addresses) is the minimum range you can use. It is not possible to use just 1 IP Address in a pool. We then set a serviceSelector to match the label blue (in this example) so each LoadBalancer service that have that label will take an IP Address from this pool if there is one available. If all IP Addresses are already taken then the EXTERNAL-IP field of the service will stay in the pending state. Below is the CiliumLoadBalancerIPPool configuration:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; highlight: [8,9,10]; title: ; notranslate\" title=\"\">\napiVersion: &quot;cilium.io\/v2alpha1&quot;\nkind: CiliumLoadBalancerIPPool\nmetadata:\n\u00a0 name: &quot;pool-blue&quot;\nspec:\n\u00a0 cidrs:\n\u00a0 - cidr: &quot;10.0.0.0\/30&quot;\n\u00a0 serviceSelector:\n\u00a0\u00a0\u00a0 matchLabels:\n\u00a0\u00a0\u00a0\u00a0\u00a0 color: blue\n<\/pre><\/div>\n\n\n<p>You&#8217;ll then need to add the blue label to the LoadBalancer service <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ kubectl edit svc -n cilium cilium-ingress-basic-ingress\n<\/pre><\/div>\n\n\n<p>Just add the label color: blue and you&#8217;ll then see the following:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ kubectl get svc -n cilium\nNAME             TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE\ncilium-ingress-basic-ingress   LoadBalancer   10.107.176.240   10.0.0.1      80:31814\/TCP   16h\n<\/pre><\/div>\n\n\n<p>Now our service has an external IP Address that comes from the pool-blue we have defined previously.<\/p>\n\n\n\n<p>We can create our deployment by applying the following yaml file:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; highlight: [13,14]; title: ; notranslate\" title=\"\">\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n\u00a0 name: testciliuml2\n  namespace: cilium\nspec:\n\u00a0 replicas: 2\n\u00a0 selector:\n\u00a0\u00a0\u00a0 matchLabels:\n\u00a0\u00a0\u00a0\u00a0\u00a0 name: testcontainers\n\u00a0 template:\n\u00a0\u00a0\u00a0 metadata:\n\u00a0\u00a0\u00a0\u00a0\u00a0 labels:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name: testcontainers\n\u00a0\u00a0\u00a0 spec:\n\u00a0\u00a0\u00a0\u00a0\u00a0 containers:\n\u00a0\u00a0\u00a0\u00a0\u00a0 - name: testciliuml2\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 image: testcontainers\/helloworld\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 env:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 - name: DELAY_START_MSEC\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 value: &quot;2000&quot;\n<\/pre><\/div>\n\n\n<p>You can see we use the label name: testcontainers for this deployment. We will then need to edit again our LoadBalancer service to associate it with that deployment label (you can also see it in the diagram above if you want to check):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n  selector:\n    name: testcontainers\n<\/pre><\/div>\n\n\n<p>Finally we can configure an ingress object to link it to our LoadBalancer service by using the yaml file below:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; highlight: [7,12,13]; title: ; notranslate\" title=\"\">\napiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: basic-ingress\n  namespace: cilium\nspec:\n  ingressClassName: cilium\n  rules:\n  - http:\n      paths:\n      - backend:\n          service:\n            name: cilium-ingress-basic-ingress\n            port:\n              number: 80\n        path: \/\n        pathType: Prefix\n<\/pre><\/div>\n\n\n<p>Note that the&nbsp;ingressClassName&nbsp;field uses the value&nbsp;cilium. This instructs Kubernetes to use Cilium as the Ingress controller for this resource. We can check the state of our ingress:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n kubectl get ing -n cilium\nNAME            CLASS    HOSTS   ADDRESS    PORTS   AGE\nbasic-ingress   cilium   *       10.0.0.1   80      30d\n<\/pre><\/div>\n\n\n<p>You can recognize the external IP Address of our LoadBalancer service.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-test-of-connection-to-the-loadbalancer-service\">Test of connection to the LoadBalancer service<\/h2>\n\n\n\n<p>To fully test the flow from our laptop through the ingress and down to the pod, we would need the external IP Address to be reachable from my laptop. In production you will not use this external IP Address directly but use a URL with a domain name that will be resolved by a DNS to this external IP Address.<\/p>\n\n\n\n<p>Here I will just test the connection to the LoadBalancer service with <strong>kubectl port-forward<\/strong> to reach port 80 of this service as it would be by our ingress rule:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ kubectl port-forward svc\/cilium-ingress-basic-ingress -n cilium 8080:80 &amp;\n<\/pre><\/div>\n\n\n<p>I can then reach my application from my laptop by using the URL <strong>http:\/\/localhost:8080<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"876\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium_HelloWord-1024x876.png\" alt=\"\" class=\"wp-image-28970\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium_HelloWord-1024x876.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium_HelloWord-300x257.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium_HelloWord-768x657.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium_HelloWord.png 1258w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>As a conclusion, I&#8217;ve found the configuration of all these features pretty easy to bound together. It is then very simple to provide a complete Kubernetes architecture with only Cilium features to reach my application from outside of this cluster.<\/p>\n\n\n\n<p>The next step will be to test it in a real Kubernetes cluster with some failover scenarii but that all look very promising to me!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>My colleagues and I have played with Cilium from Isovalent for a while now and we have successfully deployed it as simple CNI (Container Network Interface) along with Hubble on several production Kubernetes cluster of our customers. However, over the past year there has been several very interesting new features being released. Smartly, Isovalent gives [&hellip;]<\/p>\n","protected":false},"author":109,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1320,1522],"tags":[2700,3125,2932,2634,3127,3126,2722],"type_dbi":[3099,3128,3129,2943,3130,3131,3132],"class_list":["post-28913","post","type-post","status-publish","format-standard","hentry","category-devops","category-kubernetes","tag-cilium","tag-ingress-controller","tag-isovalent","tag-kubernetes-2","tag-l2-service-announcement","tag-loadbalancer-ipam","tag-metallb","type-cilium","type-ingress-controller","type-isovalent","type-kubernetes","type-l2-service-announcement","type-loadbalancer-ipam","type-metallb"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Combining Powerful Cilium Features Together In Kubernetes - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Combining Powerful Cilium Features Together In Kubernetes\" \/>\n<meta property=\"og:description\" content=\"My colleagues and I have played with Cilium from Isovalent for a while now and we have successfully deployed it as simple CNI (Container Network Interface) along with Hubble on several production Kubernetes cluster of our customers. However, over the past year there has been several very interesting new features being released. Smartly, Isovalent gives [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-01T13:23:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-01T13:23:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1024x581.png\" \/>\n<meta name=\"author\" content=\"DevOps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DevOps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/\"},\"author\":{\"name\":\"DevOps\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"headline\":\"Combining Powerful Cilium Features Together In Kubernetes\",\"datePublished\":\"2023-11-01T13:23:43+00:00\",\"dateModified\":\"2023-11-01T13:23:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/\"},\"wordCount\":1066,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1024x581.png\",\"keywords\":[\"cilium\",\"ingress controller\",\"isovalent\",\"kubernetes\",\"L2 service announcement\",\"loadbalancer IPAM\",\"metallb\"],\"articleSection\":[\"DevOps\",\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/\",\"name\":\"Combining Powerful Cilium Features Together In Kubernetes - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1024x581.png\",\"datePublished\":\"2023-11-01T13:23:43+00:00\",\"dateModified\":\"2023-11-01T13:23:46+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4.png\",\"width\":2638,\"height\":1498},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Combining Powerful Cilium Features Together In Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\",\"name\":\"DevOps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"caption\":\"DevOps\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/devops\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Combining Powerful Cilium Features Together In Kubernetes - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"Combining Powerful Cilium Features Together In Kubernetes","og_description":"My colleagues and I have played with Cilium from Isovalent for a while now and we have successfully deployed it as simple CNI (Container Network Interface) along with Hubble on several production Kubernetes cluster of our customers. However, over the past year there has been several very interesting new features being released. Smartly, Isovalent gives [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/","og_site_name":"dbi Blog","article_published_time":"2023-11-01T13:23:43+00:00","article_modified_time":"2023-11-01T13:23:46+00:00","og_image":[{"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1024x581.png","type":"","width":"","height":""}],"author":"DevOps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"DevOps","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/"},"author":{"name":"DevOps","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"headline":"Combining Powerful Cilium Features Together In Kubernetes","datePublished":"2023-11-01T13:23:43+00:00","dateModified":"2023-11-01T13:23:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/"},"wordCount":1066,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1024x581.png","keywords":["cilium","ingress controller","isovalent","kubernetes","L2 service announcement","loadbalancer IPAM","metallb"],"articleSection":["DevOps","Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/","url":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/","name":"Combining Powerful Cilium Features Together In Kubernetes - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4-1024x581.png","datePublished":"2023-11-01T13:23:43+00:00","dateModified":"2023-11-01T13:23:46+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/10\/Cilium-combining-features-4.png","width":2638,"height":1498},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/combining-powerful-cilium-features-together-in-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Combining Powerful Cilium Features Together In Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735","name":"DevOps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","caption":"DevOps"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/devops\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/28913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/109"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=28913"}],"version-history":[{"count":33,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/28913\/revisions"}],"predecessor-version":[{"id":31579,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/28913\/revisions\/31579"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=28913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=28913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=28913"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=28913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}