Kubernetes 安裝一個擴(kuò)展的API server

2022-06-17 09:39 更新

安裝一個擴(kuò)展的 API server

安裝擴(kuò)展的 API 服務(wù)器來使用聚合層以讓 Kubernetes API 服務(wù)器使用 其它 API 進(jìn)行擴(kuò)展, 這些 API 不是核心 Kubernetes API 的一部分。

在開始之前

你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機(jī)。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:

要獲知版本信息,請輸入 ?kubectl version?。

你必須配置聚合層 并且啟用 API 服務(wù)器的相關(guān)參數(shù)。

安裝一個擴(kuò)展的 API 服務(wù)器來使用聚合層

以下步驟描述如何 在一個高層次 設(shè)置一個擴(kuò)展的 apiserver。無論你使用的是 YAML 配置還是使用 API,這些步驟都適用。 目前我們正在嘗試區(qū)分出兩者的區(qū)別。有關(guān)使用 YAML 配置的具體示例,你可以在 Kubernetes 庫中查看 sample-apiserver。

或者,你可以使用現(xiàn)有的第三方解決方案,例如 apiserver-builder, 它將生成框架并自動執(zhí)行以下所有步驟。

  1. 確保啟用了 APIService API(檢查 ?--runtime-config?)。默認(rèn)應(yīng)該是啟用的,除非被特意關(guān)閉了。
  2. 你可能需要制定一個 RBAC 規(guī)則,以允許你添加 APIService 對象,或讓你的集群管理員創(chuàng)建一個。 (由于 API 擴(kuò)展會影響整個集群,因此不建議在實時集群中對 API 擴(kuò)展進(jìn)行測試/開發(fā)/調(diào)試)
  3. 創(chuàng)建 Kubernetes 命名空間,擴(kuò)展的 api-service 將運行在該命名空間中。
  4. 創(chuàng)建(或獲?。┯脕砗炇鸱?wù)器證書的 CA 證書,擴(kuò)展 api-server 中將使用該證書做 HTTPS 連接。
  5. 為 api-server 創(chuàng)建一個服務(wù)端的證書(或秘鑰)以使用 HTTPS。這個證書應(yīng)該由上述的 CA 簽署。 同時應(yīng)該還要有一個 Kube DNS 名稱的 CN,這是從 Kubernetes 服務(wù)派生而來的, 格式為 ?<service name>.<service name namespace>.svc?。
  6. 使用命名空間中的證書(或秘鑰)創(chuàng)建一個 Kubernetes secret。
  7. 為擴(kuò)展 api-server 創(chuàng)建一個 Kubernetes Deployment,并確保以卷的方式掛載了 Secret。 它應(yīng)該包含對擴(kuò)展 api-server 鏡像的引用。Deployment 也應(yīng)該在同一個命名空間中。
  8. 確保你的擴(kuò)展 apiserver 從該卷中加載了那些證書,并在 HTTPS 握手過程中使用它們。
  9. 在你的命名空間中創(chuàng)建一個 Kubernetes 服務(wù)賬號。
  10. 為資源允許的操作創(chuàng)建 Kubernetes 集群角色。
  11. 用你命名空間中的服務(wù)賬號創(chuàng)建一個 Kubernetes 集群角色綁定,綁定到你創(chuàng)建的角色上。
  12. 用你命名空間中的服務(wù)賬號創(chuàng)建一個 Kubernetes 集群角色綁定,綁定到 ?system:auth-delegator? 集群角色,以將 auth 決策委派給 Kubernetes 核心 API 服務(wù)器。
  13. 以你命名空間中的服務(wù)賬號創(chuàng)建一個 Kubernetes 集群角色綁定,綁定到 ?extension-apiserver-authentication-reader? 角色。 這將讓你的擴(kuò)展 api-server 能夠訪問 ?extension-apiserver-authentication? configmap。
  14. 創(chuàng)建一個 Kubernetes apiservice。 上述的 CA 證書應(yīng)該使用 base64 編碼,剝離新行并用作 apiservice 中的 spec.caBundle。 該資源不應(yīng)放到任何名字空間。如果使用了 kube-aggregator API,那么只需要傳入 PEM 編碼的 CA 綁定,因為 base 64 編碼已經(jīng)完成了。
  15. 使用 kubectl 來獲得你的資源。 它應(yīng)該返回 "找不到資源"。此消息表示一切正常,但你目前還沒有創(chuàng)建該資源類型的對象。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號