简体   繁体   中英

Create kubernetes yml file from docker-compose.yml file

I have this docker-compose.yml file which I am using to run up three microservices and one api gateway

version: '3'
services: 
    serviceone:
        container_name: serviceone
        restart: always
        build: serviceone/
        ports: 
            - '3000:3000'
    servicetwo:
        container_name: servicetwo
        restart: always
        build: servicetwo/
        ports: 
            - '3001:3001'   
    servicethree:
        container_name: servicethree
        restart: always
        build: servicethree/
        ports: 
             - '3002:3003'    
    apigateway:
        container_name: timezoneapigateway
        restart: always
        build: timezone/
        ports: 
            - '8080:8080'
        links: 
            - serviceone
            - servicetwo
            - servicethree   

Now I want to deploy these dockerimages in one pod in kubernetes so that the api gateway can connect with all the three microservices ,current version of api gateway is working but I am really not getting even a slightest hint of doing this in kubernetes. I am really new to kubernetes can anyone tell me how to design a kubernetes yml file to achieve this

You don't have to run all your service in the same pod. The standard in Kubernetes is to have separate deployments and services for all apps. Here is a deployment manifest for serviceone but you can easily modify it for servicetwo , servicethree and apigateway

apiVersion: apps/v1
kind: Deployment
metadata:
  name: serviceone
  labels:
    app: serviceone
spec:
  replicas: 1
  selector:
    matchLabels:
      app: serviceone
  template:
    metadata:
      labels:
        app: serviceone
    spec:
      containers:
      - name: serviceone
        image: serviceone:latest
        ports:
        - containerPort: 3001

And the same goes for the service manifest

apiVersion: v1
kind: Service
metadata:
  name: serviceone
spec:
  selector:
    app: serviceone
  ports:
  - protocol: TCP
    port: 3001
    targetPort: 3001

Your services will be accessible within the cluster like this:

serviceone:3001
servicetwo:3002
servicethree:3003
timezoneapigateway:8080

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM