【问题标题】:docker-compose translate to kubernetesdocker-compose 翻译成 kubernetes
【发布时间】:2020-04-27 15:43:18
【问题描述】:

我有一个 docker-compose.yaml

version: '3.4'

services:

  mongodb:
    image: mongo:latest

  assets:
    image: gnaudio/jabra-xpress-assets:v4.0.7020

  frontend:
    image: gnaudio/jabra-xpress-frontend:v4.0.7314
    environment:
    - "ENDPOINT=http://¤HOST-NAME¤:85"
    ports:
    - "80:80"

  backend:
    image: gnaudio/jabra-xpress-api:v4.0.7313
    environment:
    - "ConnectionStrings:XpressDatabaseSqlServer=¤CONNSTRING¤"
    - "ConnectionStrings:MongoDb=mongodb://mongodb/raw"
    - "DefaultAnalyticsEndpoint=http://¤HOST-NAME¤:88/api/v1/Analytics"
    - "JDODownload=http://assets/"
    - "NetworkEndpoint=http://¤HOST-NAME¤:85/api/Xpress/Network/"
    - "SDK:fwURL_base=http://¤HOST-NAME¤:82"
    - "SDK:fsURL_base=http://¤HOST-NAME¤:82"
    ports:
    - "85:80"
    depends_on:
    - mongodb
    - assets
    - sdkbackend

  sdkbackend:
    image: gnaudio/jabra-xpress-sdkbackend:latest
    environment:
    - "Storage:SDKCopyUrl=http://¤HOST-NAME¤:82"
    ports:
    - "82:80"

  analytics:
    image: gnaudio/jabra-xpress-analytics:v4.0.7312
    environment:
    - "ConnectionStrings:MongodbServer=mongodb://mongodb/raw"
    ports:
    - "88:80"
    depends_on:
    - mongodb

  analytics-cron:
    image: gnaudio/jabra-xpress-analytics-cron:v4.0.7313
    environment:
    - "MONGODBCONNECTIONSTRING=mongodb://mongodb/raw"
    depends_on:
    - mongodb

我知道我可以用 kompose 将它翻译成 kubernetes。但是“DefaultAnalyticsEndpoint=http://¤HOST-NAME¤:88/api/v1/Analytics”部分是什么?

根据 Jabra 的制作人的说法,您应该这样做:

将 ¤CONNSTRING¤ 替换为 SQL 连接字符串 将 ¤HOST-NAME¤ 替换为服务器主机名。

我必须在里面放什么主机名?我的意思是我有 6 个不同的服务和 Pod。他们如何相互交流?

【问题讨论】:

    标签: docker kubernetes docker-compose openshift


    【解决方案1】:

    与 Docker(-Compose) 一样,Kubernetes 包含一个 DNS 服务,允许您引用例如服务(大写表示 Kubernetes 类型)。

    IIRC,Kompose 为 Docker-Compose 服务生成服务和部署。您通常会通过服务类型来引用 Kubernetes 服务,并且您应该拥有服务,例如frontendbackend

    因此,在回答您的问题时,根据您希望引用的服务,您将${HOST_NAME} 替换为服务名称之一。 DefaultAnalyticsEndpoint 似乎引用了 Docker-Compose 服务 analytics。这也应该映射到名为 analytics 的 Kubernetes 服务。 IIUC,在这两种情况下(Docker-Compose 和 Kubernetes),DefaultAnalyticsEndpoint 中的 HOST-NAME 将是 analytics

    如果您从同一命名空间中引用服务,则只需使用服务名称,例如backend。如果您从另一个命名空间引用服务,则需要包含命名空间说明符,例如backend.${NAMESPACE}.cluster.local

    见:

    【讨论】:

    • THX。我创建了一个引用前端服务的路由。问题是,当前端服务尝试访问后端服务时,我在浏览器访问 XMLHttpRequest at 'backend:85/api/UserManagement/NewCompany' from origin 'XXXX.com' has been blocked by CORS policy: Response to preflight request doesn't '不通过访问控制检查:请求的资源上不存在'Access-Control-Allow-Origin'标头。 polyfills.1430e9e37c917675a879.js:1 POST backend:85/api/UserManagement/NewCompany net::ERR_FAILED 知道那是什么吗?
    • 这是一个不同的问题。错误消息解释了该问题。看看this CORS 的解释。奇怪的是,Docker-Compose 不会出现这个问题,因为该请求(跨服务)也应该来自不同的来源。
    猜你喜欢
    • 2021-11-22
    • 2018-04-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多