[英]Getting “Permission denied” container.clusters.create when deployed but not on localhost
我正在嘗試通過Google App引擎上的NodeJS客戶端創建Kubernetes集群。 Kubernetes集群位於托管App Engine項目的單獨項目上,例如“ 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對象,具有所有私鑰,項目ID字段等。
奇怪的是,當我在本地運行代碼(即調用運行上述功能的端點)時,請求通過得很好,即創建了集群,甚至可以通過api添加工作負載。
但是,在將nodejs項目部署到App Engine標准並調用在App Engine上運行的相同終結點之后,出現錯誤:
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.' }
由於獲得了該疑難解答鏈接,因此我嘗試創建一個新的服務帳戶並使用它。 另外,我嘗試禁用和啟用kubernetes和compute API。 我還嘗試將服務帳戶放置在項目的根目錄中,並以這種方式引用服務帳戶。
不幸的是,我嘗試的所有操作均導致完全相同的錯誤。 但是從本地主機運行時仍然可以使用。
我想念的地方有白名單嗎? 也許localhost默認情況下被列入白名單,而“ my-node-project”應用引擎項目不在列表中?
任何提示,提示或指向正確的方向將不勝感激。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.