使用Kubernetes - Gogle Container Enginer设置,在同一个Google云群集中,我有前端服务 - > nginx + Angular JS和REST API服务 - > NodeJS API。我不想公开NodeJS API KubeCTL服务公共域。所以,' ServiceType'仅设置为“ClusterIP' 。我们如何在AngularJS程序中推断出NODE_API_SERIVCE_HOST,NODE_API_SERIVCE_PORT - {SVCNAME} _SERVICE_HOST和{SVCNAME} _SERVICE_PORT。
(function() {
'use strict';
angular
.module('mymodule', [])
.config(["RestangularProvider", function(RestangularProvider) {
var apiDomainHost = process.env.NODE_API_SERVICE_HOST;
var apiDomainPort = process.env.NODE_API_SERVICE_PORT;
RestangularProvider.setBaseUrl('https://'+apiDomainHost+':'+apiDomainPort+'/node/api/v1'); }]);
})();
然后这将不起作用(ReferenceError:process未定义),因为这些angularjs代码在客户端执行。
我的docker文件很容易继承nginx停止/启动控件。
FROM nginx
COPY public/angular-folder /usr/share/nginx/html/projectSubDomainName
[{3}}中的第43页,共62页,解释说我们可以调用命令sh
"containers": {
{
"name":"container-name",
"command": {
"sh" , "sudo nginx Command-line parameters
'https://$NODE_API_SERVICE_HOST:$NODE_API_SERVICE_PORT/node/api/v1'"
}
}
}
这是否可以重新启动POD?如果是这样,我如何在AngularJS中获得此变量?
答案 0 :(得分:1)
然后这将不起作用(ReferenceError:process未定义),因为这些angularjs代码在客户端执行。
如果客户端位于群集之外,那么它能够访问NodeJS API的唯一方法就是将其暴露给客户端的网络,这可能是公共互联网。如果您担心安全问题,可以采用多种不同方式对服务进行身份验证,例如使用nginx auth_basic。
"containers": { { "name":"container-name", "command": { "sh" , "sudo nginx Command-line parameters 'https://$NODE_API_SERVICE_HOST:$NODE_API_SERVICE_PORT/node/api/v1'" } } }
这是否可以重新启动POD?如果是这样,我如何在AngularJS中获得此变量?
是的,服务IP&端口是稳定的,即使在pod重启时也是如此。至于如何将NODE_API_SERVICE_ {HOST,PORT}变量传递给客户端,您需要将它们从运行服务器端的进程(在您的集群内)注入到响应中(例如直接插入到JS代码中,或作为JSON响应) )。