Socket
Socket
Sign inDemoInstall

container-transform

Package Overview
Dependencies
0
Maintainers
1
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    container-transform

A converter for various docker cluster formats


Maintainers
1

Readme

.. image:: https://travis-ci.org/micahhausler/container-transform.png :target: https://travis-ci.org/micahhausler/container-transform

.. image:: https://coveralls.io/repos/micahhausler/container-transform/badge.png?branch=master :target: https://coveralls.io/r/micahhausler/container-transform?branch=master

.. image:: https://readthedocs.org/projects/container-transform/badge/?version=latest :target: http://container-transform.readthedocs.org/en/latest/?badge=latest :alt: Documentation Status

container-transform

container-transform is a small utility to transform various docker container formats to one another.

Currently, container-transform can parse and convert:

  • Kubernetes Pod specs
  • ECS task definitions
  • Docker-compose configuration files
  • Marathon Application Definitions or Groups of Applications
  • Chronos Task Definitions

and it can output to:

  • Systemd unit files

Examples

Compose to Kubernetes


::

    $ cat docker-compose.yaml
    version: '2'
    services:
      etcd:
        cpu_shares: 102.4
        entrypoint: /usr/local/bin/etcd -data-dir /var/etcd/data -listen-client-urls http://127.0.0.1:2379,http://127.0.0.1:4001
          -advertise-client-urls http://127.0.0.1:2379,http://127.0.0.1:4001 -initial-cluster-token
          skydns-etcd
        image: gcr.io/google_containers/etcd-amd64:2.2.1
        mem_limit: 524288000b
      healthz:
        command: -cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null
          -port=8080
        cpu_shares: 10.24
        image: gcr.io/google_containers/exechealthz:1.0
        mem_limit: 20971520b
        ports:
        - '8080'
      kube2sky:
        command: --kubecfg-file=/etc/kubernetes/worker-kubeconfig.yaml --domain=cluster.local
        cpu_shares: 102.4
        image: gcr.io/google_containers/kube2sky:1.14
        mem_limit: 209715200b
        volumes:
        - /usr/share/ca-certificates:/etc/ssl/certs
        - /etc/kubernetes/worker-kubeconfig.yaml:/etc/kubernetes/worker-kubeconfig.yaml:ro
        - /etc/kubernetes/ssl:/etc/kubernetes/ssl:ro
      skydns:
        command: -machines=http://127.0.0.1:4001 -addr=0.0.0.0:53 -ns-rotate=false -domain=cluster.local.
        cpu_shares: 102.4
        image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c
        mem_limit: 209715200b
        ports:
        - 53/udp
        - '53'
    $ container-transform -i compose -o kubernetes docker-compose.yaml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        app: null
        version: latest
      name: null
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: null
          version: latest
      template:
        metadata:
          labels:
            app: null
            version: latest
        spec:
          containers:
          - command:
            - /usr/local/bin/etcd
            - -data-dir
            - /var/etcd/data
            - -listen-client-urls
            - http://127.0.0.1:2379,http://127.0.0.1:4001
            - -advertise-client-urls
            - http://127.0.0.1:2379,http://127.0.0.1:4001
            - -initial-cluster-token
            - skydns-etcd
            image: gcr.io/google_containers/etcd-amd64:2.2.1
            name: etcd
            resources:
              limits:
                cpu: 100.0m
                memory: 500Mi
          - args:
            - -cmd=nslookup
            - kubernetes.default.svc.cluster.local
            - 127.0.0.1
            - '>/dev/null'
            - -port=8080
            image: gcr.io/google_containers/exechealthz:1.0
            name: healthz
            ports:
            - containerPort: 8080
              protocol: TCP
            resources:
              limits:
                cpu: 10.0m
                memory: 20Mi
          - args:
            - --kubecfg-file=/etc/kubernetes/worker-kubeconfig.yaml
            - --domain=cluster.local
            image: gcr.io/google_containers/kube2sky:1.14
            name: kube2sky
            resources:
              limits:
                cpu: 100.0m
                memory: 200Mi
            volumeMounts:
            - mountPath: /etc/ssl/certs
              name: usr-share-ca-certificates
            - mountPath: /etc/kubernetes/worker-kubeconfig.yaml
              name: etc-kubernetes-worker-kubeconfig.yaml
              readOnly: true
            - mountPath: /etc/kubernetes/ssl
              name: etc-kubernetes-ssl
              readOnly: true
          - args:
            - -machines=http://127.0.0.1:4001
            - -addr=0.0.0.0:53
            - -ns-rotate=false
            - -domain=cluster.local.
            image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c
            name: skydns
            ports:
            - containerPort: 53
              protocol: UDP
            - containerPort: 53
              protocol: TCP
            resources:
              limits:
                cpu: 100.0m
                memory: 200Mi
          volumes:
          - hostPath:
              path: /etc/kubernetes/ssl
            name: etc-kubernetes-ssl
          - hostPath:
              path: /etc/kubernetes/worker-kubeconfig.yaml
            name: etc-kubernetes-worker-kubeconfig.yaml
          - hostPath:
              path: /usr/share/ca-certificates
            name: usr-share-ca-certificates

