使用 Kubernetes - Gogle Container Enginer setup ,在同一个谷歌云集群中,我有前端服务 -> nginx + Angular JS 和 REST API 服务 -> NodeJS API。我不想公开 NodeJS API KubeCTL 服务公共(public)域。因此, 'ServiceType' 仅设置为 'ClusterIP' 。我们如何推断这个 NODE_API_SERIVCE_HOST , NODE_API_SERIVCE_PORT -- {SVCNAME}_SERVICE_HOST 和 {SVCNAME}_SERVICE_PORT -- 在 AngularJS 程序中。
(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 is not defined),因为这些 angularjs 代码是在客户端执行的。
我的 docker 文件很容易继承 nginx 停止/启动控件。
FROM nginx
COPY public/angular-folder /usr/share/nginx/html/projectSubDomainName
http://www.slideshare.net/carlossg/scaling-docker-with-kubernetes 中的第 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 中获取这个变量?
请您参考如下方法:
Then this will not work ( ReferenceError: process is not defined ) , as these angularjs code is executed at the client side.
如果客户端在集群之外,它能够访问 NodeJS API 的唯一方法是将其暴露给客户端的网络,这可能是公共(public)互联网。如果您担心它的安全隐患,有许多不同的方法来验证服务,例如使用 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'" } } }Is this sustainable for the PODs restart? IF so, how do I get this variable in AngularJS?
是的,服务 IP 和端口是稳定的,即使在 pod 重新启动时也是如此。至于如何将 NODE_API_SERVICE_{HOST,PORT} 变量传递给客户端,您需要将它们从运行服务器端的进程(在您的集群内)注入(inject)到响应中(例如,直接注入(inject)到 JS 代码中,或者作为 JSON 响应) )。




