Я пытаюсь создать кластер Kubernetes через клиент NodeJS в движке Google App.Кластер Kubernetes находится в отдельном проекте, в котором размещается проект движка приложения, скажем, "my-node-project" и "my-k8-project".
"my-node-project" имеет соответствующийучетная запись службы (доступ на уровне владельца) для проекта kubernetes.
Я выполняю вызов создания кластера следующим образом:
var client = new container.v1.ClusterManagerClient({
projectId: projectId,
key: serviceAccount
});
var zone = 'us-central1-b';
var password = "<some password>";
var clusterConfig = {
"name": clusterName,
"description": "api created cluster",
"initialNodeCount": 3,
"nodeConfig": {
"oauthScopes": [
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/devstorage.read_only"
]
}
,
"masterAuth": {
"username": "admin",
"password": password
},
"zone": zone
};
var request = {
projectId: projectId,
zone: zone,
cluster: clusterConfig,
};
return client.createCluster(request)
.then(responses => {
var response = responses[0];
console.log("response: ", response);
return response;
})
.catch(err => {
console.error(err);
return err;
});
В приведенном выше коде переменная serviceAccount имеет видобъект json, содержащий учетную запись службы, со всеми закрытыми ключами, полями идентификатора проекта и т. д.
Странно то, что когда я запускаю код локально, то есть вызываю конечную точку, которая выполняет вышеуказанную функцию, запрос выполняетсячерез хорошо, то есть кластеры созданы, и я даже могу добавить рабочие нагрузки через API.
Однако после развертывания проекта nodejs в стандарте ядра приложения и вызова той же конечной точки, работающей на ядре приложения, я получаю сообщение об ошибке:
Error: 7 PERMISSION_DENIED: Required "container.clusters.create" permission(s) for "projects/my-k8-project". See https://cloud.google.com/kubernetes-engine/docs/troubleshooting#gke_service_account_deleted for more info.
at Object.exports.createStatusError (/srv/node_modules/grpc/src/common.js:91:15)
at Object.onReceiveStatus (/srv/node_modules/grpc/src/client_interceptors.js:1204:28)
at InterceptingListener._callNext (/srv/node_modules/grpc/src/client_interceptors.js:568:42)
at InterceptingListener.onReceiveStatus (/srv/node_modules/grpc/src/client_interceptors.js:618:8)
at callback (/srv/node_modules/grpc/src/client_interceptors.js:845:24)
code: 7,
metadata: Metadata { _internal_repr: {} },
details:
'Required "container.clusters.create" permission(s) for "projects/my-k8-project". See https://cloud.google.com/kubernetes-engine/docs/troubleshooting#gke_service_account_deleted for more info.' }
Поскольку яПолучив ссылку для устранения неполадок, я попытался создать новую учетную запись службы и использовать ее.Кроме того, я попытался отключить и включить API-интерфейсы kubernetes и compute.Я также попытался поместить служебную учетную запись в корневой каталог проекта и таким образом обратиться к служебной учетной записи.
К сожалению, все, что я пробовал, приводило к точно такой же ошибке.Но все еще работал при запуске с локального хоста.
Есть ли где-то белый список, который я пропускаю?Возможно, localhost включен в белый список по умолчанию, а проект движка приложения «my-node-project» отсутствует в списке?
Буду очень признателен за любые советы, подсказки или указание в правильном направлении.