設定擴充 API 伺服器
設定擴充 API 伺服器以與聚合層協同運作,可讓 Kubernetes apiserver 透過非核心 Kubernetes API 的額外 API 進行擴充。
準備開始
您需要有一個 Kubernetes 叢集,並且必須設定 kubectl 命令列工具以與您的叢集通訊。建議在至少有兩個非控制平面主機節點的叢集上執行本教學課程。如果您還沒有叢集,可以使用 minikube 建立一個,或者您可以使用以下 Kubernetes 練習場之一
若要檢查版本,請輸入kubectl version
。- 您必須設定聚合層並啟用 apiserver 旗標。
設定擴充 api-server 以與聚合層協同運作
以下步驟說明如何概略地設定擴充 api-server。無論您是使用 YAML 組態或 API,這些步驟都適用。已嘗試明確識別兩者之間的任何差異。如需如何使用 YAML 組態實作這些步驟的具體範例,您可以查看 Kubernetes 儲存庫中的 sample-apiserver。
或者,您可以使用現有的第三方解決方案,例如 apiserver-builder,它應該會產生骨架並自動化所有以下步驟。
- 確定已啟用 APIService API(檢查
--runtime-config
)。預設應為開啟狀態,除非在您的叢集中已刻意關閉。 - 您可能需要制定 RBAC 規則,允許您新增 APIService 物件,或請您的叢集管理員制定規則。(由於 API 擴充會影響整個叢集,因此不建議在實際運作的叢集中進行 API 擴充的測試/開發/偵錯。)
- 建立您要執行擴充 api 服務的 Kubernetes 命名空間。
- 建立/取得 CA 憑證,以用於簽署擴充 api-server 用於 HTTPS 的伺服器憑證。
- 為 api-server 建立伺服器憑證/金鑰,以用於 HTTPS。此憑證應由上述 CA 簽署。它也應具有 Kube DNS 名稱的 CN。這衍生自 Kubernetes 服務,格式應為
<服務名稱>.<服務名稱命名空間>.svc
- 在您的命名空間中使用伺服器憑證/金鑰建立 Kubernetes 密鑰。
- 為擴充 api-server 建立 Kubernetes 部署,並確保您將密鑰載入為磁碟區。它應包含對擴充 api-server 工作映像檔的參考。部署也應位於您的命名空間中。
- 確定您的擴充 api-server 從該磁碟區載入這些憑證,並且這些憑證用於 HTTPS 交握。
- 在您的命名空間中建立 Kubernetes 服務帳戶。
- 為您想要在資源上允許的操作建立 Kubernetes 叢集角色。
- 從您的命名空間中的服務帳戶到您建立的叢集角色,建立 Kubernetes 叢集角色繫結。
- 從您的命名空間中的服務帳戶到
system:auth-delegator
叢集角色,建立 Kubernetes 叢集角色繫結,以將身份驗證決策委派給 Kubernetes 核心 API 伺服器。 - 從您的命名空間中的服務帳戶到
extension-apiserver-authentication-reader
角色,建立 Kubernetes 角色繫結。這允許您的擴充 api-server 存取extension-apiserver-authentication
configmap。 - 建立 Kubernetes apiservice。上述 CA 憑證應經過 base64 編碼、去除換行符號,並用作 apiservice 中的 spec.caBundle。這不應命名空間化。如果使用 kube-aggregator API,則僅傳入 PEM 編碼的 CA 捆綁包,因為 base 64 編碼已為您完成。
- 使用 kubectl 取得您的資源。執行時,kubectl 應傳回「找不到資源」。此訊息表示一切正常,但您目前沒有建立該資源類型的物件。
下一步
- 逐步完成設定 API 聚合層並啟用 apiserver 旗標的步驟。
- 如需高階概觀,請參閱使用聚合層擴充 Kubernetes API。
- 瞭解如何使用自訂資源定義擴充 Kubernetes API。
上次修改時間:2022 年 7 月 21 日下午 1:41 PST:修正語法,在適當的地方使用動詞形式 'set up' 而不是名詞 'setup' (d6a1ba2a6d)