ooooo        ooooo ooooo      ooo ooooo     ooo ooooooo  ooooo   .oooooo.   ooooooooo.   
     `888'        `888' `888b.     `8' `888'     `8'  `8888    d8'   d8P'  `Y8b  `888   `Y88. 
      888          888   8 `88b.    8   888       8     Y888..8P    888      888  888   .d88' 
      888          888   8   `88b.  8   888       8      `8888'     888      888  888ooo88P'  
      888          888   8     `88b.8   888       8     .8PY888.    888      888  888`88b.    
      888       o  888   8       `888   `88.    .8'    d8'  `888b   `88b    d88'  888  `88b.  
     o888ooooood8 o888o o8o        `8     `YbodP'    o888o  o88888o  `Y8bood8P'  o888o  o888o 

Container infrastructure components in GO lang

HTTP LoadBalancer/Reverse Proxy

  • traefik (License: MIT)
    traefik - github
    traefik - documentation
    Traefik is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) to manage its configuration automatically and dynamically.
    • It’s fast
    • No dependency hell, single binary made with go
    • Rest API
    • Multiple backends supported: Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, and more to come
    • Watchers for backends, can listen for changes in backends to apply a new configuration automatically
    • Hot-reloading of configuration. No need to restart the process
    • Graceful shutdown http connections
    • Circuit breakers on backends
    • Round Robin, rebalancer load-balancers
    • Rest Metrics
    • Tiny official docker image included
    • SSL backends support
    • SSL frontend support (with SNI)
    • Clean AngularJS Web UI
    • Websocket support
    • HTTP/2 support
    • Retry request if network error
    • Let’s Encrypt support (Automatic HTTPS with renewal)
    • High Availability with cluster mode

Object storage

Key-value store

  • etcd (License: Apache-2.0)
    etcd - github
    etcd - documentation
    etcd is a distributed, consistent key-value store for shared configuration and service discovery, with a focus on being:
    • Simple: well-defined, user-facing API (gRPC)
    • Secure: automatic TLS with optional client cert authentication
    • Fast: benchmarked 10,000 writes/sec
    • Reliable: properly distributed using Raft
      etcd gracefully handles leader elections during network partitions and will tolerate machine failure, including the leader. Your applications can read and write data into etcd. A simple use-case is to store database connection details or feature flags in etcd as key value pairs. These values can be watched, allowing your app to reconfigure itself when they change. Advanced uses take advantage of the consistency guarantees to implement database leader elections or do distributed locking across a cluster of workers.

Datacenter-Aware Scheduler

  • Nomad (License: MPL-2.0)
    Nomad - github
    Nomad is a cluster manager, designed for both long lived services and short lived batch processing workloads. Developers use a declarative job specification to submit work, and Nomad ensures constraints are satisfied and resource utilization is optimized by efficient task packing. Nomad supports all major operating systems and virtualized, containerized, or standalone applications.

  • Cloud Integrated Advanced Orchestrator
    Cloud Integrated Advanced Orchestrator - github
    Ciao is the "Cloud Integrated Advanced Orchestrator". Its goal is to provide an easy to deploy, secure, scalable cloud orchestration system which handles virtual machines, containers, and bare metal apps agnostically as generic workloads. Implemented in the Go language, it separates logic into "controller", "scheduler" and "launcher" components which communicate over the "Simple and Secure Node Transfer Protocol (SSNTP)".

Performance monitoring

  • cAdvisor
    Analyzes resource usage and performance characteristics of running containers. cAdvisor (Container Advisor) provides container users an understanding of the resource usage and performance characteristics of their running containers. It is a running daemon that collects, aggregates, processes, and exports information about running containers. Specifically, for each container it keeps resource isolation parameters, historical resource usage, histograms of complete historical resource usage and network statistics. This data is exported by container and machine-wide. cAdvisor has native support for Docker containers and should support just about any other container type out of the box. We strive for support across the board so feel free to open an issue if that is not the case. cAdvisor's container abstraction is based on lmctfy's so containers are inherently nested hierarchically.


Others GO projects

  • Awesome Go - A curated list of awesome Go frameworks, libraries and software.