Я пытаюсь развернуть приложения на GKE с помощью REST API. Однако документация GKE перепутана и неясна относительно того, как включить доступ Kubernetes REST API.
Есть ли у кого-нибудь здесь четкое представление о том, как создать кластер развертывания Kubernetes в Google Cloud? Если да, я хотел бы узнать подробные инструкции по включению того же. В настоящее время это то, что я получаю.
https://xx.xx.xx.xx/apis/apps/v1/namespaces/default/deployments/nginx-1
Вызов GET дает ниже JSON вывод, несмотря на действительный токен авторизации
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "deployments.apps \"nginx-1\" is forbidden: User \"system:serviceaccount:default:default\" cannot get resource \"deployments\" in API group \"apps\" in the namespace \"default\"",
"reason": "Forbidden",
"details": {
"name": "nginx-1",
"group": "apps",
"kind": "deployments"
},
"code": 403
}
Однако API администрирования, похоже, включены:
Следуя инструкциям в по этой ссылке и выполняя следующие команды:
# Check all possible clusters, as your .KUBECONFIG may have multiple contexts:
kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
# Select name of cluster you want to interact with from above output:
export CLUSTER_NAME="some_server_name"
# Point to the API server referring the cluster name
APISERVER=$(kubectl config view -o jsonpath="{.clusters[?(@.name==\"$CLUSTER_NAME\")].cluster.server}")
# Gets the token value
TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='default')].data.token}"|base64 --decode)
# Explore the API with TOKEN
curl -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
дает желаемый результат.