简体   繁体   English

从 docker-compose.yml 文件创建 kubernetes yml 文件

[英]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我有这个 docker-compose.yml 文件,我用它来运行三个微服务和一个 api 网关

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.现在我想将这些 dockerimages 部署在 kubernetes 的一个 pod 中,以便 api 网关可以连接所有三个微服务,当前版本的 api 网关正在工作,但我真的没有得到任何暗示在 kubernetes 中这样做。 I am really new to kubernetes can anyone tell me how to design a kubernetes yml file to achieve this我真的是 kubernetes 的新手,谁能告诉我如何设计 kubernetes yml 文件来实现这一目标

You don't have to run all your service in the same pod.您不必在同一个 Pod 中运行所有服务。 The standard in Kubernetes is to have separate deployments and services for all apps. Kubernetes 的标准是为所有应用程序提供单独的部署和服务。 Here is a deployment manifest for serviceone but you can easily modify it for servicetwo , servicethree and apigateway这里是一个serviceone部署清单,但你可以很容易地修改它servicetwo,servicethreeapigateway

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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