Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该如何为Kubernetes重写docker-compose.yaml?_Docker_Kubernetes_Continuous Deployment - Fatal编程技术网

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

我应该如何为Kubernetes重写docker-compose.yaml?,docker,kubernetes,continuous-deployment,Docker,Kubernetes,Continuous Deployment,我对K8s非常陌生,所以我从未使用过它。但我已经熟悉了节点/吊舱的概念。我知道minikube是用于调试/etc的本地k8s引擎,我应该通过kubectl工具与任何k8s引擎交互。现在我的问题是: 在本地minikube实例和生产AWS/etc实例上启动相同的配置是否可以保证结果相同 如何为我的项目设置连续部署?现在我已经配置了CI,它使用:latest标记将测试代码的图像推送到docker hub。但我希望它们能够在不中断正常运行时间的情况下以滚动更新模式自动部署 如果能通过我应该执行的步骤获

我对K8s非常陌生,所以我从未使用过它。但我已经熟悉了节点/吊舱的概念。我知道minikube是用于调试/etc的本地k8s引擎,我应该通过kubectl工具与任何k8s引擎交互。现在我的问题是:

  • 在本地minikube实例和生产AWS/etc实例上启动相同的配置是否可以保证结果相同

  • 如何为我的项目设置连续部署?现在我已经配置了CI,它使用
    :latest
    标记将测试代码的图像推送到docker hub。但我希望它们能够在不中断正常运行时间的情况下以滚动更新模式自动部署

  • 如果能通过我应该执行的步骤获得正确的配置,使其在任何集群上都能正常工作,那将是一件非常棒的事情?我不想保存docker compose的符号并使用kompose。我想在k8s环境中正确地进行

  • 我当前的docker-compose.yml是(dockerhub现在提供django和react服务):


    简短的回答是肯定的,您可以用K8s复制docker compose的功能

  • 这取决于您的基础设施。例如,如果您的AWS部署中有一个外部的,那么它在本地部署中就不同了

  • 您可以这样做(这通常适用于无状态服务)。您还可以利用一种方法

  • docker compose表示法不同于K8s,因此,您必须将其转换为Kubernetes对象:POD、部署、机密、配置映射、卷等,并且在大多数情况下,基本对象将在任何集群上工作,但总会有一些特定的对象与集群的物理特性相关(即存储卷、负载平衡器等)。这些功能非常全面,非常有用


  • 我真的不知道你正在使用的很多技术,比如python,但我可以很容易地将docker compose文件转换为适当的k8s对象。此外,正如你提到的CI/CD一样,我建议看看kustomize(),它可以帮助你使用参数。是的,GitOps应该是部署infra的最佳方式。
    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