{"id":4157,"date":"2019-10-17T19:49:31","date_gmt":"2019-10-17T19:49:31","guid":{"rendered":"https:\/\/blogs.infoblox.com\/?p=4157"},"modified":"2022-10-19T16:22:35","modified_gmt":"2022-10-19T23:22:35","slug":"coredns-corefile-migration-for-kubernetes","status":"publish","type":"post","link":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/","title":{"rendered":"CoreDNS Corefile Migration for Kubernetes"},"content":{"rendered":"<p><a href=\"https:\/\/coredns.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">CoreDNS<\/a>\u00a0has been the default DNS server for Kubernetes since v1.13. CoreDNS is a DNS server that links\u00a0<a href=\"https:\/\/coredns.io\/plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">plugins<\/a>\u00a0to provide customized DNS service.<\/p>\n<p>Due to rapid changes in the CoreDNS project, there have been many plugins that have been deprecated, removed or added. Plugins such as the\u00a0<code>proxy<\/code>\u00a0plugin has been deprecated and removed, while plugins such as the\u00a0<code>ready<\/code>\u00a0plugin have been introduced\u2013plugins providing vital Kubernetes functionality. It is therefore important that these changes are recognized and implemented while upgrading your CoreDNS version.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2482\" src=\"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/iotblogmonday-1-1.jpg\" alt=\"CoreDNS for Kubernetes Service Discovery\" width=\"660\" height=\"454\" srcset=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/iotblogmonday-1-1.jpg 660w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/iotblogmonday-1-1-300x206.jpg 300w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/p>\n<p>The Go library for CoreDNS migration has been created for this specific purpose: to help users handle migrations of CoreDNS Corefiles to be compatible with new versions of CoreDNS. This library is mainly written with Kubernetes in mind, since the library currently only supports the plugins which are part of the\u00a0<a href=\"https:\/\/github.com\/coredns\/deployment\/blob\/master\/kubernetes\/coredns.yaml.sed#L54-L69\" target=\"_blank\" rel=\"noopener noreferrer\">default Kubernetes deployment<\/a>.<\/p>\n<p><strong>CoreDNS migration support in Kubeadm<\/strong><\/p>\n<p>The Corefile migration library helps you to seamlessly migrate your Corefile to be compatible with the latest version of CoreDNS. One of the common situations in which this library has been used is in\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/reference\/setup-tools\/kubeadm\/kubeadm\/\" target=\"_blank\" rel=\"noopener noreferrer\">Kubeadm<\/a>, which is an installation tool for Kubernetes clusters. The CoreDNS migration functionality is integrated with Kubeadm and has been introduced for Kubernetes v1.16.<\/p>\n<p><strong>Use Case:<\/strong><\/p>\n<p>If I want to upgrade my Kubernetes cluster from v1.15.3 to v1.16.0 using kubeadm, the Corefile will be upgraded automatically for me from CoreDNS v1.3.1 (in Kubernetes 1.15.3) to be compatible with CoreDNS v1.6.2 (in Kubernetes 1.16.0).<\/p>\n<p>My Corefile for CoreDNS v1.3.1 in Kubernetes 1.15.3 looks like:<\/p>\n<pre><code>apiVersion: v1\r\nkind: ConfigMap\r\nmetadata:\r\n  name: coredns\r\n  namespace: kube-system\r\ndata:\r\n  Corefile: |\r\n    .:53 {\r\n        errors\r\n        health\r\n        kubernetes cluster.local in-addr.arpa ip6.arpa {\r\n          pods insecure\r\n          upstream\r\n          fallthrough in-addr.arpa ip6.arpa\r\n        }\r\n        prometheus :9153\r\n        proxy . \/etc\/resolv.conf\r\n        cache 30\r\n        loop\r\n        reload\r\n        loadbalance\r\n    }\r\n<\/code><\/pre>\n<p>Looking at the plugins, I can see that:<\/p>\n<ul>\n<li>The\u00a0<code>upstream<\/code>\u00a0option in the Kubernetes is not required anymore and can be removed.<\/li>\n<li>The\u00a0<code>proxy<\/code>\u00a0plugin is deprecated and removed, replaced by the\u00a0<code>forward<\/code>\u00a0plugin.<\/li>\n<li>The\u00a0<code>ready<\/code>\u00a0plugin, which is required for reporting\u00a0<code>readiness<\/code>, is missing.<\/li>\n<\/ul>\n<p>So, when I upgrade my Kubernetes version to 1.16.0, my Corefile configuration will be automatically migrated. Also note that the Corefile that was present in the previous version will be backed up and saved as\u00a0<code>Corefile-backup<\/code>\u00a0in the ConfigMap.<\/p>\n<p>The final ConfigMap looks like this:<\/p>\n<pre><code>apiVersion: v1\r\nkind: ConfigMap\r\nmetadata:\r\nname: coredns\r\nnamespace: kube-system\r\ndata:\r\nCorefile: |\r\n.:53 {\r\n    errors\r\n    health\r\n    kubernetes cluster.local in-addr.arpa ip6.arpa {\r\n        pods insecure\r\n        fallthrough in-addr.arpa ip6.arpa\r\n    }\r\n    prometheus :9153\r\n    forward . \/etc\/resolv.conf\r\n    cache 30\r\n    loop\r\n    reload\r\n    loadbalance\r\n    ready\r\n}\r\nCorefile-backup: |\r\n.:53 {\r\n    errors\r\n    health\r\n    kubernetes cluster.local in-addr.arpa ip6.arpa {\r\n      pods insecure\r\n      upstream\r\n      fallthrough in-addr.arpa ip6.arpa\r\n    }\r\n    prometheus :9153\r\n    forward . \/etc\/resolv.conf\r\n    cache 30\r\n    loop\r\n    reload\r\n    loadbalance\r\n }\r\n\r\n<\/code><\/pre>\n<p><strong>Corefile-tool<\/strong><\/p>\n<p>If you want to manually upgrade the CoreDNS Corefile configuration, you can also make use of the\u00a0<a href=\"https:\/\/github.com\/coredns\/corefile-migration\/tree\/master\/corefile-tool\" target=\"_blank\" rel=\"noopener noreferrer\">Corefile-tool command-line tool<\/a>, which uses the CoreDNS Corefile migration library.<\/p>\n<p>Usage of the Corefile-tool is as follows:<\/p>\n<pre><code>corefile-tool default --corefile &lt;path&gt; [--k8sversion &lt;k8s-ver&gt;]\r\ncorefile-tool deprecated --from &lt;coredns-ver&gt; --to &lt;coredns-ver&gt; --corefile &lt;path&gt;\r\ncorefile-tool migrate --from &lt;coredns-ver&gt; --to &lt;coredns-ver&gt; --corefile &lt;path&gt; [--deprecations &lt;true|false&gt;]\r\ncorefile-tool downgrade --from &lt;coredns-ver&gt; --to &lt;coredns-ver&gt; --corefile &lt;path&gt;\r\ncorefile-tool released --dockerImageId &lt;id&gt;\r\ncorefile-tool unsupported --from &lt;coredns-ver&gt; --to &lt;coredns-ver&gt; --corefile &lt;path&gt;\r\ncorefile-tool validversions\r\n<\/code><\/pre>\n<p><strong>Use-case<\/strong><\/p>\n<p>I have a Kubernetes Cluster running CoreDNS v1.1.3 and I want to upgrade CoreDNS to version 1.6.2.<br \/>\nFirst, I want to check if the versions I\u2019m upgrading to and currently installed are supported by the tool:<\/p>\n<pre><code>$ corefile-tool validversions\r\n    The following are valid CoreDNS versions:\r\n    1.1.3, 1.1.4, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.3.0, 1.3.1, 1.4.0, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.6.2\r\n<\/code><\/pre>\n<p>Now, my Corefile config currently looks like:<\/p>\n<pre><code>.:53 {\r\n    errors\r\n    health\r\n    kubernetes cluster.local in-addr.arpa ip6.arpa {\r\n        pods insecure\r\n        resyncperiod 5s\r\n        upstream\r\n        fallthrough in-addr.arpa ip6.arpa\r\n    }\r\n    rewrite name suffix .schmoogle.com. .google.com.\r\n    prometheus :9153\r\n    proxy . \/etc\/resolv.conf\r\n    cache 30\r\n}\r\n<\/code><\/pre>\n<p>If I want to know which plugins have been deprecated, I can use the\u00a0<code>deprecated<\/code>\u00a0command which shows me a list of plugins and options that have been deprecated or removed:<\/p>\n<pre><code>$ corefile-tool deprecated --from 1.1.3 --to 1.6.2 --corefile cm.yaml \r\n    Plugin \"loop\" is added as a default in 1.2.1.\r\n    Option \"upstream\" in plugin \"kubernetes\" is deprecated in 1.4.0.\r\n    Plugin \"proxy\" is deprecated in 1.4.0. It is replaced by \"forward\".\r\n    Option \"resyncperiod\" in plugin \"kubernetes\" is deprecated in 1.5.0.\r\n    Option \"upstream\" in plugin \"kubernetes\" is ignored in 1.5.0.\r\n    Plugin \"proxy\" is removed in 1.5.0. It is replaced by \"forward\".\r\n    Plugin \"ready\" is added as a default in 1.5.0.\r\n    Option \"resyncperiod\" in plugin \"kubernetes\" is deprecated in 1.5.1.\r\n    Option \"upstream\" in plugin \"kubernetes\" is ignored in 1.5.1.\r\n    Option \"resyncperiod\" in plugin \"kubernetes\" is deprecated in 1.5.2.\r\n    Option \"upstream\" in plugin \"kubernetes\" is ignored in 1.5.2.\r\n    Option \"resyncperiod\" in plugin \"kubernetes\" is removed in 1.6.0.\r\n    Option \"upstream\" in plugin \"kubernetes\" is ignored in 1.6.0.\r\n    Option \"upstream\" in plugin \"kubernetes\" is ignored in 1.6.1.\r\n    Option \"upstream\" in plugin \"kubernetes\" is ignored in 1.6.2.\r\n<\/code><\/pre>\n<p>Since I have the knowledge of what will be added and removed from the previous command, I can now go ahead and migrate my Corefile.<\/p>\n<pre><code>$ corefile-tool migrate --from 1.1.3 --to 1.6.2 --corefile cm.yaml \r\n\r\n    .:53 {\r\n        errors\r\n        health\r\n        kubernetes cluster.local in-addr.arpa ip6.arpa {\r\n            pods insecure\r\n            fallthrough in-addr.arpa ip6.arpa\r\n        }\r\n        rewrite name suffix .schmoogle.com. .google.com.\r\n        prometheus :9153\r\n        forward . \/etc\/resolv.conf\r\n        cache 30\r\n        loop\r\n        ready\r\n    }\r\n\r\n<\/code><\/pre>\n<p>The migration was successful and I can add the generated Corefile from the tool to update my ConfigMap.<\/p>\n<p><strong>More<\/strong><\/p>\n<p>You can find more information about the Corefile Migration Library and Corefile-tool from:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/coredns\/corefile-migration\/blob\/master\/corefile-tool\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/github.com\/coredns\/corefile-migration\/blob\/master\/corefile-tool\/README.md<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/coredns\/corefile-migration\/blob\/master\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/github.com\/coredns\/corefile-migration\/blob\/master\/README.md<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>CoreDNS\u00a0has been the default DNS server for Kubernetes since v1.13. CoreDNS is a DNS server that links\u00a0plugins\u00a0to provide customized DNS service. Due to rapid changes in the CoreDNS project, there have been many plugins that have been deprecated, removed or added. Plugins such as the\u00a0proxy\u00a0plugin has been deprecated and removed, while plugins such as the\u00a0ready\u00a0plugin [&hellip;]<\/p>\n","protected":false},"author":314,"featured_media":2482,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[3],"tags":[30,16,158,15],"class_list":{"0":"post-4157","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-community","8":"tag-dns","9":"tag-infoblox","10":"tag-kubernetes","11":"tag-security","12":"entry"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>CoreDNS Corefile Migration for Kubernetes - Infoblox Blog<\/title>\n<meta name=\"description\" content=\"Customized DNS services can be used with various plugins. Find out how these plugins can work for you by reading about their performance with Kubernetes\" \/>\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.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CoreDNS Corefile Migration for Kubernetes\" \/>\n<meta property=\"og:description\" content=\"Customized DNS services can be used with various plugins. Find out how these plugins can work for you by reading about their performance with Kubernetes\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"Infoblox Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-17T19:49:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-19T23:22:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/iotblogmonday-1-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"660\" \/>\n\t<meta property=\"og:image:height\" content=\"454\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sandeep Rajan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sandeep Rajan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/\"},\"author\":{\"name\":\"Sandeep Rajan\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/person\\\/0925047b5a4f7ee19519236283f217dc\"},\"headline\":\"CoreDNS Corefile Migration for Kubernetes\",\"datePublished\":\"2019-10-17T19:49:31+00:00\",\"dateModified\":\"2022-10-19T23:22:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/\"},\"wordCount\":520,\"publisher\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/iotblogmonday-1-1.jpg\",\"keywords\":[\"DNS\",\"Infoblox\",\"Kubernetes\",\"Security\"],\"articleSection\":[\"Community\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/\",\"name\":\"CoreDNS Corefile Migration for Kubernetes - Infoblox Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/iotblogmonday-1-1.jpg\",\"datePublished\":\"2019-10-17T19:49:31+00:00\",\"dateModified\":\"2022-10-19T23:22:35+00:00\",\"description\":\"Customized DNS services can be used with various plugins. Find out how these plugins can work for you by reading about their performance with Kubernetes\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/iotblogmonday-1-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/iotblogmonday-1-1.jpg\",\"width\":660,\"height\":454,\"caption\":\"CoreDNS for Kubernetes Service Discovery\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/coredns-corefile-migration-for-kubernetes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Community\",\"item\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/category\\\/community\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"CoreDNS Corefile Migration for Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\",\"name\":\"infoblox.com\\\/blog\\\/\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\",\"name\":\"Infoblox\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/infoblox-logo-2.svg\",\"contentUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/infoblox-logo-2.svg\",\"width\":137,\"height\":30,\"caption\":\"Infoblox\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/person\\\/0925047b5a4f7ee19519236283f217dc\",\"name\":\"Sandeep Rajan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/525131ab6c4d84f9a8c062cc96d198bbb6d653419e0565c5ff37768d9c76970d?s=96&d=blank&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/525131ab6c4d84f9a8c062cc96d198bbb6d653419e0565c5ff37768d9c76970d?s=96&d=blank&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/525131ab6c4d84f9a8c062cc96d198bbb6d653419e0565c5ff37768d9c76970d?s=96&d=blank&r=g\",\"caption\":\"Sandeep Rajan\"},\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/author\\\/sandeep-rajan\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CoreDNS Corefile Migration for Kubernetes - Infoblox Blog","description":"Customized DNS services can be used with various plugins. Find out how these plugins can work for you by reading about their performance with Kubernetes","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.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"CoreDNS Corefile Migration for Kubernetes","og_description":"Customized DNS services can be used with various plugins. Find out how these plugins can work for you by reading about their performance with Kubernetes","og_url":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/","og_site_name":"Infoblox Blog","article_published_time":"2019-10-17T19:49:31+00:00","article_modified_time":"2022-10-19T23:22:35+00:00","og_image":[{"width":660,"height":454,"url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/iotblogmonday-1-1.jpg","type":"image\/jpeg"}],"author":"Sandeep Rajan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sandeep Rajan","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/#article","isPartOf":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/"},"author":{"name":"Sandeep Rajan","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/person\/0925047b5a4f7ee19519236283f217dc"},"headline":"CoreDNS Corefile Migration for Kubernetes","datePublished":"2019-10-17T19:49:31+00:00","dateModified":"2022-10-19T23:22:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/"},"wordCount":520,"publisher":{"@id":"https:\/\/www.infoblox.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/iotblogmonday-1-1.jpg","keywords":["DNS","Infoblox","Kubernetes","Security"],"articleSection":["Community"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/","url":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/","name":"CoreDNS Corefile Migration for Kubernetes - Infoblox Blog","isPartOf":{"@id":"https:\/\/www.infoblox.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/iotblogmonday-1-1.jpg","datePublished":"2019-10-17T19:49:31+00:00","dateModified":"2022-10-19T23:22:35+00:00","description":"Customized DNS services can be used with various plugins. Find out how these plugins can work for you by reading about their performance with Kubernetes","breadcrumb":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/#primaryimage","url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/iotblogmonday-1-1.jpg","contentUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/iotblogmonday-1-1.jpg","width":660,"height":454,"caption":"CoreDNS for Kubernetes Service Discovery"},{"@type":"BreadcrumbList","@id":"https:\/\/www.infoblox.com\/blog\/community\/coredns-corefile-migration-for-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infoblox.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Community","item":"https:\/\/www.infoblox.com\/blog\/category\/community\/"},{"@type":"ListItem","position":3,"name":"CoreDNS Corefile Migration for Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.infoblox.com\/blog\/#website","url":"https:\/\/www.infoblox.com\/blog\/","name":"infoblox.com\/blog\/","description":"","publisher":{"@id":"https:\/\/www.infoblox.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.infoblox.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.infoblox.com\/blog\/#organization","name":"Infoblox","url":"https:\/\/www.infoblox.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/infoblox-logo-2.svg","contentUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/infoblox-logo-2.svg","width":137,"height":30,"caption":"Infoblox"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/person\/0925047b5a4f7ee19519236283f217dc","name":"Sandeep Rajan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/525131ab6c4d84f9a8c062cc96d198bbb6d653419e0565c5ff37768d9c76970d?s=96&d=blank&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/525131ab6c4d84f9a8c062cc96d198bbb6d653419e0565c5ff37768d9c76970d?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/525131ab6c4d84f9a8c062cc96d198bbb6d653419e0565c5ff37768d9c76970d?s=96&d=blank&r=g","caption":"Sandeep Rajan"},"url":"https:\/\/www.infoblox.com\/blog\/author\/sandeep-rajan\/"}]}},"_links":{"self":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/4157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/users\/314"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/comments?post=4157"}],"version-history":[{"count":5,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/4157\/revisions"}],"predecessor-version":[{"id":8114,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/4157\/revisions\/8114"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/media\/2482"}],"wp:attachment":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/media?parent=4157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/categories?post=4157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/tags?post=4157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}