-5

我在下面有一个自定义 docker-compose.yml 文件。我为我的 postgres 集群创建了。


services:
  pg-master:
    build: '.'
    restart: 'always'
    environment:
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'postgres'
      PGDATA: '/var/lib/postgresql/data/pgdata'
    volumes:
     - ./postgres-data:/var/lib/postgresql/data
    ports:
     - '5432:5432'

  pg-slave:
    build: '.'
    restart: 'always'
    environment:
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'postgres'
      PGDATA: '/var/lib/postgresql/data/pgdata'
      REPLICATE_FROM: 'pg-master'
    volumes:
     - ./postgres-data:/var/lib/postgresql/data
    ports:
     - '5432:5432'
    links:
     - 'pg-master'

每当我这样做时,它都可以正常工作docker-compose up。我可以看到并测试我的数据库是否已复制。

但是,我不知道如何编写等效的部署 yml。我的目标是确保输出相同。

我在树莓派 4 和 3 中使用 microk8s。

4

1 回答 1

0

你可以考虑使用Kompose. 它在Kubernetes 文档中有很好的描述。您可以在那里找到如何安装kompose或如何使用的信息:

Kompose 支持将 V1、V2 和 V3 Docker Compose 文件转换为 Kubernetes 和 OpenShift 对象。

Kompose 支持通过 kompose up 将“组合”应用程序部署到 Kubernetes 或 OpenShift 的简单方法。

将“组合”应用程序部署到 Kubernetes 后,$ kompose down 将帮助您通过删除应用程序的部署和服务来删除应用程序。如果您需要删除其他资源,请使用“kubectl”命令。

如果您只想转换为 Kubernetes yaml,您可以使用kompose convert

但是,您需要对其进行一些更改以适应解析部分。

我已经在您的 yaml 上进行了尝试,并通过一些小的编辑kompose创建了KubernetesYAML。

version: "2"

services:

  pg-master:
    image: postgres
    build: '.'
    restart: 'always'
    environment:
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'postgres'
      PGDATA: '/var/lib/postgresql/data/pgdata'
    volumes:
     - ./postgres-data:/var/lib/postgresql/data
    ports:
     - "5432:5432"

  pg-slave:
    build: '.'
    restart: 'always'
    environment:
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'postgres'
      PGDATA: '/var/lib/postgresql/data/pgdata'
      REPLICATE_FROM: 'pg-master'
    volumes:
     - ./postgres-data:/var/lib/postgresql/data
    ports:
     - "5432:5432"
    links:
     - 'pg-master'

输出:

$ kompose --file docker-compose.yml convert
WARN Volume mount on the host "./postgres-data" isn't supported - ignoring path on the host
WARN Volume mount on the host "./postgres-data" isn't supported - ignoring path on the host
INFO Kubernetes file "pg-master-service.yaml" created
INFO Kubernetes file "pg-slave-service.yaml" created
INFO Kubernetes file "pg-master-deployment.yaml" created
于 2020-07-27T17:06:02.180 回答