設定擴充 API 伺服器

設定擴充 API 伺服器以與聚合層協同運作,可讓 Kubernetes apiserver 透過非核心 Kubernetes API 的額外 API 進行擴充。

準備開始

您需要有一個 Kubernetes 叢集,並且必須設定 kubectl 命令列工具以與您的叢集通訊。建議在至少有兩個非控制平面主機節點的叢集上執行本教學課程。如果您還沒有叢集,可以使用 minikube 建立一個,或者您可以使用以下 Kubernetes 練習場之一

若要檢查版本,請輸入 kubectl version

設定擴充 api-server 以與聚合層協同運作

以下步驟說明如何概略地設定擴充 api-server。無論您是使用 YAML 組態或 API,這些步驟都適用。已嘗試明確識別兩者之間的任何差異。如需如何使用 YAML 組態實作這些步驟的具體範例,您可以查看 Kubernetes 儲存庫中的 sample-apiserver

或者,您可以使用現有的第三方解決方案,例如 apiserver-builder,它應該會產生骨架並自動化所有以下步驟。

  1. 確定已啟用 APIService API(檢查 --runtime-config)。預設應為開啟狀態,除非在您的叢集中已刻意關閉。
  2. 您可能需要制定 RBAC 規則,允許您新增 APIService 物件,或請您的叢集管理員制定規則。(由於 API 擴充會影響整個叢集,因此不建議在實際運作的叢集中進行 API 擴充的測試/開發/偵錯。)
  3. 建立您要執行擴充 api 服務的 Kubernetes 命名空間。
  4. 建立/取得 CA 憑證,以用於簽署擴充 api-server 用於 HTTPS 的伺服器憑證。
  5. 為 api-server 建立伺服器憑證/金鑰,以用於 HTTPS。此憑證應由上述 CA 簽署。它也應具有 Kube DNS 名稱的 CN。這衍生自 Kubernetes 服務,格式應為 <服務名稱>.<服務名稱命名空間>.svc
  6. 在您的命名空間中使用伺服器憑證/金鑰建立 Kubernetes 密鑰。
  7. 為擴充 api-server 建立 Kubernetes 部署,並確保您將密鑰載入為磁碟區。它應包含對擴充 api-server 工作映像檔的參考。部署也應位於您的命名空間中。
  8. 確定您的擴充 api-server 從該磁碟區載入這些憑證,並且這些憑證用於 HTTPS 交握。
  9. 在您的命名空間中建立 Kubernetes 服務帳戶。
  10. 為您想要在資源上允許的操作建立 Kubernetes 叢集角色。
  11. 從您的命名空間中的服務帳戶到您建立的叢集角色,建立 Kubernetes 叢集角色繫結。
  12. 從您的命名空間中的服務帳戶到 system:auth-delegator 叢集角色,建立 Kubernetes 叢集角色繫結,以將身份驗證決策委派給 Kubernetes 核心 API 伺服器。
  13. 從您的命名空間中的服務帳戶到 extension-apiserver-authentication-reader 角色,建立 Kubernetes 角色繫結。這允許您的擴充 api-server 存取 extension-apiserver-authentication configmap。
  14. 建立 Kubernetes apiservice。上述 CA 憑證應經過 base64 編碼、去除換行符號,並用作 apiservice 中的 spec.caBundle。這不應命名空間化。如果使用 kube-aggregator API,則僅傳入 PEM 編碼的 CA 捆綁包,因為 base 64 編碼已為您完成。
  15. 使用 kubectl 取得您的資源。執行時,kubectl 應傳回「找不到資源」。此訊息表示一切正常,但您目前沒有建立該資源類型的物件。

下一步