gpt4 book ai didi

kubernetes - 在Kubernetes中使用Openstreetmap

转载 作者:行者123 更新时间:2023-12-02 11:39:25 25 4
gpt4 key购买 nike

我有一个在Kubernetes内部运行的应用程序,需要使用Leaflet显示 map ,该 map 数据来自Openstreetmap。

我用来设置 map 的代码如下所示:

map = L.map('mapid', {
center: [lat, long],
zoom: 19
});
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

现在困扰我的是url {s}.tile.openstreetmap.org。由于openstreetmap数据位于k8s集群之外,因此我需要在Kubernetes中创建服务。

我试图定义这些服务:
apiVersion: v1
kind: Service
metadata:
name: a.tile.openstreetmap.org
spec:
type: ExternalName
externalName: a.tile.openstreetmap.org
---
apiVersion: v1
kind: Service
metadata:
name: b.tile.openstreetmap.org
spec:
type: ExternalName
externalName: b.tile.openstreetmap.org
---
apiVersion: v1
kind: Service
metadata:
name: c.tile.openstreetmap.org
spec:
type: ExternalName
externalName: c.tile.openstreetmap.org

但是,在部署服务时导致以下错误消息:
Error from server (Invalid): error when creating "openstreetmap-service.yaml": Service "a.tile.openstreetmap.org" is invalid: metadata.name: Invalid value: "a.tile.openstreetmap.org": a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name',  or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')
Error from server (Invalid): error when creating "openstreetmap-service.yaml": Service "b.tile.openstreetmap.org" is invalid: metadata.name: Invalid value: "b.tile.openstreetmap.org": a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')
Error from server (Invalid): error when creating "openstreetmap-service.yaml": Service "c.tile.openstreetmap.org" is invalid: metadata.name: Invalid value: "c.tile.openstreetmap.org": a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')

我知道我不允许在.metadata.name中使用点,但是有其他方法可以实现吗?据对传单来源的描述所见,TileLayer中的URL需要类似于 http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png

最佳答案

用它的名字调用外部服务应该没问题。如果该服务需要作为Kubernetes资源提供,例如可以代理到外部服务的入口路由,则可以使用ExternalName

如果仍然要使用ExternalName服务而不是实际的FQDN,则只需使用有效的名称(如a-tile-openstreetmap-org),然后用该名称替换客户端脚本中的域名。您可能必须设置正确的HTTP主机 header ,以避免目标服务器出现问题。

我仍然建议使用实名,因为它很简单明了,并且给别名起别名没有任何好处。

关于kubernetes - 在Kubernetes中使用Openstreetmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57430771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com