使用 OctoDNS 啟用 DNS 分割權威
配置
OctoDNS 能夠讓我們重新打造我們的 DNS 工作流程。我們的區域和記錄存儲在 Git 倉庫的配置文件中。對它們的變更使用 GitHub 流,並像個站點一樣用分支部署。我們甚至可以做個 「空」 部署來預覽哪些記錄將在變更中修改。配置文件是 yaml 字典,每個區域一個,它的頂層的鍵名是記錄名稱,鍵值是 ttl、類型和類型特定的數據。例如,當包含在區域文件 github.com.yaml
中時,以下配置將創建 octodns.github.com.
的 A
記錄。
octodns:
type: A
values:
- 1.2.3.4
- 1.2.3.5
配置的第二部分將記錄數據的源映射到 DNS 服務提供商。下面的代碼片段告訴 OctoDNS 從 config
提供程序載入區域 github.com
,並將其結果同步到 dyn
和 route53
。
zones:
github.com.:
sources:
- config
targets:
- dyn
- route53
同步
一旦我們的配置完成,OctoDNS 就可以評估當前的狀態,並建立一個計劃,其中列出將需要將目標狀態與源相匹配的一組更改。在下面的例子中,octodns.github.com
是一個新的記錄,所以所需的操作是在兩者中創建記錄。
$ octodns-sync --config-file=./config/production.yaml
...
********************************************************************************
* github.com.
********************************************************************************
* route53 (Route53Provider)
* Create <ARecord A 60, octodns.github.com., [u'1.2.3.4', '1.2.3.5']>
* Summary: Creates=1, Updates=0, Deletes=0, Existing Records=0
* dyn (DynProvider)
* Create <ARecord A 60, octodns.github.com., [u'1.2.3.4', '1.2.3.5']>
* Summary: Creates=1, Updates=0, Deletes=0, Existing Records=0
********************************************************************************
...
默認情況下 octodns-sync
處於模擬運行模式,因此不會採取任何行動。一旦我們審閱了變更,並對它們感到滿意,我們可以添加 `--doit' 標誌並再次運行命令。OctoDNS 將繼續它的處理流程,這一次將在 Route53 和 Dynect 中進行必要的更改,以便創建新的記錄。
$ octodns-sync --config-file=./config/production.yaml --doit
...
此刻,在兩個 DNS 服務提供商里我們有了相同的數據記錄,並可以輕鬆地分割我們的 DNS 請求給它們,並知道它們將提供準確的結果。當我們直接運行上面的 OctoDNS 命令時,我們的內部工作流程依賴於部署腳本和 chatops。你可以在 README 的工作流程部分中找到更多信息。
總結
我們認為大多數網站可以從分割權威中受益,並且希望用 OctoDNS,其中最大的障礙已被掃除。即使對分割權威不感興趣,OctoDNS 仍然值得一看,因為它將基礎設施即代碼的好處帶給了 DNS。
想幫助 GitHub SRE 團隊解決有趣的問題嗎?我們很樂意加入我們。在這裡申請。
via: https://githubengineering.com/enabling-split-authority-dns-with-octodns/
作者:Ross McFarland 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive