Вы также можете использовать defaultClient
для этого.
Метод defaultClient()
создаст клиента в кластере, если приложение работает внутри кластера и имеет правильную учетную запись службы.
Правила для defaultClient
можно увидеть в комментарияхпо методу здесь :
/**
* Easy client creation, follows this plan
*
* <ul>
* <li>If $KUBECONFIG is defined, use that config file.
* <li>If $HOME/.kube/config can be found, use that.
* <li>If the in-cluster service account can be found, assume in cluster config.
* <li>Default to localhost:8080 as a last resort.
* </ul>
*
* @return The best APIClient given the previously described rules
*/
Так что, если приложение, использующее Java-клиент k8s, запускается на кластере само по себе, оно должно иметь возможность доступа к содержимому кластера до тех пор, покау него есть правильное разрешение.Вам необходимо разрешить клиентскому приложению иметь доступ к CRD, как в этом примере ClusterRole
для CRD оператора Prometheus :
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: prometheus-crd-view
labels:
rbac.authorization.k8s.io/aggregate-to-admin: "true"
rbac.authorization.k8s.io/aggregate-to-edit: "true"
rbac.authorization.k8s.io/aggregate-to-view: "true"
rules:
- apiGroups: ["monitoring.coreos.com"]
resources: ["alertmanagers", "prometheuses", "prometheusrules", "servicemonitors"]
verbs: ["get", "list", "watch"]