j0lama
j0lama

Reputation: 77

Migrate docker-compose to Kubernetes

I'm trying to deploy free5GC (cluster version) over K8s. The problem with this software is that there are some services that have to know other service IPs before starting. I solve this issue in docker-compose executing a script inside each docker container with other service IPs as parameters. This is my docker-compose.yaml:

version: '3'

networks:
    testing_net:
        ipam:
            driver: default
            config:
                - subnet: 172.28.0.0/16

services:
  mongo:
    container_name: mongo
    image: mongo
    networks: 
      testing_net:
        ipv4_address: ${mongo_ip}

  webui:
    container_name: webui
    image: j0lama/free5gc-webui
    depends_on:
      - mongo
    ports:
      - '80:3000'
    extra_hosts:
      - "mongo:${mongo_ip}"
    networks: 
      testing_net:
        ipv4_address: ${webui_ip}

  hss:
    container_name: hss
    command: bash -c "./hss_setup.sh ${mongo_ip} ${hss_ip} ${amf_ip}"
    image: j0lama/free5gc-hss
    depends_on:
      - mongo
    networks: 
      testing_net:
        ipv4_address: ${hss_ip}

  amf:
    container_name: amf
    command: bash -c "./amf_setup.sh ${mongo_ip} ${hss_ip} ${amf_ip} ${smf_ip}"
    image: j0lama/free5gc-amf
    depends_on:
      - mongo
      - hss
    ports:
      - '36412:36412'
    networks: 
      testing_net:
        ipv4_address: ${amf_ip}

  smf:
    container_name: smf
    command: bash -c "./smf_setup.sh ${smf_ip} ${upf_ip} ${pcrf_ip}"
    image: j0lama/free5gc-smf
    depends_on:
      - mongo
      - hss
      - amf
    networks: 
      testing_net:
        ipv4_address: ${smf_ip}

  pcrf:
    container_name: pcrf
    command: bash -c "./pcrf_setup.sh ${mongo_ip} ${smf_ip} ${pcrf_ip}"
    image: j0lama/free5gc-pcrf
    depends_on:
      - mongo
      - hss
      - amf
      - smf
    networks: 
      testing_net:
        ipv4_address: ${pcrf_ip}

  upf:
    container_name: upf
    command: bash -c "./upf_setup.sh ${upf_ip}"
    image: j0lama/free5gc-upf
    depends_on:
      - mongo
      - hss
      - amf
      - smf
      - pcrf
    networks: 
      testing_net:
        ipv4_address: ${upf_ip}

With this I am able to setup all the components of my cluster correctly. I already try kompose utility but does not work.

Any suggestion or alternative for kubernetes?

Thanks for your help.

Upvotes: 0

Views: 237

Answers (1)

Burak Serdar
Burak Serdar

Reputation: 51467

You can expose each deployment with a kubernetes service. When you do that, each exposed service cluster IP will be available to the containers as environment variables.

For example: deploy hss, and expose hss ports using a service named hss. Then, any container that needs to connect to hss can use the environment variable HSS_SERVICE_HOST to get the IP address for that service. There are more environment variable that will give you service port numbers, or service addresses in other formats.

Upvotes: 2

Related Questions