Open Source Cloud Native Projects

  • Kubernetes container orchestration platform

    • github

      Kubernetes! When talking about cloud native applications, how could we not mention Kubernetes? Invented by Google, Kubernetes is undoubtedly the most famous container orchestration platform for container-based applications, and it is also an open source tool.

      What is a container orchestration platform? Normally, a container engine itself can manage a few containers. But when you are talking about thousands of containers and hundreds of services, managing those containers becomes very complicated. That is where a container orchestration engine comes in. A container orchestration engine helps manage a large number of containers by automating their deployment, management, networking, and availability.

      Docker Swarm and Mesosphere Marathon are also container orchestration engines, but it is safe to say that Kubernetes has already won this race (at least for now). Kubernetes has also given rise to container-as-a-service (CaaS) platforms like OKD, which is the Origin community distribution of Kubernetes and became part of Red Hat OpenShift.

  • Prometheus system and service monitoring tool

    • github

      Prometheus is an open source system monitoring and alerting tool built at SoundCloud in 2012. Afterwards, many companies and organizations adopted Prometheus, and the project has a very active community of developers and users. Today it has become an independent open source project, maintained independently of any company.
      The simplest way to understand Prometheus is to visualize a production system that needs to run properly 24 (hours) x 365 (days). No system is perfect, and there are techniques to reduce failures (called fault-tolerant systems), but if a problem does occur, the most important thing is to find out about it as soon as possible. That is where monitoring tools like Prometheus come in. Prometheus is not just a container monitoring tool, but it is most popular among cloud native application companies. In addition, other open source monitoring tools, including Grafana, build on Prometheus.

  • Envoy edge and service proxy

    • github

      Envoy (or the Envoy proxy) is an open source edge proxy and service proxy designed for cloud native applications. Created by Lyft, Envoy is a high-performance distributed proxy written in C++ and designed for a single service and application, and it is also a communication bus and universal data plane designed for service mesh architectures made up of a large number of microservices. Building on solutions such as Nginx, HAProxy, hardware load balancers, and cloud load balancers, Envoy runs alongside (in parallel with) each application and abstracts the network by providing common features in a platform-agnostic way.

      When all service traffic in the infrastructure passes through the Envoy mesh, it becomes easy to visualize the problem domain through consistent observability, tune overall performance, and add infrastructure features in a single place. Basically, the Envoy proxy is a service mesh tool that helps organizations build fault-tolerant systems for production environments.

      There are many alternatives for service mesh applications, such as Uber’s Linkerd (discussed below) and Istio. Istio extends Envoy by deploying it as a sidecar and leveraging Mixer’s configuration model. Envoy’s notable features include:

      ◈ Includes all the “table stakes” features (when combined with a control plane like Istio)

      ◈ 99% of data at low latency under load

      ◈ Can serve as a core L3/L4 filter, with out-of-the-box L7 filters

      ◈ Supports gRPC and HTTP/2 (upstream/downstream)

      ◈ API-driven, with support for dynamic configuration and hot reloading

      ◈ Focused on metrics collection, tracing, and overall observability

  • rkt Pod-native container engine

    • github

      rkt, pronounced “rocket”, is a Pod-native container engine. It has a command-line interface for running containers on Linux. In a sense, it is similar to other container tools such as Podman, Docker, and CRI-O.

  • Jaeger distributed tracing system

    • github

      Jaeger is an open source end-to-end distributed tracing system for cloud applications. In some ways it is like monitoring solutions such as Prometheus. But it is different, because its use cases are expanded:

      ◈ Distributed transaction monitoring

      ◈ Performance and latency optimization

      ◈ Root cause analysis

      ◈ Service dependency analysis

      ◈ Distributed context propagation

  • Linkerd transparent service mesh

    • github

      Like Lyft, which created the Envoy proxy, Uber developed the Linkerd open source solution for production-grade service maintenance. In some ways, Linkerd is like Envoy, because both are service mesh tools designed to provide platform-level observability, reliability, and security without configuration or code changes.

      However, there are some subtle differences between the two. Although Envoy and Linkerd act as proxies and can report through the services they are connected to, Envoy is not designed to be a Kubernetes Ingress controller the way Linkerd is. Linkerd’s notable features include:

      ◈ Support for multiple platforms (Docker, Kubernetes, DC/OS, Amazon ECS, or any standalone machine)

      ◈ A built-in service discovery abstraction that can federate multiple systems together

      ◈ Support for gRPC, HTTP/2, and HTTP/1.x requests and all TCP traffic

  • Helm Kubernetes package manager

    • github

      Helm is basically the package manager for Kubernetes. If you have used Apache Maven, Maven Nexus, or similar services, you will understand what Helm does. Helm helps you manage Kubernetes applications. It uses “Helm Charts” to define, install, and upgrade even the most complex Kubernetes applications. Helm is not the only way to achieve this; another popular concept is Kubernetes Operators, which is used by Red Hat OpenShift 4.

  • Etcd distributed key-value store

    • github

      Etcd is a distributed, reliable key-value store used to hold the most critical data in a distributed system. Its main features include:

      ◈ A well-defined, user-facing API (gRPC)

      ◈ Automatic TLS, with optional client certificate verification

      ◈ Speed (up to 10,000 writes per second)

      ◈ Reliability (distributed using Raft)

      Etcd is the default built-in data storage solution for Kubernetes and many other technologies. That said, it is rarely run standalone or as a separate service; instead, it operates integrated into Kubernetes, OKD/OpenShift, or other services. There is also an etcd Operator that can be used to manage its lifecycle and unlock its API management capabilities.

  • CRI-O a lightweight runtime environment dedicated to Kubernetes

    • github

      CRI-O is an OCI-compatible implementation of the Kubernetes runtime interface. CRI-O is used for various functions, including:

      ◈ Running with runc (or any implementation that complies with the OCI runtime specification) and the OCI runtime tools

      ◈ Image management using containers/images

      ◈ Storing and managing image layers using containers/storage

      ◈ Providing network support through the Container Network Interface (CNI)

Original article: https://mp.weixin.qq.com/s/t4bXqZLtvm_Xc1RiPq7rEw