Public training repository for Telerik DevOps-Upskill program - 2023 v1.1
Explore the docs »
Report Bug
·
Request Feature
·
Docker repository
This is my main repository for 'Telerik DevOps-Upskill program 2023'.
Banches:
- main
- terraform - Terraform IaC
- kubevirt-cpu-pinning - Feature for Kubevirt cpu pinning
- config-management - Ansible playbooks for building of custom AMI
- build-it - GitHub Workflow
See the closed pull requests for a full list of added features.
Here you can find all tools and languages that are used in this project.
- Docker
- Ansible
- GitHub Workflows
- Terraform
- Slack
- Kubernetes
- Go/Bash/Python
If you want to run one of examples in 'homeworks', go to 'homeworks' directory and read instructions.
This is an example of how to list things you need to use the software and how to install them.
sudo apt-get update
sudo apt-get install docker.io
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansibleTerraform: https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli
- Build custom AMI
- Start AWS Cluster with Terraform
- ChatOps configuration
- Jenkins configuration
- CPU Pinning patch
For more examples, please refer to the Documentation
- Idea for the project
CI/CD pipeline for own Kubevirt features
- Phases of SDLC
- Value stream mapping
- Documentation
- Choose source control- GitHub
- Branching strategies
- Choosed building tools
- GoLang;
- GitHub Actions;
- Ansible;
- Docker/DockerHub for sharing container images;
- Snyk and Sonar for source code security source code testing.
- Choosed languages and tools
- GoLang
- Secrets management
- Ansible vault
- HashiCorp vault
- Security
- Sonarcloud
- Snyk
- Linters
- Gitleaks
- ChatOps
- AWS Lambda
- AWS CloudWatch
- Slack
- Create, build and test
- Build AWS custom AMI (part of 'Configuration management')
- Create patches for Kubevirt
- Build with GitHub Actions (Building Pipelines) and publish to DockerHub
- Test on AWS with Terraform
- Run on Kubernetes cluster with Jenkins
- AWS Custom AMI and EC2 instances
- Cluster with 2 or more workers
- Observability
- Prometheus statistics
- Test the project with one step
- Send notification to Slack
- Documentation
See the open issues for a full list of proposed features (and known issues).
In our infrastructure setup, we rely on three pivotal Terraform modules, each fulfilling a vital role in orchestrating the deployment and oversight of our resources:
Main Init Module Acting as the keystone of our cluster initialization process, this module oversees the provisioning of two EC2 instances within the AWS environment. Leveraging cloud-init scripts, it meticulously tailors their configurations to meet our precise specifications. These instances serve as the bedrock upon which our entire infrastructure is constructed, furnishing the requisite compute resources for our workloads.
Kubernetes Templates Module This module shoulders the responsibility for deploying and configuring essential Kubernetes resources in our environment. It encompasses the deployment of kubevirt, an extension for Kubernetes dedicated to managing virtual machines, and the Kubernetes dashboard, offering a centralized interface for monitoring and administering our Kubernetes clusters. Through the automated deployment of these resources via templated configurations, we ensure uniformity and dependability across our Kubernetes infrastructure.
ChatOps Module Our ChatOps module embodies an inventive strategy to boost operational efficiency by seamlessly integrating with Slack. This module not only provisions a CloudWatch instance for monitoring our infrastructure but also establishes a bidirectional communication channel between CloudWatch and our Slack server. This integration empowers us with automated notifications, alerts, and interactive commands within our Slack workspace, facilitating real-time insights and actions to streamline collaboration and decision-making processes.
Moreover, it's worth mentioning that we utilize Jenkins for nightly builds. Through the orchestrated execution of these Terraform modules, combined with Jenkins' capabilities, we realize a comprehensive and automated infrastructure setup that lays the groundwork for efficient, dependable, and collaborative operations within our environment. From the initial resource provisioning to continuous management and communication, Terraform and Jenkins serve as indispensable tools for safeguarding the resilience and adaptability of our infrastructure.
In addition to the Terraform modules outlined above, we have the capability to further customize their AWS environment by building custom Amazon Machine Images (AMIs) using Ansible. This approach allows for the creation of tailored images that encapsulate specific configurations and software setups required for their applications.
With Ansible, we can define the desired state of their infrastructure through playbooks, which specify the tasks and configurations to be applied to the instances. By leveraging Ansible's declarative nature, we can ensure consistency and repeatability in the AMI creation process, facilitating seamless deployment and scaling of their applications.
## ContributingContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt for more information.
Viktor Stoykov
Project Link: https://github.com/VikStoykov/DevOps-Upskill-23


