TWN's DevOps Bootcamp and its learning tools
🧩 The Extension Pack
⚠️ Installation Conflicts
♻️ Clean Installation
✅ Check Good Versions
🖥️ OS Information
📦 Linux Package Manager
📝 Vim text editor
👥 User and Group accounts
🔐 Ownership and Permissions
🏷️ Environment Variables
🌐 Network configuration
🔑 SSH : Secure Shell
#! Shebang line
🏷️ Print and variables
🔀 Bash conditions
🔁 Bash Loops
⬇️ Input parameters (arguments):
🗂️ User / File / Output Readings
🔧 Functions
📸 What is Git ?
🖥️ Bash prompt
🗒️ Git Commands
🌿 Branches
⚠️ Conflicts
🏆 Good Pratices
🙈 Git Ignore File (.gitignore)
⏳ Temporary save uncommited changes (stash)
⏪ Get back to an old commit (check log)
🔃 Cancel Commits (reset or revert)
Types of Database
How to organize database ?
✅ Code Review Checklist
📦 What is an artifact ?
🛠️ Build Tools Overview
💻 Operating System Setup
🗒️ Build Artifacts Summary
🧩 Managing Dependencies
📤 Packaging & Deployment
🗜️ Frontend Bundling (Webpack)
🐳 Using Docker
☁️ 4 types of Cloud Services
💧 Setup a Droplet on DigitalOcean
🧱 Setup the Firewall
📤 Deploy App on Droplet
🔑 Set a User and Config SSH File
⚠ Destroy unused servers !
Part 1 : Introduction and concepts
What is an artefact repository ?
The artifact repository manager
Nexus Presentation
Part 2 : Installation et configuration
Nexus Installation
Start Nexus on the server
Add a local firewall on the server (Optional)
Create a system daemon (Optional)
Part 3 : Deposit Management
Repository Types
Prepare the user
Prepare the repository
Authentication required
Part 4 : Publishing artifacts
Publish a Gradle Java App
Deploy a Maven Java App
Part 5 : API et maintenance
Nexus API
Blob Store and Cleanup Policies
Automation
Part 1 - Docker Introduction
What is a container ?
Containers VS Images
Containers VS Virtual Machines
Docker Desktop installation
Main Docker Commands
Docker Network
Part 2 - Docker development process
Configuration of MongoDB + Mongo Express UI
Using Docker Compose
Build an NodeJS Docker Image with Dockerfile
Full solution using a Docker compose
Issue with Cross-Origin Ressource Sharing (CORS) Policy
Part 3 - Docker repository on Nexus
Docker Private repository
Pass Password manager
Docker Login
Docker Tag and Docker Push
Deploy a Docker image from Nexus
Part 4 - Docker Volumes
What is a Docker volume ?
3 types of volumes
Docker volumes in Docker compose
Check the volumes
Part 5 - Nexus as Docker Container
Purpose
Installation
Nexus VS Docker Hub
Part 6 - Best Practices
1. Use official Docker images as base images
2. Use specific image versions
3. Use small-sized official images
4. Optimize catching images layers
5. Use .dockerignore file to exclude files and folders
6. Make use of multi-stage builds
7. Use the least privileges users
8. Scan your images for vulnerabilities
What is NGINX ?
How to configure Nginx ?
Nginx as Kubernetes Ingress Controller
DEMO PROJECT
Reference
PART 1 - Concepts & Setup
Introduction to Build Automation
Install Jenkins
Building Tools for Jenkins
PART 2 - Freestyle Jobs & Git
Jenkins Basics
Git Repository with Jenkins
PART 3 - Docker & Registries
JAR image from Jenkins to Docker Hub (Freestyle CI)
Docker into Jenkins
JAR image from Jenkins to Nexus Repository
PART 4 - Pipelines & Jenkinsfiles
Jenkinsfiles and Pipeline Jobs
JAR image from Jenkins to Docker Hub (Pipeline CI)
Multibranch Pipelines
PART 5 - CI/CD at scale
Jenkins Global Shared Library
Shared library within the project scope only.
Trigger Jenkins Job - Webhooks
Application Versioning
PART6 - ADDONS
Full Example with a NodeJS App
Automated installation of Docker and Jenkins on a new server with Maven 3.9.12 / NodeJS 20.x and the Pipeline-Stage-View Plugin
📌 Better ! Configure a Jenkins Controller Server with Docker, Node, Maven and AWS CLI Agents making it scalable and CI/CD properly.
Introduction to Amazon Web Services
Create an AWS account
IAM - Identity & Access Management
VPC - Virtual Private Cloud
EC2 - Elastic Compute Cloud
PROJECT : Java App in CI/CD : Git / Jenkins / Docker Hub / EC2 via SSH
ECR - Elastic Container Registry (AWS Docker Hub)
CLI - Client Line Interface (and CloudShell)
S3 - Simple Storage Service
PROJECT : Java App CI/CD : Git / Jenkins / AWS ECR / AWS EC2 via SSH and Docker Compose for the Run
ADDON
Set the terminal prompt with the EC2 instance’s name (tag)
Understand the difference between SSH and SSM (need IAM privileges)
PROJECT : Java App CI/CD : Git / Jenkins / AWS ECR / AWS EC2 via SSM and Docker Compose for the Run
PART 1
Introduction to Kubernestes (K8s)
Basic Concepts and Main K8s Components
Kubernetes Architecture
Minikube and kubectl - Local Setup
CLI - Main kubectl commands
YAML - Introduction to Configuration File
PROJECT : deploying an app and a database : Mongo DB & Express
PART 2
Namespaces - Organize components
Services - Configure connectivity
Ingress - Make App available
Volumes - Persisting data
Config Map & Secret - set as Volumes Types
I’m currently at this stage and will continue on …
Deploy stateful Apps - Statefulset
Package Manager of K8s - Helm
Extended the K8s API - Operator
PART 3
Introduction to Managed Kubernetes Services
Helm - Package Manager of Kubernetes
Helm Demo: Install a Stateful Application on Kubernetes using Helm
Demo: Deploy App from Private Docker Registry
Extending the K8s API with Operators
Secure your cluster - Authorization with RBAC
Microservices in Kubernetes
Demo project: Deploy Microservices Application
Production & Security Best Practices
Demo project: Create Helm Chart for Microservices
Demo project: Deploy Microservices with Helmfile
before moving on to the DevSecOps Bootcamp …