[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

转载于:https://www.cnblogs.com/Answer1215/p/10703031.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值