ham*_*awi 4 cookies dns load-balancing google-kubernetes-engine
编辑:我正在开发一个项目,每天以 100% 自动的方式在 GKE 上部署多个项目。我们的项目是用nodejs开发的,下面是伪代码:
projects = get_all_projects_today() // returns 15 projects for today (for example)
for project in projects
deploy_to_GKE(project) //generate a deployment manifest for project and post it to GKE (using api call)
public_ip = create_service_on_GKE(project, type=Loadbalancer) //generate a service manifest (type loadbalancer) for project, post it to GKE (using api call) and returns the public created ip address
get_domain_from_ip(public_ip) //how to do this !
Run Code Online (Sandbox Code Playgroud)
部署的项目必须可以通过域名访问,而不是像这样的 IP:
appx.mysite.com, or
mysite.com/appx
Run Code Online (Sandbox Code Playgroud)
结束编辑
这是我使用的服务清单的示例:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "backend-__ID__"
},
"spec": {
"selector": {
"app": "backend-__ID__"
},
"type": "LoadBalancer",
"ports": [
{
"name": "app1",
"protocol": "TCP",
"port": 8080,
"targetPort": "8080"
},
{
"name": "app2",
"protocol": "TCP",
"port": "3010",
"targetPort": "3010"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
从外部访问该项目的唯一方法是使用ip地址(Endpoint),但这会阻止cookie的使用(我们不能在ip上设置cookie,我们应该使用域名)。
那么有没有一种方法可以自动从 GKE 命名域中获取端点以从外部访问项目?
我尝试使用反向 DNS 查找来获取外部 IP 的域名,但这不起作用:(
谢谢
ham*_*awi 10
我找到了!
使用反向 DNS 查找,我发现 google 提供了这样的域:[LOADBALANCER_IP].bc.googleusercontent.com。
反向 dns 查找站点示例:https://mxtoolbox.com/ReverseLookup.aspx
GKE 不会为您创建域名(甚至不会像 appengine 或端点那样提供临时域名)。但是,您可以将负载均衡器配置为使用您保留的静态 IP 地址,然后使用该 IP 的主机名运行 DNS。
对于 LoadBalancer 服务,这是通过区域 IP 地址完成的,因此您需要首先保留 IP 地址,例如:
gcloud compute addresses create my-service-ip --region us-central1
Run Code Online (Sandbox Code Playgroud)
(如果您愿意,还有一个 REST API,请参阅上面的链接)。请注意,对于负载均衡器或 VM 实例未使用的保留 IP 地址,Google 会收取少量费用。
接下来,配置您的 DNS(可能使用Cloud DNS,但任何 DNS 提供商都可以)以将您想要的名称指向该 IP 地址。
最后,当您创建 loadbalancer时,您需要将静态 IP 地址作为“loadBalancerIP”传递。我没有通过 JSON 完成此操作,但这里有一个使用 YAML 的示例:
apiVersion: v1
kind: Service
metadata:
name: backend-__ID__
spec:
selector:
app: backend-__ID__
ports:
- port: 80
targetPort: 8080
type: LoadBalancer
loadBalancerIP: "YOUR.IP.ADDRESS.HERE"
Run Code Online (Sandbox Code Playgroud)
您还可以阅读有关在 GKE 集群中使用域名的完整文档。
这也可以通过 Ingress 使用 HTTP(S) 负载均衡器来实现,但技术略有不同,在这种情况下,您需要向您的入口的元数据,其值为您保留的静态 IP 地址的名称。在这种情况下,静态 IP 地址必须是全局的,而不是区域性的。
| 归档时间: |
|
| 查看次数: |
6260 次 |
| 最近记录: |