本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
如何在 AWS 上部署安全、可審計且可復現的 Kubernetes 叢集
在 CoreOS,我們致力於大規模地在生產環境中部署 Kubernetes。今天,我們很高興分享一個工具,它能讓在 Amazon Web Services (AWS) 上部署 Kubernetes 變得輕而易舉。Kube-aws 是一個用於在 AWS 上部署可審計和可復現的 Kubernetes 叢集的工具,目前 CoreOS 正使用它來啟動生產叢集。
今天,您可能以一種更手動的方式組裝 Kubernetes 元件。有了這個有用的工具,Kubernetes 以流線型的軟體包交付,可以節省時間,最大程度地減少相互依賴,並快速建立生產就緒的部署。
它利用一個簡單的模板系統,將叢集配置生成為一組宣告式配置模板,這些模板可以進行版本控制、審計和重新部署。由於整個配置過程都由 AWS CloudFormation 和 cloud-init 完成,因此您無需使用外部配置管理工具。即插即用!
要跳過介紹,直接進入專案,請檢視 kube-aws 的最新版本,它支援 Kubernetes 1.2.x。要啟動您的叢集,請查閱文件。
為什麼選擇 kube-aws?安全、可審計和可復現性
Kube-aws 的設計圍繞三個核心目標。
安全:TLS 資產在嵌入 CloudFormation JSON 之前,透過 AWS Key Management Service (KMS) 進行加密。透過獨立管理 KMS 金鑰的 IAM 策略,操作員可以將 CloudFormation 堆疊的運維訪問與 TLS 秘密的訪問解耦。
可審計:kube-aws 圍繞叢集資產的概念構建。這些配置和憑證資產代表了叢集的完整描述。由於 KMS 用於加密 TLS 資產,您可以隨意將未加密的堆疊 JSON 簽入版本控制!
可復現:--export 選項將您的引數化叢集定義打包成一個單獨的 JSON 檔案,該檔案定義了一個 CloudFormation 堆疊。如果需要,該檔案可以進行版本控制,並透過現有的部署工具直接提交到 CloudFormation API。
如何開始使用 kube-aws
在此基礎上,kube-aws 實現了使 AWS 上的 Kubernetes 部署更易於管理和更靈活的功能。以下是一些示例。
Route53 整合:Kube-aws 可以在配置過程中管理您的叢集 DNS 記錄。
cluster.yaml
externalDNSName: my-cluster.kubernetes.coreos.com
createRecordSet: true
hostedZone: kubernetes.coreos.com
recordSetTTL: 300
現有 VPC 支援:將您的叢集部署到現有 VPC。
cluster.yaml
vpcId: vpc-xxxxx
routeTableId: rtb-xxxxx
驗證:Kube-aws 支援對 cloud-init 和 CloudFormation 定義以及叢集堆疊將整合的任何外部資源進行驗證。例如,這是一個帶有拼寫錯誤引數的 cloud-config
userdata/cloud-config-worker
#cloud-config
coreos:
flannel:
interrface: $private\_ipv4
etcd\_endpoints: {{ .ETCDEndpoints }}
$ kube-aws validate
> 正在驗證使用者資料...
錯誤:cloud-config 驗證錯誤
UserDataWorker:第 4 行:警告:無法識別的鍵 "interrface"
要開始使用,請查閱 kube-aws 文件。
未來工作
一如既往,kube-aws 的目標是使部署能夠用於生產。雖然我們今天在 AWS 生產環境中使用 kube-aws,但此專案仍處於 1.0 版本之前,kube-aws 仍有許多需要改進的領域。
容錯性:在 CoreOS,我們相信 AWS 上的 Kubernetes 是一個強大的平臺,可用於容錯和自愈部署。在未來幾周,kube-aws 將迎來一個新的挑戰:在 混沌猴子 攻擊下生存——包括控制平面在內!
零停機更新:CoreOS 節點和 Kubernetes 元件的更新可以在不停機且與正確的例項替換策略不相互依賴的情況下完成。
一個 GitHub 問題 正在跟蹤實現此目標的工作。我們期待您透過提交問題或直接貢獻來參與專案。
瞭解更多關於 Kubernetes 的資訊,並在 CoreOS Fest Berlin 與社群會面 - 2016年5月9-10日