Compose to ECS
~~~~~~~~~~~~~~

::

    $ cat docker-compose.yml | container-transform  -v
    {
        "family": "python-app",
        "volumes": [
            {
                "name": "host_logs",
                "host": {
                    "sourcePath": "/var/log/myapp"
                }
            }
        ],
        "containerDefinitions": [
            {
                "memory": 1024,
                "image": "postgres:9.3",
                "name": "db",
                "essential": true
            },
            {
                "memory": 128,
                "image": "redis:latest",
                "name": "redis",
                "essential": true
            },
            {
                "name": "web",
                "memory": 64,
                "command": [
                    "uwsgi",
                    "--json",
                    "uwsgi.json"
                ],
                "mountPoints": [
                    {
                        "sourceVolume": "host_logs",
                        "containerPath": "/var/log/uwsgi/"
                    }
                ],
                "environment": [
                    {
                        "name": "AWS_ACCESS_KEY_ID",
                        "value": "AAAAAAAAAAAAAAAAAAAA"
                    },
                    {
                        "name": "AWS_SECRET_ACCESS_KEY",
                        "value": "1111111111111111111111111111111111111111"
                    }
                ],
                "essential": true
            }
        ]
    }
    Container web is missing required parameter "image".
    Container web is missing required parameter "cpu".

Quick Help
----------
::

    Usage: container-transform [OPTIONS] [INPUT_FILE]

      container-transform is a small utility to transform various docker
      container formats to one another.

      Default input type is compose, default output type is ECS

      Default is to read from STDIN if no INPUT_FILE is provided

      All options may be set by environment variables with the prefix "CT_"
      followed by the full argument name.

    Options:
      -i, --input-type [ecs|compose|marathon|chronos|kubernetes]
      -o, --output-type [ecs|compose|systemd|marathon|chronos|kubernetes]
      -v, --verbose / --no-verbose    Expand/minify json output
      -q, --quiet                     Silence error messages
      --version                       Show the version and exit.
      -h, --help                      Show this message and exit.

Docker Image
------------

To get the docker image, run::

    docker pull micahhausler/container-transform:latest

To run the docker image::

    docker run --rm -v $(pwd):/data/ micahhausler/container-transform  docker-compose.yml

    # or
    cat docker-compose.yml | docker run --rm -i micahhausler/container-transform


Installation
------------

To install the latest release (Python 3 only), type::

    pip install container-transform

To install the latest code directly from source, type::

    pip install git+git://github.com/micahhausler/container-transform.git

Documentation
-------------

Full documentation is available at http://container-transform.readthedocs.org

License
-------
MIT License (see LICENSE)

Keywords

FAQs


Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc