zoukankan      html  css  js  c++  java
  • [Docker] Converting from Docker Compose to Kubernetes

    kompose is a tool to help users who are familiar with docker-compose move to Kubernetes. kompose takes a Docker Compose file and translates it into Kubernetes resources.

    kompose is a convenience tool to go from local Docker development to managing your application with Kubernetes. Transformation of the Docker Compose format to Kubernetes resources manifest may not be exact, but it helps tremendously when first deploying an application on Kubernetes.

    Install:

    curl -L https://github.com/kubernetes/kompose/releases/download/v1.18.0/kompose-darwin-amd64 -o kompose
    
    chmod +x kompose
    sudo mv ./kompose /usr/local/bin/kompose

    We have a Docker compose file which setup Node, Nginx, Redis, MongoDB.

        # 1. Update config values (localhost --> mongo and localhost --> redis) in config/config.development.json if necessary.
        # 2. Set APP_ENV environment variable by running the following command in your commnand window (see the notes below if on Windows).
    
        #    export APP_ENV=development or export APP_ENV=production
        #    export DOCKER_ACCT=codewithdan
    
        #    NOTE: If you're on Windows use one of the following commands to create the environment variables.
        #    Use 'codewithdan' for the account if you want to run in Kubernetes (see the readme). Otherwise, you can substitute your own
        #    Docker account for the value if you'd like.
    
        #    For the standard Windows DOS command shell use `set` instead of `export` for environment variables.
        #    For Windows Powershell use $env:APP_ENV = "value".
    
        # 3. Remove "node" service volume (below) if doing a production build
        # 4. Run docker-compose build
        # 5. Run docker-compose up
        # 6. Live long and prosper
    
    version: "3.1"
    
    services:
        nginx:
          container_name: nginx
          image: ${DOCKER_ACCT}/nginx
          build:
            context: .
            dockerfile: .docker/nginx.${APP_ENV}.dockerfile
          # links are deprecated (networks are used instead for communication and
          # depends_on for upstream node name in nginx config)
          # links:
          #   - node1:node1
          #   - node2:node2
          #   - node3:node3
          depends_on:
            - node
          ports:
            - "80:80"
            - "443:443"
          networks:
            - codewithdan-network
    
        node:
          container_name: node-codewithdan
          image: ${DOCKER_ACCT}/node-codewithdan
          build:
            context: .
            dockerfile: .docker/node-codewithdan.${APP_ENV}.dockerfile
          ports:
          - "8080"
          volumes:
            - .:/var/www/codewithdan
          working_dir: /var/www/codewithdan
          env_file:
            - ./.docker/env/app.${APP_ENV}.env
          depends_on:
            - mongo
            - redis
          networks:
            - codewithdan-network
    
        # Removing these for those wanting to run Kubernetes as well (since replica sets would scale pods with containers)
        # node2:
        #   container_name: node-codewithdan-2
        #   image: ${DOCKER_ACCT}/node-codewithdan
        #   build:
        #     context: .
        #     dockerfile: .docker/node-codewithdan.${APP_ENV}.dockerfile
        #   ports:
        #   - "8080"
        #   volumes:
        #     - .:/var/www/codewithdan
        #   working_dir: /var/www/codewithdan
        #   env_file:
        #     - ./.docker/env/app.${APP_ENV}.env
        #   depends_on:
        #     - mongo
        #     - redis
        #   networks:
        #     - codewithdan-network
    
        # node3:
        #   container_name: node-codewithdan-3
        #   image: ${DOCKER_ACCT}/node-codewithdan
        #   build:
        #     context: .
        #     dockerfile: .docker/node-codewithdan.${APP_ENV}.dockerfile
        #   ports:
        #   - "8080"
        #   volumes:
        #     - .:/var/www/codewithdan
        #   working_dir: /var/www/codewithdan
        #   env_file:
        #     - ./.docker/env/app.${APP_ENV}.env
        #   depends_on:
        #     - mongo
        #     - redis
        #   networks:
        #     - codewithdan-network
    
        mongo:
          container_name: mongo
          image: ${DOCKER_ACCT}/mongo
          build:
            context: .
            dockerfile: .docker/mongo.dockerfile
          ports:
          - "27017:27017"
          env_file:
            - ./.docker/env/mongo.${APP_ENV}.env
          networks:
            - codewithdan-network
    
        redis:
          container_name: redis
          image: ${DOCKER_ACCT}/redis
          build:
            context: .
            dockerfile: .docker/redis.${APP_ENV}.dockerfile
          ports:
            - "6379"
          networks:
            - codewithdan-network
    
        # cadvisor:
        #   container_name: cadvisor
        #   image: google/cadvisor
        #   volumes:
        #     - /:/rootfs:ro
        #     - /var/run:/var/run:rw
        #     - /sys:/sys:ro
        #     - /var/lib/docker/:/var/lib/docker:ro
        #   ports:
        #     - "8080:8080"
        #   networks:
        #     - codewithdan-network
    
    networks:
        codewithdan-network:
          driver: bridge

    Run:

    export APP_ENV=development
    // or export APP_ENV=production
    
    export DOCKER_ACCT=codewithdan

    Then, we can convert Docker compose file to Kubernetes files:

    kompose conver // create multi yml files for each services
    // or output only one file
    kompose conver --out test.yml

  • 相关阅读:
    思考未来--马云说:30年后的世界不属于互联网公司
    公司管理系列--Facebook是如何营造企业文化的[转]
    公司管理系列--摒弃“学生思维”,教你如何科学地步入互联网职场?[转]
    问题集录--如何本地调试微信接口(未测试)
    公司管理系列--80% of Your Culture is Your Founder(FaceBook)
    常用工具说明--Mockplus,简洁的原形图设计工具
    你应该知道的计算机网络知识
    【转】TCP那些事(上,下)
    【转】由浅入深探究mysql索引结构原理、性能分析与优化
    【转】程序员技术练级攻略
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10703031.html
Copyright © 2011-2022 走看看