Kubernetes的docker-compose.yaml应该如何重写?

问题描述 投票:1回答:1

我对K8s很陌生,所以我没有用过它。但是我已经熟悉了nodespods的概念。我知道minikube是debugetc的本地k8s引擎,我应该通过kubectl工具与任何k8s引擎交互。现在我的问题是。

  1. 在我的本地minikube实例和生产的AWSetc实例上启动相同的配置,是否能保证结果是相同的?

  2. 我如何为我的项目设置持续部署?现在我已经配置了CI,将测试过的代码镜像推送到docker hub上,并使用了 :latest 标签。但我希望它们能在滚动更新模式下自动部署,而不中断正常运行时间。

  3. 如果能得到正确的配置与我应该执行的步骤,使其在任何集群上工作,那就太好了?我不想保存docker-compose的符号并使用kompose。我想在k8s的上下文中正确地使其工作。

我现在的docker-compose.yml是(django和react服务现在可以从dockerhub获得)。

version: "3.5"
services:
  nginx:
    build:
      context: .
      dockerfile: Dockerfile.nginx
    restart: always
    command: bash -c "service nginx start && tail -f /dev/null"
    ports:
      - 80:80
      - 443:443
    volumes:
      - /mnt/wts_new_data_volume/static:/data/django/static
      - /mnt/wts_new_data_volume/media:/data/django/media
      - ./certs:/etc/letsencrypt/
      - ./misc/ssl/server.crt:/etc/ssl/certs/server.crt
      - ./misc/ssl/server.key:/etc/ssl/private/server.key
      - ./misc/conf/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./misc/conf/passports.htaccess:/etc/passports.htaccess:ro
    depends_on:
      - react
  redis:
    restart: always
    image: redis:latest
    privileged: true
    command: redis-server
  celery:
    build:
      context: backend
    command: bash -c "celery -A project worker -B -l info"
    env_file:
      - ./misc/.env
    depends_on:
      - redis
  django:
    build:
      context: backend
    command: bash -c "/code/manage.py collectstatic --no-input && echo donecollectstatic && /code/manage.py migrate && bash /code/run/daphne.sh"
    volumes:
      - /mnt/wts_new_data_volume/static:/data/django/static
      - /mnt/wts_new_data_volume/media:/data/django/media
    env_file:
      - ./misc/.env
    depends_on:
      - redis
  react:
    build:
      context: frontend
    depends_on:
      - django
docker kubernetes continuous-deployment
1个回答
3
投票

简短的回答是肯定的,你可以用K8s复制你所拥有的docker-compose。

  1. 这取决于你的基础设施。例如,如果你有一个外部的 LoadBalancer 在您的 AWS 部署中,它在您的本地中不会是一样的。

  2. 你可以做 滚动更新 这通常适用于无状态服务)。您也可以利用 GitOps 型的方法。

  3. docker-compose的符号与K8s不同,所以是的,你必须将其翻译成Kubernetes对象。Pods、Deployments、Secrets、ConfigMaps、Volumes等,大多数情况下,基本的对象将在任何集群上工作,但总会有一些特定的对象与你的集群的物理特性有关(即存储卷、负载均衡器等)。负载均衡器 Kubernetes文档 是非常全面的,而且是超级有用的。

© www.soinside.com 2019 - 2024. All rights reserved.