WKSctl是一個開源項目，用於通過SSH安裝、引導和管理Kubernetes集群，包括其插件。 WKSctl是 Cluster API (CAPI) 按照GitOps方式所提供的一個項目。 Kubernetes集群是由YAML文件配置的，WKSctl在Git的每次推送後都會應用更新，從而允許用戶按需擁有可複制的集群。
CAPI是一個Kubernetes項目，能夠讓用戶以聲明的方式創建、配置和管理集群，就像使用Deployment或Service等其他Kubernetes資源那樣。目前，AWS或VMware vSphere等基礎設施供應商提供了其他的CAPI實現。 WKSctl有一個有趣的特點，它只需一個SSH端點列表以及引導Kubernetes的目標虛擬機的關聯憑據即可。
最近，InfoQ採訪了Weaveworks的Alexis Richardon（CEO）、Mark Ramm（產品總監）、Cornelia Davis（CTO）和Mark Emeis（工程師經理）以了解更多關於WKSctl的信息。
InfoQ：什麼是WKSctl？您為什麼要構建另外一個Kubernetes工具？
Alexis Richardson：目前，有像kops或Kubeadm這樣自行安裝（roll your own，簡稱RYO）的安裝程序，也有像rancher、kind或minikube這樣打包好的安裝程序。 WKSctl讓我們擁有RYO的強大功能，同時兼有打包好的安裝程序的功能，適用於開發者、數據中心和雲端。
WKSctl是CAPI的一個開源實現，而不是Kubernetes的一個發行版。它是一個GitOps安裝程序和控制器，適用於上游Kubernetes集群。 WKSctl訂閱一個存儲庫（使用Flux），其包含Kubernetes和其他我們希望安裝的部件。然後，WKSctl構建並引導該集群。我們要做就是給WKSctl提供一個SSH端點列表，剩下的事就由WKSctl完成。一旦該集群啟動並運行，如果我們在Git中更改了該集群的配置，那麼WKSctl會把這些更改應用到該集群上。
它的總體的好處是可以靈活地使用Kubernetes的多個不同的發行版本。我們可以有可複制的集群，想複製多少次就可以復制多少次。集群自身是牛而不是寵物。我們認為，理想情況下，集群應該是百分之百可丟棄的，當集群處於不正確的狀態時，我們應該得到通知。
InfoQ：WKSctl的典型使用場景是什麼？
Richardson：WKSctl的目的不是進行機器配置。因此，WKSctl的理想用戶是使用Terraform、vSphere、Salt、Ansible或Chef來自己配置機器的人。因此，用戶可以使用WKSctl在這些機器上安裝和引導Kubernetes。但是，如果我們不想配置機器，那麼，也可以用Firekube，它比WKSctl更進一步。 Firekube使用一個vanilla Kubernetes，並用WKSctl把它安裝在Ignite（Firecracker虛擬機）集群上。
另一個使用場景是多雲或混合雲，這方面有更先進的模式，我們稱之為“master-of-masters，簡稱MoM”模式。在這個模式中，我們將擁有一個MoM集群，它會在每個目標環境中供應Kubernetes主管理集群，後續我們就可以供應任意數量的Kubernetes集群了。
InfoQ：WKSctl是如何運行的？它是CLI還是一個Kubernetes控制器，還是兩者兼有？
Mark Emeis：兩者兼有。 WKSctl用CLI引導Kubernetes集群中的第一個節點，然後安裝WKSctl控制器以管理其他master和worker節點的安裝。 WKSctl CLI基於Git存儲庫創建一個集群，安裝Flux以​​訂閱該Git存儲庫，這就是我們所謂的“Git到Kubernetes的調解循環”。最終，WKSctl安裝一個自定義資源控制器，以便根據從Git收到的配置來應用集群級的更改。
Cornelia Davis：有兩個調解循環。 Flux是一個調解器，監控Git存儲對集群配置的所有更改。本質上，它的工作是把這些來自Git的東西提交給etcd。第二個調解器是WKSctl控制器，它就像Kubernetes中的replication控制器那樣監控etcd。
InfoQ：如何給Kubernetes集群打補丁和升級？是否有停機時間？
Mark Ramm：WKSctl對CAPI manifest的更改做出反應。當運維人員改變Kubernetes的版本時，控制器更新master節點，然後是worker節點。當集群被有效更新時，需要構建應用程序以重新處理調度。對於應用來說，遵循12因素應用程序模式是個良好的開端。
InfoQ：我們能否自定義集群架構以解耦組件，比如有專門用於etcd的虛擬機而API組件位於另外的服務器中？
Ramm：默認情況下，WKSctl啟動時，會有worker節點和3個master節點。我們希望保持簡單。如果要做更複雜的事情，我們會推薦使用我們的商業產品WKP。總體上，我們看到WKSctl發生的情況是，用戶在按需創建開發和測試集群，這些集群是短暫的（規模不大）。很多集群來來去去，而不是只有一個大集群。我們發現，一般情況下，出於權限和安全的原因，企業用戶傾向於使用更多的集群而不是一個大型集群。另外，當我們水平擴展集群時，系統的擴展很容易，這跟創建大型集群剛好相反。
InfoQ：在社區中，WKSctl的採用情況怎樣？
Ramm：德國電信是剛開始使用WKSctl的客戶。最近，他們分享了一個小視頻，演示了WKSctl在他們的環境中的工作情況。