mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-12 12:36:57 +02:00
3941 lines
89 KiB
HTML
3941 lines
89 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
<meta name="author" content="external-dns maintainers">
|
|
|
|
|
|
|
|
<link rel="prev" href="../ttl/">
|
|
|
|
|
|
<link rel="next" href="../../proposal/002-internal-ipv6-handling-rollback/">
|
|
|
|
|
|
<link rel="icon" href="../../../assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.17">
|
|
|
|
|
|
|
|
<title>FQDN Templating - external-dns</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../../assets/stylesheets/main.bcfcd587.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body dir="ltr">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#fqdn-templating-guide" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href="../../.." title="external-dns" class="md-header__button md-logo" aria-label="external-dns" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
external-dns
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
FQDN Templating
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="md-header__source">
|
|
<a href="https://github.com/kubernetes-sigs/external-dns/" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
kubernetes-sigs/external-dns
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
|
|
<div class="md-grid">
|
|
<ul class="md-tabs__list">
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item">
|
|
<a href="../../.." class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
Home
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item">
|
|
<a href="../../../charts/external-dns/" class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
Chart
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item">
|
|
<a href="../../faq/" class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
About
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item">
|
|
<a href="../../tutorials/akamai-edgedns/" class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
Tutorials
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item">
|
|
<a href="../../annotations/annotations/" class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
Annotations
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item">
|
|
<a href="../../sources/about/" class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
Sources
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item">
|
|
<a href="../../registry/registry/" class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
Registries
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item md-tabs__item--active">
|
|
<a href="../../initial-design/" class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
Advanced Topics
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-tabs__item">
|
|
<a href="../../../CONTRIBUTING/" class="md-tabs__link">
|
|
|
|
|
|
|
|
|
|
Contributing
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="../../.." title="external-dns" class="md-nav__button md-logo" aria-label="external-dns" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
|
|
|
</a>
|
|
external-dns
|
|
</label>
|
|
|
|
<div class="md-nav__source">
|
|
<a href="https://github.com/kubernetes-sigs/external-dns/" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
kubernetes-sigs/external-dns
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../.." class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Home
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
|
|
|
|
|
|
|
|
<div class="md-nav__link md-nav__container">
|
|
<a href="../../../charts/external-dns/" class="md-nav__link ">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Chart
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Chart
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../charts/external-dns/CHANGELOG/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Changelog
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
About
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
About
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../faq/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
FAQ
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../flags/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Flags
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../20190708-external-dns-incubator/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Out of Incubator
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../code-of-conduct/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Code of Conduct
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../LICENSE/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
License
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../providers/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Providers
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Tutorials
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Tutorials
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/akamai-edgedns/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Akamai Edge DNS
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/alibabacloud/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Alibaba Cloud
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/aws-filters/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
AWS Filters
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/aws-load-balancer-controller/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
AWS Load Balancer Controller
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/aws-public-private-route53/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
AWS Route53 with same domain for public and private zones
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/aws-sd/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
AWS Cloud Map API
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/aws/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
AWS
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/azure-private-dns/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Azure Private DNS
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/azure/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Azure DNS
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/civo/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Civo DNS
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/cloudflare/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Cloudflare DNS
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/contour/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Contour HTTPProxy
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/coredns/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
CoreDNS with minikube
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/crd/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Using CRD Source for DNS Records
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/digitalocean/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
DigitalOcean DNS
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/dnsimple/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
DNSimple
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/exoscale/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Exoscale
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/externalname/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
ExternalName Services
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/gandi/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Gandi
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/gke-nginx/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
GKE with nginx-ingress-controller
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/gke/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
GKE with default controller
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/godaddy/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
GoDaddy
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/hostport/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Headless Services
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/ionoscloud/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
IONOS Cloud
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/kops-dns-controller/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
kOps dns-controller
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/kube-ingress-aws/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
kube-ingress-aws-controller
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/linode/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Linode
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/ns1/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
NS1
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/oracle/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Oracle Cloud Infrastructure
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/ovh/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
OVHcloud
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/pdns/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
PowerDNS
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/pihole/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Pi-hole
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/plural/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Plural
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/rfc2136/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
RFC2136 provider
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/scaleway/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Scaleway
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/security-context/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Running ExternalDNS with limited privileges
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/transip/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
TransIP
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../tutorials/webhook-provider/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Webhook provider
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Annotations
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Annotations
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../annotations/annotations/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
About
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Sources
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Sources
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/about/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
About
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/crd/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
CRD Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/f5-transportserver/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
F5 Networks TransportServer Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/f5-virtualserver/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
F5 Networks VirtualServer Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/gateway-api/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Gateway API Route Sources
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/gateway/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Gateway sources
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/gloo-proxy/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Gloo Proxy Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/ingress/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Ingress source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/istio/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Istio Gateway / Virtual Service Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/kong/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Kong TCPIngress Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/mx-record/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
MX record with CRD source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/nodes/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Cluster Nodes as Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/ns-record/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
NS record with CRD source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/openshift/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
OpenShift Route Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/pod/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Pod Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/service/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Service source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/traefik-proxy/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Traefik Proxy Source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../sources/txt-record/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Creating TXT record with CRD source
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Registries
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_7">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Registries
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../registry/registry/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
About
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../registry/txt/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
TXT
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../registry/dynamodb/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
DynamoDB
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" checked>
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Advanced Topics
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="true">
|
|
<label class="md-nav__title" for="__nav_8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Advanced Topics
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../initial-design/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Initial Design
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../proposal/001-leader-election/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Leader Election
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_3" >
|
|
|
|
|
|
|
|
<div class="md-nav__link md-nav__container">
|
|
<a href="../../monitoring/" class="md-nav__link ">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Monitoring
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<label class="md-nav__link " for="__nav_8_3" id="__nav_8_3_label" tabindex="0">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_3_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_8_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Monitoring
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../monitoring/metrics/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Available Metrics
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../proposal/multi-target/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
MultiTarget
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../nat64/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
NAT64
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../rate-limits/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Rate Limits
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../ttl/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
TTL
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
FQDN Templating
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
FQDN Templating
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#what-is-fqdn-templating" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
What is FQDN Templating?
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#how-it-works" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
How It Works
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#supported-sources" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Supported Sources
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#custom-functions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Custom Functions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#example-usage" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Example Usage
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Example Usage">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#basic-usage" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Basic Usage
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#with-namespace" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
With Namespace
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-labels-in-templates" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using Labels in Templates
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#multiple-fqdn-templates" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Multiple FQDN Templates
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#conditional-templating-combined-with-annotations-processing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Conditional Templating combined with Annotations processing
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-annotations-for-fqdn-templating" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using Annotations for FQDN Templating
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#dns-scheme-migration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
DNS Scheme Migration
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#multi-variant-domain-support" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Multi-Variant Domain Support
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#tips" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Tips
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#faq" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
FaQ
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="FaQ">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#can-i-specify-multiple-global-fqdn-templates" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Can I specify multiple global FQDN templates?
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#where-to-find-template-syntax" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Where to find template syntax
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fqdn-templating-helm-and-improper-templating-syntax" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
FQDN Templating, Helm and improper templating syntax
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#handling-subdomain-only-hostnames" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Handling Subdomain-Only Hostnames
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#combining-fqdn-template-with-annotations" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Combining FQDN Template with Annotations
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-annotations-for-dynamic-fqdns" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using Annotations for Dynamic FQDNs
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-a-nodes-addresses-for-fqdns" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using a Node’s Addresses for FQDNs
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_9" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_8_9" id="__nav_8_9_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Decisions
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_9_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_8_9">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Decisions
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../proposal/002-internal-ipv6-handling-rollback/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
002 internal ipv6 handling rollback
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../proposal/003-dnsendpoint-graduation-to-beta/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
003 dnsendpoint graduation to beta
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
|
|
|
|
|
|
|
|
<div class="md-nav__link md-nav__container">
|
|
<a href="../../contributing/" class="md-nav__link ">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Contributing
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<label class="md-nav__link " for="__nav_9" id="__nav_9_label" tabindex="0">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_9">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Contributing
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../CONTRIBUTING/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Kubernetes Contributions
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../release/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Release
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../deprecation/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Deprecation Policy
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../contributing/chart/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Helm Chart
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../contributing/design/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Design
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../contributing/dev-guide/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Developer Reference
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../contributing/sources-and-providers/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Sources and Providers
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#what-is-fqdn-templating" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
What is FQDN Templating?
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#how-it-works" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
How It Works
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#supported-sources" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Supported Sources
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#custom-functions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Custom Functions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#example-usage" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Example Usage
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Example Usage">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#basic-usage" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Basic Usage
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#with-namespace" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
With Namespace
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-labels-in-templates" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using Labels in Templates
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#multiple-fqdn-templates" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Multiple FQDN Templates
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#conditional-templating-combined-with-annotations-processing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Conditional Templating combined with Annotations processing
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-annotations-for-fqdn-templating" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using Annotations for FQDN Templating
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#dns-scheme-migration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
DNS Scheme Migration
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#multi-variant-domain-support" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Multi-Variant Domain Support
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#tips" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Tips
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#faq" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
FaQ
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="FaQ">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#can-i-specify-multiple-global-fqdn-templates" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Can I specify multiple global FQDN templates?
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#where-to-find-template-syntax" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Where to find template syntax
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fqdn-templating-helm-and-improper-templating-syntax" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
FQDN Templating, Helm and improper templating syntax
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#handling-subdomain-only-hostnames" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Handling Subdomain-Only Hostnames
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#combining-fqdn-template-with-annotations" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Combining FQDN Template with Annotations
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-annotations-for-dynamic-fqdns" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using Annotations for Dynamic FQDNs
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-a-nodes-addresses-for-fqdns" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using a Node’s Addresses for FQDNs
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h1 id="fqdn-templating-guide">FQDN Templating Guide<a class="headerlink" href="#fqdn-templating-guide" title="Permanent link">¶</a></h1>
|
|
<h2 id="what-is-fqdn-templating">What is FQDN Templating?<a class="headerlink" href="#what-is-fqdn-templating" title="Permanent link">¶</a></h2>
|
|
<p><strong>FQDN templating</strong> is a feature that allows to dynamically construct Fully Qualified Domain Names (FQDNs) using a Go templating engine.<br />
|
|
Instead of relying solely on annotations or static names, you can use metadata from Kubernetes objects—such as service names, namespaces, and labels—to generate DNS records programmatically and dynamically.</p>
|
|
<p>This is useful for:</p>
|
|
<ul>
|
|
<li>Creating consistent naming conventions across environments.</li>
|
|
<li>Reducing boilerplate annotations.</li>
|
|
<li>Supporting multi-tenant or dynamic environments.</li>
|
|
<li>Migrating from one DNS scheme to another</li>
|
|
<li>Supporting multiple variants, such as a regional one and then one that doesn’t or similar.</li>
|
|
</ul>
|
|
<h2 id="how-it-works">How It Works<a class="headerlink" href="#how-it-works" title="Permanent link">¶</a></h2>
|
|
<p>ExternalDNS has a flag: <code>--fqdn-template</code>, which defines a Go template for rendering the desired DNS names.</p>
|
|
<p>The template uses the following data from the source object (e.g., a <code>Service</code> or <code>Ingress</code>):</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Field</th>
|
|
<th style="text-align: left;">Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>Name</code></td>
|
|
<td style="text-align: left;">Name of the object (e.g., service)</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>Namespace</code></td>
|
|
<td style="text-align: left;">Namespace of the object</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>Labels</code></td>
|
|
<td style="text-align: left;">Map of labels applied to the object</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>Annotations</code></td>
|
|
<td style="text-align: left;">Map of annotations</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>TargetName</code></td>
|
|
<td style="text-align: left;">For <code>Service</code>, it’s the service name; for <code>Ingress</code>, the hostname</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>Endpoint</code></td>
|
|
<td style="text-align: left;">Contains more contextual endpoint info, such as IP/target</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>Controller</code></td>
|
|
<td style="text-align: left;">Controller type (optional)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="supported-sources">Supported Sources<a class="headerlink" href="#supported-sources" title="Permanent link">¶</a></h2>
|
|
<!-- TODO: generate from code -->
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Source</th>
|
|
<th style="text-align: left;">Description</th>
|
|
<th style="text-align: center;">FQDN Supported</th>
|
|
<th style="text-align: center;">FQDN Combine</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>ambassador-host</code></td>
|
|
<td style="text-align: left;">Queries Ambassador Host resources for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>cloudfoundry</code></td>
|
|
<td style="text-align: left;">Queries Cloud Foundry resources for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>connector</code></td>
|
|
<td style="text-align: left;">Queries a custom connector source for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>contour-httpproxy</code></td>
|
|
<td style="text-align: left;">Queries Contour HTTPProxy resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>crd</code></td>
|
|
<td style="text-align: left;">Queries Custom Resource Definitions (CRDs) for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>empty</code></td>
|
|
<td style="text-align: left;">Uses an empty source, typically for testing or no-op scenarios.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>f5-transportserver</code></td>
|
|
<td style="text-align: left;">Queries F5 TransportServer resources for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>f5-virtualserver</code></td>
|
|
<td style="text-align: left;">Queries F5 VirtualServer resources for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>fake</code></td>
|
|
<td style="text-align: left;">Uses a fake source for testing purposes.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>gateway-grpcroute</code></td>
|
|
<td style="text-align: left;">Queries GRPCRoute resources from the Gateway API.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>gateway-httproute</code></td>
|
|
<td style="text-align: left;">Queries HTTPRoute resources from the Gateway API.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>gateway-tcproute</code></td>
|
|
<td style="text-align: left;">Queries TCPRoute resources from the Gateway API.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>gateway-tlsroute</code></td>
|
|
<td style="text-align: left;">Queries TLSRoute resources from the Gateway API.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>gateway-udproute</code></td>
|
|
<td style="text-align: left;">Queries UDPRoute resources from the Gateway API.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>gloo-proxy</code></td>
|
|
<td style="text-align: left;">Queries Gloo Proxy resources for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>ingress</code></td>
|
|
<td style="text-align: left;">Queries Kubernetes Ingress resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>istio-gateway</code></td>
|
|
<td style="text-align: left;">Queries Istio Gateway resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>istio-virtualservice</code></td>
|
|
<td style="text-align: left;">Queries Istio VirtualService resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>kong-tcpingress</code></td>
|
|
<td style="text-align: left;">Queries Kong TCPIngress resources for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>node</code></td>
|
|
<td style="text-align: left;">Queries Kubernetes Node resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>openshift-route</code></td>
|
|
<td style="text-align: left;">Queries OpenShift Route resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>pod</code></td>
|
|
<td style="text-align: left;">Queries Kubernetes Pod resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>service</code></td>
|
|
<td style="text-align: left;">Queries Kubernetes Service resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>skipper-routegroup</code></td>
|
|
<td style="text-align: left;">Queries Skipper RouteGroup resources for endpoints.</td>
|
|
<td style="text-align: center;">✅</td>
|
|
<td style="text-align: center;">✅</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>traefik-proxy</code></td>
|
|
<td style="text-align: left;">Queries Traefik IngressRoute resources for endpoints.</td>
|
|
<td style="text-align: center;">❌</td>
|
|
<td style="text-align: center;">❌</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="custom-functions">Custom Functions<a class="headerlink" href="#custom-functions" title="Permanent link">¶</a></h2>
|
|
<!-- TODO: generate from code -->
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Function</th>
|
|
<th style="text-align: left;">Description</th>
|
|
<th style="text-align: left;">Example</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;"><code>contains</code></td>
|
|
<td style="text-align: left;">Check if <code>substr</code> is in <code>string</code></td>
|
|
<td style="text-align: left;"><code>{{ contains "hello" "ell" }} → true</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>isIPv4</code></td>
|
|
<td style="text-align: left;">Validate an IPv4 address</td>
|
|
<td style="text-align: left;"><code>{{ isIPv4 "192.168.1.1" }} → true</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>isIPv6</code></td>
|
|
<td style="text-align: left;">Validate an IPv6 address (including IPv4-mapped IPv6)</td>
|
|
<td style="text-align: left;"><code>{{ isIPv6 "2001:db8::1" }} → true</code><br/><code>{{ isIPv6 "::FFFF:192.168.1.1" }}→true</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>replace</code></td>
|
|
<td style="text-align: left;">Replace <code>old</code> with <code>new</code></td>
|
|
<td style="text-align: left;"><code>{{ replace "hello" "l" "w" }} → hewwo</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>trim</code></td>
|
|
<td style="text-align: left;">Remove leading and trailing spaces</td>
|
|
<td style="text-align: left;"><code>{{ trim " hello " }} → hello</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>toLower</code></td>
|
|
<td style="text-align: left;">Convert to lowercase</td>
|
|
<td style="text-align: left;"><code>{{ toLower "HELLO" }} → hello</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>trimPrefix</code></td>
|
|
<td style="text-align: left;">Remove the leading <code>prefix</code></td>
|
|
<td style="text-align: left;"><code>{{ trimPrefix "pre" "prefix" }} → fix</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;"><code>trimSuffix</code></td>
|
|
<td style="text-align: left;">Remove the trailing <code>suffix</code></td>
|
|
<td style="text-align: left;"><code>{{ trimSuffix "fix" "suffix" }} → suf</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<hr />
|
|
<h2 id="example-usage">Example Usage<a class="headerlink" href="#example-usage" title="Permanent link">¶</a></h2>
|
|
<blockquote>
|
|
<p>These examples should provide a solid foundation for implementing FQDN templating in your ExternalDNS setup.<br />
|
|
If you have specific requirements or encounter issues, feel free to explore the issues or update this guide.</p>
|
|
</blockquote>
|
|
<h3 id="basic-usage">Basic Usage<a class="headerlink" href="#basic-usage" title="Permanent link">¶</a></h3>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>apiVersion: v1
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>kind: Service
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>metadata:
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> name: my-service
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> namespace: my-namespace
|
|
</code></pre></div>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>external-dns<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span>--provider<span class="o">=</span>aws<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span>--source<span class="o">=</span>service<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span>--fqdn-template<span class="o">=</span><span class="s2">"{{ .Name }}.example.com,{{ .Name }}.{{ .Namespace }}.example.tld"</span>
|
|
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>
|
|
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="c1"># This will result in DNS entries like</span>
|
|
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a>>route53><span class="w"> </span>my-service.example.com
|
|
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>>route53><span class="w"> </span>my-service.my-namespace.example.tld
|
|
</code></pre></div>
|
|
<h3 id="with-namespace">With Namespace<a class="headerlink" href="#with-namespace" title="Permanent link">¶</a></h3>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>---
|
|
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>apiVersion: v1
|
|
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>kind: Service
|
|
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a>metadata:
|
|
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a> name: my-service
|
|
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a> namespace: default
|
|
<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a>---
|
|
<a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a>apiVersion: v1
|
|
<a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a>kind: Service
|
|
<a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a>metadata:
|
|
<a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a> name: other-service
|
|
<a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a> namespace: kube-system
|
|
</code></pre></div>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>args:
|
|
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a> --fqdn-template="{{.Name}}.{{.Namespace}}.example.com"
|
|
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>
|
|
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a># This will result in DNS entries like
|
|
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a># route53> my-service.default.example.com
|
|
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a># route53> other-service.kube-system.example.com
|
|
</code></pre></div>
|
|
<h3 id="using-labels-in-templates">Using Labels in Templates<a class="headerlink" href="#using-labels-in-templates" title="Permanent link">¶</a></h3>
|
|
<p>You can also utilize labels in your FQDN templates to create more dynamic DNS entries. Assuming your service has:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>apiVersion: v1
|
|
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>kind: Service
|
|
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>metadata:
|
|
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a> name: my-service
|
|
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a> labels:
|
|
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a> environment: staging
|
|
</code></pre></div>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>args:
|
|
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a> --fqdn-template="{{ .Labels.environment }}.{{ .Name }}.example.com"
|
|
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>
|
|
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a># This will result in DNS entries like
|
|
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a># route53> staging.my-service.example.com
|
|
</code></pre></div>
|
|
<h3 id="multiple-fqdn-templates">Multiple FQDN Templates<a class="headerlink" href="#multiple-fqdn-templates" title="Permanent link">¶</a></h3>
|
|
<p>ExternalDNS allows specifying multiple FQDN templates, which can be useful when you want to create multiple DNS entries for a single service or ingress.</p>
|
|
<blockquote>
|
|
<p>Be cautious, as this will create multiple DNS records per resource, potentially increasing the number of API calls to your DNS provider.</p>
|
|
</blockquote>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>args:
|
|
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a> --fqdn-template={{.Name}}.example.com,{{.Name}}.svc.example.com
|
|
</code></pre></div>
|
|
<h3 id="conditional-templating-combined-with-annotations-processing">Conditional Templating combined with Annotations processing<a class="headerlink" href="#conditional-templating-combined-with-annotations-processing" title="Permanent link">¶</a></h3>
|
|
<p>In scenarios where you want to conditionally generate FQDNs based on annotations, you can use Go template functions like or to provide defaults.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>args:
|
|
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a> - --combine-fqdn-annotation # this is required to combine FQDN templating and annotation processing
|
|
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a> - --fqdn-template={{ or .Annotations.dns "invalid" }}.example.com
|
|
<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a> - --exclude-domains=invalid.example.com
|
|
</code></pre></div>
|
|
<h3 id="using-annotations-for-fqdn-templating">Using Annotations for FQDN Templating<a class="headerlink" href="#using-annotations-for-fqdn-templating" title="Permanent link">¶</a></h3>
|
|
<p>This example demonstrates how to use annotations in Kubernetes objects to dynamically generate Fully Qualified Domain Names (FQDNs) using the –fqdn-template flag in ExternalDNS.</p>
|
|
<p>The Service object includes an annotation dns.company.com/label with the value my-org-tld-v2. This annotation is used as part of the FQDN template to construct the DNS name.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>apiVersion: v1
|
|
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>kind: Service
|
|
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>metadata:
|
|
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a> name: nginx-v2
|
|
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a> namespace: my-namespace
|
|
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a> annotations:
|
|
<a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a> dns.company.com/label: my-org-tld-v2
|
|
<a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a>spec:
|
|
<a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a> type: ClusterIP
|
|
<a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a> clusterIP: None
|
|
</code></pre></div>
|
|
<p>The –fqdn-template flag is configured to use the annotation value (dns.company.com/label) and append the namespace and a custom domain (company.local) to generate the FQDN.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>args:
|
|
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a> --source=service
|
|
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a> --fqdn-template='{{ index .ObjectMeta.Annotations "dns.company.com/label" }}.{{ .Namespace }}.company.local'
|
|
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a>
|
|
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a># For the given Service object, the resulting FQDN will be:
|
|
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a># route53> my-org-tld-v2.my-namespace.company.local
|
|
</code></pre></div>
|
|
<h3 id="dns-scheme-migration">DNS Scheme Migration<a class="headerlink" href="#dns-scheme-migration" title="Permanent link">¶</a></h3>
|
|
<p>If you’re transitioning from one naming convention to another (e.g., from svc.cluster.local to svc.example.com), –fqdn-template allows you to generate the new records alongside or in place of the old ones — without requiring changes to your Kubernetes manifests.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>args:
|
|
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>- --fqdn-template='{{.Name}}.new-dns.example.com'
|
|
</code></pre></div>
|
|
<p>This helps automate DNS record migration while maintaining service continuity.</p>
|
|
<h3 id="multi-variant-domain-support">Multi-Variant Domain Support<a class="headerlink" href="#multi-variant-domain-support" title="Permanent link">¶</a></h3>
|
|
<p>You can also support regional variants or multi-tenant architectures, where the same service is deployed to different regions or environments:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="l l-Scalar l-Scalar-Plain">--fqdn-template='{{ .Name }}.{{ .Labels.env }}.{{ .Labels.region }}.example.com, {{ if eq .Labels.env "prod" }}{{ .Name }}.my-company.tld{{ end }}'</span>
|
|
</code></pre></div>
|
|
<p>With additional context (e.g., annotations), this can produce FQDNs like:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>api.prod.us-east-1.example.com
|
|
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>api.my-company.tld
|
|
</code></pre></div>
|
|
<p>This is helpful in scenarios such as:</p>
|
|
<ul>
|
|
<li>Blue/green deployments across domains</li>
|
|
<li>Staging vs. production resolution</li>
|
|
<li>Multi-cloud or multi-region failover strategies</li>
|
|
</ul>
|
|
<h2 id="tips">Tips<a class="headerlink" href="#tips" title="Permanent link">¶</a></h2>
|
|
<ul>
|
|
<li>If <code>--fqdn-template</code> is specified, ExternalDNS ignores any <code>external-dns.alpha.kubernetes.io/hostname</code> annotations.</li>
|
|
<li>You must still ensure the resulting FQDN is valid and unique.</li>
|
|
<li>Since Go templates can be error-prone, test your template with simple examples before deploying. Mismatched field names or nil values (e.g., missing labels) will result in errors or skipped entries.</li>
|
|
</ul>
|
|
<h2 id="faq">FaQ<a class="headerlink" href="#faq" title="Permanent link">¶</a></h2>
|
|
<h3 id="can-i-specify-multiple-global-fqdn-templates">Can I specify multiple global FQDN templates?<a class="headerlink" href="#can-i-specify-multiple-global-fqdn-templates" title="Permanent link">¶</a></h3>
|
|
<p>Yes, you can. Pass in a comma separated list to –fqdn-template. Beware this will double (triple, etc) the amount of DNS entries based on how many services, ingresses and so on you have and will get you faster towards the API request limit of your DNS provider.</p>
|
|
<h3 id="where-to-find-template-syntax">Where to find template syntax<a class="headerlink" href="#where-to-find-template-syntax" title="Permanent link">¶</a></h3>
|
|
<ul>
|
|
<li><a href="https://pkg.go.dev/text/template">Go template syntax</a></li>
|
|
<li><a href="https://github.com/golang/go/blob/master/src/text/template/funcs.go#L39-L63">Go func builtins</a></li>
|
|
</ul>
|
|
<h3 id="fqdn-templating-helm-and-improper-templating-syntax">FQDN Templating, Helm and improper templating syntax<a class="headerlink" href="#fqdn-templating-helm-and-improper-templating-syntax" title="Permanent link">¶</a></h3>
|
|
<p>The user encountered errors due to improper templating syntax:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>extraArgs:
|
|
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a> - --fqdn-template={{name}}.uat.example.com
|
|
</code></pre></div>
|
|
<p>The correct syntax should include a dot prefix: <code>{{ .Name }}</code>.<br />
|
|
Additionally, when using Helm’s <code>tpl</code> function, it’s necessary to escape the braces to prevent premature evaluation:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>extraArgs:
|
|
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a> - --fqdn-template={{ `{{ .Name }}.uat.example.com` }}
|
|
</code></pre></div>
|
|
<h3 id="handling-subdomain-only-hostnames">Handling Subdomain-Only Hostnames<a class="headerlink" href="#handling-subdomain-only-hostnames" title="Permanent link">¶</a></h3>
|
|
<p>In <a href="https://github.com/kubernetes-sigs/external-dns/issues/1872">Issue #1872</a>, it was observed that ExternalDNS ignores the <code>--fqdn-template</code> when the ingress host field is set to a subdomain (e.g., foo) without a full domain.<br />
|
|
The expectation was that the template would still apply, generating entries like <code>foo.bar.example.com.</code><br />
|
|
This highlights a limitation to be aware of when designing FQDN templates.</p>
|
|
<blockquote>
|
|
<p><img alt="⚠" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a0.svg" title=":warning:" /> This is currently not supported ! User would expect external-dns to generate a dns record according to the fqdnTemplate<br />
|
|
e.g. if the ingress name: foo and host: foo is created while fqdnTemplate={{.Name}}.bar.example.com then a dns record foo.bar.example.com should be created</p>
|
|
</blockquote>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>apiVersion: extensions/v1beta1
|
|
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a>kind: Ingress
|
|
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a>metadata:
|
|
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a> name: foo
|
|
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a>spec:
|
|
<a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a> rules:
|
|
<a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a> - host: foo
|
|
<a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a> http:
|
|
<a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a> paths:
|
|
<a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a> - backend:
|
|
<a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a> serviceName: foo
|
|
<a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a> servicePort: 80
|
|
<a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a> path: /
|
|
</code></pre></div>
|
|
<h3 id="combining-fqdn-template-with-annotations">Combining FQDN Template with Annotations<a class="headerlink" href="#combining-fqdn-template-with-annotations" title="Permanent link">¶</a></h3>
|
|
<p>In <a href="https://github.com/kubernetes-sigs/external-dns/issues/3318">Issue #3318</a>, a question was raised about the interaction between –fqdn-template and –combine-fqdn-annotation.<br />
|
|
The discussion clarified that when both flags are used, ExternalDNS combines the FQDN generated from the template with the annotation value, providing flexibility in DNS name construction.</p>
|
|
<h3 id="using-annotations-for-dynamic-fqdns">Using Annotations for Dynamic FQDNs<a class="headerlink" href="#using-annotations-for-dynamic-fqdns" title="Permanent link">¶</a></h3>
|
|
<p>In <a href="https://github.com/kubernetes-sigs/external-dns/issues/2627">Issue #2627</a>, a user aimed to generate DNS entries based on ingress annotations:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>args:
|
|
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> - --fqdn-template={{.Annotations.hostname}}.example.com
|
|
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a> - --combine-fqdn-annotation
|
|
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> - --domain-filter=example.com
|
|
</code></pre></div>
|
|
<p>By setting the hostname annotation in the ingress resource, ExternalDNS constructs the FQDN accordingly. This approach allows for dynamic DNS entries without hardcoding hostnames.</p>
|
|
<h3 id="using-a-nodes-addresses-for-fqdns">Using a Node’s Addresses for FQDNs<a class="headerlink" href="#using-a-nodes-addresses-for-fqdns" title="Permanent link">¶</a></h3>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>args:
|
|
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a> - --fqdn-template="{{range .Status.Addresses}}{{if and (eq .Type \"ExternalIP\") (isIPv4 .Address)}}{{.Address | replace \".\" \"-\"}}{{break}}{{end}}{{end}}.example.com"
|
|
</code></pre></div>
|
|
<p>This is a complex template that iternates through a list of a Node’s Addresses and creates a FQDN with public IPv4 addresses.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<aside class="md-source-file">
|
|
|
|
|
|
<span class="md-source-file__fact">
|
|
<span class="md-icon" title="Last update">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"/></svg>
|
|
</span>
|
|
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">June 15, 2025</span>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
</aside>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
|
|
Back to top
|
|
</button>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<!--
|
|
Copyright (c) 2016-2024 Martin Donath <martin.donath@squidfunk.com>
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to
|
|
deal in the Software without restriction, including without limitation the
|
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
sell copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
IN THE SOFTWARE.
|
|
-->
|
|
|
|
<!-- Copyright and theme information -->
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a
|
|
href="https://squidfunk.github.io/mkdocs-material/"
|
|
target="_blank" rel="noopener"
|
|
>
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
<script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "navigation.top", "navigation.tracking", "navigation.indexes", "navigation.instant", "navigation.tabs", "navigation.tabs.sticky"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
|
|
|
|
|
|
<script src="../../../assets/javascripts/bundle.1e8ae164.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |