My colleague starting the new role as DevOps engineer, here's the advise from him:
- Learn to program - write a simple web app. It should have a front end, back end, and a database. I'd recommend using Django or Flask since as a devops engineer you're going to be writing a lot of python/powershell most likely and need to at least be able to read it
- OS stuff - set up a local Linux server vm to run your web app, that includes setting up the database and web server yourself. Don't use a GUI
- Containers - now that you've written your web app, try to dockerize it. Tip: most databases and web servers you'll encounter can be run as containers. How do you make sure your database container will persist data if you have to re-run it?
- CI/CD - setup a Jenkins or GitLab container and configure a CI/CD pipeline for your web app, should deploy as containers. Remember to keep things as immutable as possible, i.e. don't make changes inside running containers
- Configuration Management - Use ansible to set up your entire project so far. That is, configure your Linux server to be a Docker host, run Jenkins with your pipeline, and run your containerized web app
- Container Orchestration - Kubernetes. Minikube is a single node kubernetes "cluster". Set up Minikube and run your Jenkins container and web app. Bonus points: do all this with Ansible
- Infrastructure Provisioning - Use terraform to lift and shift your current setup to AWS. Basic - run containers on EC2 with minikube. Intermediate - use EKS for kubernetes instead of a VM. Advanced - set up your own Kubernetes cluster in AWS to run your Jenkins and web app
- Service Mesh - optional or revisit later. Set one up
- Monitor - set up monitoring of your k8s with Prometheus. Remember to approach this with IaC and make it immutable as possible
- Set up logging with an ELK stack. Remember to approach this with IaC and make it immutable as possible
No comments:
Post a Comment