RUVIDEO
Поделитесь видео 🙏

CICD

This is a complete DevOps project with the following tools:
1- Docker & Docker-compose
2- Jenkins
3- Kubernetes
4- ArgoCD
5- Terraform
Note: This program is very simple, it connects to a MySQL database based on the following env vars:

MYSQL_HOST
MYSQL_USER
MYSQL_PASS
MYSQL_PORT
And exposes itself on port 9090:

On /healthcheck it returns an OK message,

On GET it returns all recorded rows.

1- Docker & Docker-compose
Dockerfile that builds the app and I made it as lightweight as possible (by using a lightweight base image golang:alpine).

Note: I could find the host which I applied to the app in environment variables) from running command (docker inspect mysql | grep IP)
Docker compose file that contains both application and mysql database so you can run the app locally.

I had two issues in this part
1- When the container app created and couldn't find MySQL database up, it exited immediately.
Solution: Create depends_on section in the docker-compose yaml file and assign ed health check To start the app container after my sql was ready
2- The app couldn't connect mysql after it was healthy
Solution: This was a mistake in the yaml file formatting, there was an additional space in the mysql_port: 3306 section.
Note: the volume of MySQL was mounted under /var/lib/mysql/data for persistent data in the database.

2- Jenkins
Pipeline job (jenkinsfile) to build the app using dockerfile and reports if any errors happened in the build. The output of the build step is a docker image pushed to the docker hub or any docker repo.
there were many issues with Jenkins
1- Connecting Jenkins to Github
Solution: I couldn't connect to GitHub using an ordinary password but we should generate a token from the developer tools to enable Jenkins to access GitHub.
2- Jenkins couldn't run commands which we pass in the Jenkinsfile
Solution: add Jenkins in /etc/subuid
3- I also couldn't send e-mails or access the Gmail account with an ordinary password
Solution: generating token from Gmail (app password option)
4- Jenkins couldn't pass the first line in the dockerfile which was FROM golang:alpine:3.18 and the reason was that we had three main default docker repositories to pull from, and Jenkins couldn't take the decision in this case
Solution: modifying the line to be FROM docker.io/golang:alpi ne:3.18
5- The Address which send in the E-mail notification wasn't acceptable
Solution: I modified it from Jenkins global configuration to be the same as the jenkins machine
3- Kubernetes
manifests for Kubernetes to deploy the app using them on Kubernetes with adding config to support high availability and volume persistence and exposing service to the public (using minikube to test).
Adding autoscaling manifest for the number of replicas.
Securing variables using secrets.
4- ArgoCD
appling gitops concept.
Installing argo project
Open ports for argo project
Authentication for argo project
argo application manifest
Running argocd
5- Terraform
Provision AWS infrastructure

1- create a custom VPC
2- create a custom subnet
3- create a custom route table and internet gateway
4- create a custom security group
5- provision EC2 instance
Run the Docker container on EC2 instance

Run bash script as user data to:
1- install docker in the EC2 instance
2- deploy the docker container in the EC2 instance

Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «CICD», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.

Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.

Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!

Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.