How Kontainers Works

Overview

In this article, you will learn about the various components which make up Engine Yard Kontainers (EYK). This includes information on the EYK architecture and how the various components interact.


Architecture

EYK hosts applications in the AWS cloud on a highly-available Platform as a Service (PaaS). Simply push your code to the EYK remote target to deploy applications. You can use the EYK Web Console or CLI to configure your application and deployment.

When you git push to the EYK target, your code is sent to EYK where it is packaged using your configuration settings and built into a Docker container image. Your application containers are then deployed onto a fully-configured, secure Kubernetes cluster. EYK will automatically scale your application for you. When demand fluctuates, instances are spun up or taken down transparently to end-users.

While applications are running in EYK, Kibana collects application logs as a stream where they can be accessed through the EYK CLI, Web Console, or directly on Kibana. Alerts and dashboards are handled by Grafana, with key metrics and views available in the Web Console. You can always go directly to Grafana to construct custom dashboards.

Architecture Diagram

EYK-Workflow-Architecture-Diagram.png

Components

  • Git Repository: Push application code from your Git repository to the remote EYK target to have it deployed as a container in your cluster. Note that each Git repository corresponds with one application on EYK.
  • EYK Controller: EYK's container management application that facilitates the seamless deployment of Containers, applications, and clusters for rapid scalability. The centralized management features of EYK enable auto-scaling applications on-demand, rolling out updates without downtime, and monitoring of running applications.
  • Application: The code you want to deploy, along with the necessary settings and supporting libraries for it to run. An application maps to a single code repository (Git) project. Multiple processes can be run from an application however, they all share the same container image.
  • Container: A Container is a lightweight, standalone, executable software application package that includes everything needed to run the application - code, runtime environment settings, system tools, and system libraries. Containers allow the same code to be deployed on multiple machines rapidly for scaling. Code changes can be deployed without requiring a whole new environment to be configured. EYK packages the application code with the necessary runtime settings into a Container that is run within a cluster.
  • Cluster: The first step for using EYK begins with establishing a Cluster. Applications are containerized and deployed onto a Cluster. Within the EYK architecture, a cluster is a geographic and security boundary for applications. Clusters are managed by EYK and application deployments take place in a rolling fashion so there is no down-time for end-users. The properties of a cluster include a name, the AWS Region where it is located, and the CIDR block for the cluster's Virtual Private Cloud (VPC). All applications within the cluster run within this secure VPC.
  • Virtual Router: When a Cluster is created, EYK will automatically create and assign a Virtual Router that will direct traffic to applications in Containers within the Cluster
    Each application Cluster receives requests through a virtual router which ensures that requests are distributed to the appropriate application process within the Cluster. A process denoted as a ‘web’ component is automatically wired to receive HTTP requests using the router.
  • EYK CLI Tool: This CLI tool enables you to interact with EYK through the command line to connect to a Cluster to create or delete an application, push code from your Git repository into EYK, access logs, and scale applications in addition to several other functions.
  • EYK Web Console: As an alternative to managing applications using the EYK CLI tool, the EYK Web Console provides the same functionality in a graphical user interface. One important difference is that the EYK Web Console provides visibility over all of your applications in one interface, as opposed to the EYK CLI tool which displays applications inside the Cluster you are connected to.
  • Logging: In keeping with the Twelve-Factor App method, log data is streamed into Kibana, which keeps the information in a central location that is independent of the running applications. This time-series data is the basis for monitoring services to generate alerts and can be used to troubleshoot issues when they arise. Logs can be accessed through the EYK CLI tool, Web Console, and directly on your own Kibana instance.
  • Monitoring: As log data streams into Kibana, it is monitored by Grafana, which is an analytics application that can send alerts based on event statuses and event frequency for real-time monitoring of all activity generated by applications in EYK. General informational dashboards are presented in the EYK Web Console, or you can access your own instance of Grafana to generate custom dashboards.
  • Other AWS Resources: EYK provides access to integrated AWS resources through the EYK Web Console where your applications can be connected to S3, ElastiCache, and RDS. Alternatively, connect your applications to your own AWS account resources by linking your AWS credentials in the EYK Web Console. 

Back to top


Related Articles

Back to top

Comments

Article is closed for comments.