DevOps Technologies

DevOps Technologies

The course is taught for bachelors of 3-4 years of study.

About the course

The course is dedicated to the practical study of modern DevOps technologies. You will master the basic knowledge and skills of building pipelines, automating software development and operation processes, containerizing applications, deploying continuous code integration systems, building application assembly pipelines, deploying container orchestration systems, building application deployment processes on the execution platform, creating infrastructure and application monitoring systems, collecting and analyzing application logs.

You will learn

  • deploy continuous code integration systems
  • collect and analyze application logs
  • deploy container orchestration systems
  • create infrastructure and application monitoring systems

Topics

  1. Fundamentals of application containerization technology

    The specifics of deploying distributed high-performance applications. Introduction to cloud services (IaaS, PaaS, SaaS). DevOps philosophy, continuous integration and code delivery. Version control system. Git. Typical operations. Repository of software code artifacts. Docker technology. Delimiting process spaces in the operating system using cgroups. Technology composition: docker files, image registry, containers, Docker daemon. File access layers. A cluster of Docker hosts. Creating a cluster. Scaling of containers. Preparing Debian-based virtual machines. Writing Dockerfile and docker-compose.yaml for local launch of React-mobi application with node.a js backend and a PostgreSQL database.

  2. Installation and configuration of GitLabCI

    Purpose and component modules of the GitLab CI assembly automation system. The format of the project build descriptor in the file .gitlab-ci.yml. Ways to scale GitLabCI to speed up the build and testing process. Installing and configuring GitLabCI in a docker-compose environment. Deploying the registry of GitLabCI Docker images.

  3. Building applications with GitLabCI

    Components of the GitLab CI pipeline, a system of stages in the GitLabCI pipeline. The pipeline starts according to the schedule. Publishing artifacts of the assembly line operation. Handling build errors. Writing.gitlab-ci.yml for testing, building, publishing a Docker image to the GitLabCI registry and local deployment of the project.

  4. Kubernetes Orchestration System

    Orchestration of large-scale application services. Problems and challenges. The composition of the Kubernetes cluster. The main elements of the deployment (Pod, Service, Route). Kybernetes cluster deployment options (mini cube, k8s, k3s, k8s managed). Managing a Kubernetes cluster via kubectl and Kubernetes Dashboard. Deploy the k3s and Kubernetes Dashboard cluster in a prepared Debian-based virtual machine.

  5. Deploying applications to Kubernetes using GitLabCI

    Automatic deployment of the application as a result of a successful build, deployment outlines. Create application deployment reports. Creating yaml deployment descriptors to the k3s cluster. Creation of elements for consolidation of deployment modules (Service) and routing (Ingress). Passing parameters via Config Map. Creating a GitLabCI pipeline for deploying an application in a Kubernetes cluster using the created descriptors.

  6. Helm Deployment Template Engine

    The release of applications, the composition of the release, the order of deployment of releases along the contours of operation. The purpose and use of the Helm template engine. Installing Helm. Creating Helm charts. The structure of Helm charts. Setting parameters (values) for the Helm chart configuration. Configuring the installation and updating of releases using Helm. Rollback a release using Helm.

    Creating a GitLab CI pipeline for deploying an application in a Kubernetes cluster using helm artifacts.

  7. Prometheus and Grafana monitoring technologies

    Purpose and composition of the Prometheus-based metrics collection system. The subsystem for sending Prometheus warnings. Long-term storage of metrics, the use of PromQL for the analysis and aggregation of metrics in Prometheus. Grafana's capabilities as a Prometheus metrics visualization environment. Scaling up the monitoring infrastructure. Setting up monitoring of the operation infrastructure and applications using Prometheus and Grafana. Deployment of Prometheus and Grafana servers, deployment of node exporter to send metrics of the infrastructure (cluster nodes) to Prometheus. Creating a Grafana Dashboard. Collecting application performance metrics. Creating a GitLab CI pipeline for deploying an application in a Kubernetes cluster using helm artifacts.

  8. Centralized collection of application logs

    The purpose of centralized logging systems in cluster systems. The composition of centralized logging systems. Kafka message broker in centralized logging systems. Collecting standard container output using beat utilities. Logstash as a system for polling, filtering and transmitting messages from source to receiver. OpenSearch full-text search system as a log analysis tool. Deployment of modules of the centralized log collection system based on Logstash and OpenSearch technologies.