![](/img/trans.png)
[英]How to add extra nodes to the certificate-authority-data from a self signed k8s cluster?
[英]How can I allow API access to a GKE K8S cluster without modifying the HTTP client
我在 GKE 上設置了一個 k8s 集群。
我想通過 k8s REST API 控制它(因此,查看 pod 上的部署等等,但不通過 SSL 訪問 k8s 集群上實際運行的內容)。 我已經獲得了適當的不記名令牌( curl --insecure [request]
有效)並且可以發出 API 請求。 但是,SSL 證書對我的客戶端無效(如果重要的話,它是 java)。 我目前無法輕松修改客戶端以接受新的根證書。
我一直在挖掘並檢查了以下三個選項:
有這些可行的選擇嗎? 或者是我修改客戶端的最佳選擇?
有一篇名為“使用 Kubernetes API 訪問集群” ( https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/ ) 的文章解決了您關於如何使用 REST API 查詢的問題Java 客戶端( https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#java-client )
如果您在 POD 內使用 Java 應用程序,則可以將集群的 CA 導入 Java 信任存儲 ( https://docs.oracle.com/cd/E19509-01/820-3503/6nf1il6er/index.html )。 集群的 CA 證書位於/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
目錄中集群內運行的所有 pod 內。 更多信息( https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#without-using-a-proxy )
關於您的問題:
1.-將您的集群的 CA 證書導入您的信任存儲。
2.-您不能在 GKE 中設置自己的 CA,但您可以根據需要輪換 CA 證書( https://cloud.google.com/kubernetes-engine/docs/how-to/credential-rotation )
3.-您不能在 GKE ( https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-trust ) 中停用 TLS 通信
您最好的選擇是使用官方 Java 客戶端或將 CA 添加到您當前的開發中。
根據其他一些反饋(暫時),我最終在我的 GKE 集群和我的客戶端之間放置了一個代理。 然后我可以將 GKE 集群 k8s ca cert 添加到代理的密鑰庫中(而不必修改客戶端)。 出於我的目的,我不需要讓代理使用 SSL,但對於生產我會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.