🔴 FREE LIVE WEBINAR

How to Become a DevOps Engineer in 2027

Saturday, November 21st | 9:30 AM CST

Live DevSecOps Demo • Career Roadmap • Live Q&A

🚀 RESERVE YOUR FREE SEAT

100% FREE | Live on Zoom | Hosted by Coach AK

Learn More About the Webinar

Friday, November 13, 2026

FREE LIVE WEBINAR | How to Become a DevOps Engineer in 2027

 🚀 Your Future in DevOps Starts Here!

New Skills. New Opportunities. A New Career Direction.

The world of technology is evolving faster than ever. DevOps, Cloud Engineering, Cybersecurity and AI are shaping the future.

Are you ready for 2027?

Join Coach AK for a FREE, interactive live webinar and discover how to start or accelerate your DevOps career — even if you're starting from zero.

📅 November 21st, 2026 | Saturday

9:30 AM CST • Live on Zoom • 100% FREE

👉 RESERVE YOUR FREE SEAT NOW!


🔥 Not Just a Webinar. A Real Learning Experience.

🗺️ Discover — Your step-by-step DevOps career roadmap for 2027.

💻 Experience — A real-world DevSecOps CI/CD pipeline demonstrated LIVE.

🤖 Explore — How AI is transforming DevOps and Cloud Engineering.

💬 Connect — Get your career and technical questions answered directly by Coach AK.


From Curious to Confident.

Whether you're a beginner, a career changer or an experienced IT professional looking to upskill, this session is designed for YOU.

No prior DevOps experience required. Just curiosity and a willingness to learn.


Learn from Experience.

Coach AK — Architect | Trainer | Mentor

25+ Years of IT Experience

3,500+ Students Trained Since 2017

One Passion: Helping People Transform Their Careers.


🎯 Make 2027 Your Year of Growth.

One session could give you the clarity and direction you've been looking for.

🚀 REGISTER NOW — IT'S FREE!

Your Zoom joining link will be emailed immediately after registration.

See you LIVE!

Coach AK | Cloudamy

Learn. Lead. Transform.

🚀 Your DevOps & AI Career Starts Here! | New Weekend Bootcamp – December 5th, 2026


🎯 Not Sure If DevOps Is the Right Career for You?

Let's talk!

Schedule a FREE one-on-one career consultation with Coach AK to discuss your background, career goals and how this bootcamp can help you move forward.

No pressure. No obligation. Just an opportunity to explore your future.

👉 Book Your FREE Career Consultation

🏆 Real Students. Real Skills. Real Career Transformations.

Since 2017, Coach AK has trained over 3,500 students from diverse professional backgrounds.

From beginners to experienced IT professionals, our students have developed practical skills, gained confidence and pursued new career opportunities.

Hear directly from our students about their learning experiences.

Your success story could be next!

❓ Frequently Asked Questions

Can I join without an IT background?

Yes! The program is beginner-friendly and designed to help you build your technical foundation step by step.

Do I need programming experience?

No prior programming experience is required to get started.

Can I attend while working full-time?

Absolutely! Our weekend schedule is designed for working professionals.

Will I receive support during hands-on labs?

Yes! You'll receive technical guidance and access to a dedicated student support community.

Will you help with resume and interview preparation?

Yes! Career guidance, resume preparation and interview support are part of the program.

👉 View All Frequently Asked Questions

Free 2027 AI-Enabled DevSecOps Career Roadmap – From Beginner to DevOps Champion

FREE 2027 CAREER GUIDE

From Zero to DevOps Champion!

Your Career. Your Future. Your Roadmap.

Become a DevOps Engineer in 2027 — Even If You're Starting From Zero.

The skills you need. The tools to master. The roadmap to get there.

📥 Get My FREE Roadmap

100% FREE • Beginner-Friendly • PDF Guide

3,500+ Students Trained
25+ Years in IT
70+ Hands-On Labs

🎁 Get Your FREE 2027 Roadmap

Discover what to learn, where to start, and how to build your DevOps career.

Enter your name and email address to receive your free PDF guide.

100% Free. No obligation. Unsubscribe anytime.

🎯 Does This Sound Like You?

I want to get into IT but don't know where to start.
I'm overwhelmed by the number of DevOps tools.
I want to transition into DevOps or Cloud Engineering.
I want to learn how AI is transforming DevOps.
I want to build practical skills and grow my career.

This roadmap was created for YOU!

🗺️ Your Journey in 9 Powerful Steps

A structured learning path from fundamentals to AI-enabled engineering.

💻

01. Foundations

Linux, Git, Python, Shell Scripting, Maven, YAML

☁️

02. Cloud Platforms

AWS, Azure, Virtual Machines

⚙️

03. SCM & CI/CD

Jenkins, GitHub Actions, GitLab, Azure DevOps, Nexus

🛡️

04. DevSecOps

SonarQube, Trivy, Quality Gates, Security Scanning

🏗️

05. Infrastructure as Code

Terraform, Ansible

📦

06. Containers & Kubernetes

Docker, Kubernetes, Helm, ECR, ACR

🚀

07. Cloud-Native Deployments

Amazon EKS, Azure AKS, Azure App Service, Microservices

📊

08. Observability & SRE

Prometheus, Grafana, Alertmanager

🤖

09. AI-Enabled DevOps

AI-Assisted CI/CD, AI Automation, AI Agents

AI-Assisted Learning & Automation Throughout the Journey

🎁 What's Inside Your FREE Guide?

🗺️ A Clear Learning Path
Know what to learn and in what order.
🛠️ Industry-Relevant Tools
Discover the technologies used in modern DevOps environments.
🚀 Hands-On Learning
Explore practical projects and real-world engineering workflows.
🤖 AI-Enabled DevOps
Discover how AI is transforming automation and software delivery.
💼 Career Preparation
Understand the skills needed to prepare for DevOps and Cloud Engineering opportunities.

👨‍🏫 Meet Your Coach

Coach AK — Ananth Kannan

DevOps & Cloud Architect | TOGAF Certified Architect | Career Mentor

With over 25 years of IT experience and more than 3,500 students trained since 2017, my passion is helping aspiring engineers develop real-world technical skills.

My teaching approach combines practical hands-on labs, enterprise engineering concepts, AI-enabled learning and personalized career guidance.

You don't need to be an expert to start. You need the right guidance, consistent practice and a clear roadmap.

Your Next Chapter Starts Today.

Imagine where you could be a year from now if you started learning today.

Stop Guessing. Start Learning.

📥 Get My FREE 2027 Roadmap

Free PDF Guide • No Obligation

Ready to Accelerate Your Learning?

Explore our live, instructor-led AI-Enabled DevSecOps & Cloud Engineering Bootcamp.

70+ Hands-On Labs • Live Coaching • Real-World Projects • Resume Guidance • Interview Preparation

Explore the Bootcamp →

Questions? Contact Coach AK

💬 Connect on WhatsApp

Coach AK | Cloudamy

Learn. Lead. Transform.

Skills Build Careers. Change Lives!

Wednesday, September 30, 2026

How to Configure GitLab Runner with Docker Executor on Ubuntu 24.04 EC2

How to Configure GitLab Runner with Docker Executor on Ubuntu 24.04 EC2

In this tutorial, we will configure a self-hosted GitLab Runner with Docker Executor on an AWS EC2 Ubuntu 24.04 instance.

With the Docker executor, each GitLab CI/CD job runs inside an isolated Docker container. This allows the same runner to execute pipelines using different environments such as Maven, Python, Node.js, or Ubuntu without installing all of those tools directly on the EC2 instance.

Architecture

Developer → GitLab Repository → GitLab CI/CD Pipeline → Self-Hosted GitLab Runner → Docker Executor → Docker Container → Execute CI/CD Job

Prerequisites

Before starting, make sure you have:

For a learning environment, an EC2 instance with at least 2 GB RAM is recommended.


Step 1 — Connect to Ubuntu EC2

SSH into the EC2 instance:

ssh -i your-key.pem ubuntu@<EC2-PUBLIC-IP>

Verify the operating system:

cat /etc/os-release

You should see Ubuntu 24.04 LTS.


Step 2 — Update Ubuntu

Update the package information:

sudo apt update

Step 3 — Install Docker

Install Docker:

sudo apt install docker.io -y

Start Docker:

sudo systemctl start docker

Enable Docker during system startup:

sudo systemctl enable docker

Verify:

sudo systemctl status docker

Check the Docker version:

docker --version

Step 4 — Test Docker

Run:

sudo docker run hello-world

If Docker is configured correctly, Docker downloads the test image and starts a container.


Step 5 — Install GitLab Runner

Add the official GitLab Runner repository:

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

Install GitLab Runner:

sudo apt install gitlab-runner -y

Verify:

gitlab-runner --version

Check the service:

sudo systemctl status gitlab-runner

Step 6 — Allow GitLab Runner to Access Docker

The GitLab Runner service normally runs using the gitlab-runner Linux account.

Add that account to the docker group:

sudo usermod -aG docker gitlab-runner

Restart Docker:

sudo systemctl restart docker

Restart GitLab Runner:

sudo systemctl restart gitlab-runner

Now verify that the GitLab Runner account can communicate with Docker:

sudo -u gitlab-runner docker info

If this command works successfully, the runner should be able to use the Docker executor.


Step 7 — Create a Runner in GitLab

Open your GitLab project.

Navigate to:

Settings → CI/CD → Runners

Create a new project runner.


You can configure a runner tag such as:

docker


GitLab will provide a runner authentication token.

Keep this token secure.



Step 8 — Register the GitLab Runner

On your Ubuntu EC2 instance, run:

sudo gitlab-runner register

Enter the GitLab URL:

https://gitlab.com/

Enter the runner authentication token provided by GitLab.

When prompted for the name for the runner, enter:

docker-runner

When prompted for the executor, enter:

docker

When prompted for the default Docker image, enter:

ubuntu:24.04

The runner should now be registered.


Step 9 — Verify the Runner

List configured runners:

sudo gitlab-runner list

Verify connectivity with GitLab:

sudo gitlab-runner verify

Check the service:

sudo systemctl status gitlab-runner

Go back to:

GitLab → Project → Settings → CI/CD → Runners

The runner should appear online.



Step 10 — Review GitLab Runner Configuration

The system-mode GitLab Runner configuration is normally stored here:

sudo cat /etc/gitlab-runner/config.toml

You should see configuration similar to:

[[runners]]
  name = "ubuntu-docker-runner"
  executor = "docker"

  [runners.docker]
    image = "ubuntu:24.04"

The exact configuration generated by your GitLab Runner version can contain additional settings.


Step 11 — Create a Simple GitLab CI/CD Pipeline

Create a file in the root of your GitLab repository:

.gitlab-ci.yml

Add:

stages:
  - test

test-docker-runner:
  stage: test
  tags:
    - docker
  image: ubuntu:24.04

  script:
    - echo "GitLab Docker Runner is working!"
    - hostname
    - whoami
    - cat /etc/os-release

Commit and push the file.

GitLab should automatically start a pipeline.


Step 12 — Verify the Pipeline

The pipeline flow is:

GitLab Repository
↓
GitLab CI/CD Pipeline
↓
Self-Hosted GitLab Runner
↓
Docker Executor
↓
Pull ubuntu:24.04 Docker Image
↓
Create Temporary Container
↓
Execute CI/CD Commands
↓
Job Completes

The job container is temporary. GitLab Runner creates the container for the job and removes it after the job finishes.


Understanding Docker Executor

One of the major advantages of Docker executor is that the EC2 instance does not need every development tool installed directly on the host.

For example, a Maven job can use:

build:
  image: maven:3.9-eclipse-temurin-17
  script:
    - mvn clean package

Another job on the same runner could use:

test:
  image: ubuntu:24.04
  script:
    - echo "Running Ubuntu container"

Therefore, a single Docker executor can support many different CI/CD workloads.


Common Error 1 — Docker Socket Permission Denied

You may encounter:

permission denied while trying to connect to the Docker daemon socket
unix:///var/run/docker.sock

Check Docker access:

sudo -u gitlab-runner docker info

If access is denied, make sure the runner account belongs to the Docker group:

sudo usermod -aG docker gitlab-runner
sudo systemctl restart docker
sudo systemctl restart gitlab-runner

Test again:

sudo -u gitlab-runner docker info

Common Error 2 — ubuntu-latest Image Cannot Be Pulled

You may see:

Failed to pull image "ubuntu-latest"

pull access denied for ubuntu-latest,
repository does not exist

Do not use:

ubuntu-latest

That naming is commonly seen with GitHub Actions runners:

runs-on: ubuntu-latest

For a Docker image, specify the repository and tag:

ubuntu:24.04

For example:

image: ubuntu:24.04

If the default image is configured incorrectly, edit:

sudo nano /etc/gitlab-runner/config.toml

Change:

image = "ubuntu-latest"

to:

image = "ubuntu:24.04"

Then restart:

sudo systemctl restart gitlab-runner

Common Error 3 — Job Stuck in Pending

If you see:

This job is in pending state and is waiting to be picked by a runner

Check whether the runner is online:

sudo gitlab-runner verify

Check the service:

sudo systemctl status gitlab-runner

Also verify that the tags in .gitlab-ci.yml match the tags assigned to the GitLab Runner.

For example:

tags:
  - docker

requires a runner capable of accepting jobs with the docker tag.


Common Error 4 — Runner Started in User Mode

If you run:

gitlab-runner run

without sudo, you may see:

WARNING: Running in user-mode.
Starting multi-runner from /home/ubuntu/.gitlab-runner/config.toml

For a server-based self-hosted runner, it is generally better to install and operate GitLab Runner as a system service.

Register using:

sudo gitlab-runner register

The system configuration is then normally maintained under:

/etc/gitlab-runner/config.toml

Manage the runner using:

sudo systemctl start gitlab-runner
sudo systemctl stop gitlab-runner
sudo systemctl restart gitlab-runner
sudo systemctl status gitlab-runner

Useful Troubleshooting Commands

Check GitLab Runner:

sudo gitlab-runner list

Verify registered runners:

sudo gitlab-runner verify

Check Runner service:

sudo systemctl status gitlab-runner

Check Runner logs:

sudo journalctl -u gitlab-runner -f

Check Docker:

sudo systemctl status docker

Check Docker access for the runner:

sudo -u gitlab-runner docker info

List running containers:

docker ps

List all containers:

docker ps -a

Conclusion

We successfully configured a self-hosted GitLab Runner using Docker Executor on an Ubuntu 24.04 AWS EC2 instance.

The architecture is:

Developer → GitLab → GitLab CI/CD → Self-Hosted Runner → Docker Executor → Job Container

Using Docker executor provides isolation and flexibility because different CI/CD jobs can use different container images without requiring every build tool to be installed directly on the runner EC2 instance.

You can now extend this setup to build real CI/CD pipelines using:

  • Maven and Java
  • SonarQube
  • Trivy
  • Docker
  • Terraform
  • Python
  • Node.js
  • Other DevSecOps tools
Here is YouTube Video:

Friday, September 25, 2026

How to Integrate SonarQube & Trivy with GitLab CI/CD | DevSecOps Pipeline with Quality Gate

In this tutorial, we will integrate Trivy and SonarQube with GitLab CI/CD to build a DevSecOps pipeline for a Java web application.

The pipeline will automatically:

Build → Trivy Security Scan → SonarQube Code Analysis + Quality Gate → Deploy to Tomcat

Pipeline Flow

Developer → GitLab → GitLab Runner → Maven Build → Trivy Scan → SonarQube Scan + Quality Gate

PASS → Deploy WAR → Tomcat → Java Web Application

FAIL → Pipeline Stops → No Deployment 

Prerequisites

Before starting this lab, make sure the following are ready:


What We Will Implement

We will perform the following steps:

  1. Generate a SonarQube authentication token.
  2. Configure SonarQube and Tomcat credentials as GitLab CI/CD variables.
  3. Create a .gitlab-ci.yml pipeline.
  4. Build the Java application using Maven.
  5. Scan the project using Trivy.
  6. Analyze the source code using SonarQube.
  7. Enforce the SonarQube Quality Gate.
  8. Deploy the WAR file to Tomcat only when all previous stages succeed.


What is Trivy?

Trivy is an open-source security scanner used in DevSecOps pipelines to identify vulnerabilities and other security issues. In this lab, we use Trivy to scan the application filesystem and dependencies for HIGH and CRITICAL vulnerabilities.

Trivy → Security/Vulnerability Scanning

SonarQube → Code Quality & Static Code Analysis

Step 1 – Create a SonarQube Token

Login to SonarQube.

Go to:

My Account → Security → Tokens


Enter a token name and generate an analysis token.

Copy the generated token.

Save the token securely. You will add it to GitLab as a CI/CD variable.


Step 2 – Configure GitLab CI/CD Variables

Go to your GitLab project:

Settings → CI/CD → Variables

Click Add variable.

Configure the following variables:

Variable Purpose
SONAR_HOST_URL SonarQube server URL
SONAR_TOKEN SonarQube authentication token
TOMCAT_HOST Tomcat hostname/IP and port
TOMCAT_USER Tomcat Manager username
TOMCAT_PASSWORD Tomcat Manager password

Do not hard-code passwords or tokens inside .gitlab-ci.yml.


Step 3 – Create the GitLab CI/CD Pipeline

Go to the GitLab repository containing your Java project.

Create a new file:

.gitlab-ci.yml

Our pipeline contains four stages:

stages:
  - build
  - security
  - sonar
  - deploy

The pipeline flow is:

Build → Trivy → SonarQube + Quality Gate → Deploy


Step 4 – Complete .gitlab-ci.yml

stages:
  - build
  - security
  - sonar
  - deploy


# -------------------------
# BUILD
# -------------------------

build_war:
  stage: build
  image: maven:3.8.6-eclipse-temurin-11

  script:
    - echo "Building WAR file using Maven"
    - mvn clean package -f MyWebApp/pom.xml
    - echo "Listing target directory"
    - ls -la MyWebApp/target

  artifacts:
    paths:
      - MyWebApp/target/*.war
    expire_in: 1 hour


# -------------------------
# TRIVY SECURITY SCAN
# -------------------------

trivy_scan:
  stage: security
  image:
    name: aquasec/trivy:latest
    entrypoint: [""]

  script:
    - echo "Running Trivy security scan"
    - trivy fs --severity HIGH,CRITICAL --exit-code 1 --no-progress .

  allow_failure: false


# -------------------------
# SONARQUBE CODE ANALYSIS
# -------------------------

sonarqube_scan:
  stage: sonar
  image: maven:3.9.6-eclipse-temurin-17

  variables:
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
    GIT_DEPTH: "0"

  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache

  script:
    - echo "Running SonarQube code analysis"
    - |
      mvn sonar:sonar \
        -f MyWebApp/pom.xml \
        -Dsonar.projectKey=MyWebApp \
        -Dsonar.host.url="${SONAR_HOST_URL}" \
        -Dsonar.token="${SONAR_TOKEN}" \
        -Dsonar.qualitygate.wait=true

  allow_failure: false


# -------------------------
# DEPLOY TO TOMCAT
# -------------------------

deploy_to_tomcat:
  stage: deploy
  image: curlimages/curl:latest

  dependencies:
    - build_war

  script:
    - echo "Deploying WAR file to Tomcat"
    - |
      curl --fail -v \
        -u "${TOMCAT_USER}:${TOMCAT_PASSWORD}" \
        -T MyWebApp/target/MyWebApp.war \
        "http://${TOMCAT_HOST}/manager/text/deploy?path=/MyWebApp&update=true"

Commit the file.


Step 5 – Pipeline Execution

As soon as you commit .gitlab-ci.yml, GitLab creates and starts the pipeline.

Go to:

Build → Pipelines

You should see the pipeline execute in this order:

1. Build

Maven compiles the Java application and generates the WAR file.

↓

2. Trivy Security Scan

Trivy scans the project filesystem and dependencies for known vulnerabilities.

If vulnerabilities matching the configured HIGH or CRITICAL severity threshold are detected, the Trivy command returns a non-zero exit code and the pipeline stops.

↓

3. SonarQube Code Analysis

SonarQube analyzes the application code.

The pipeline waits for the SonarQube Quality Gate result because we configured:

-Dsonar.qualitygate.wait=true

If the Quality Gate fails, the SonarQube job fails and deployment does not proceed.

↓

4. Deploy to Tomcat

Only when the previous stages succeed does GitLab execute the deployment job.

The WAR artifact generated during the build stage is deployed to Tomcat using the Tomcat Manager API.


Step 6 – Verify Trivy Security Scan

Go to:
GitLab → Build → Pipelines → trivy_scan
Review the Trivy scan results in the job log.
If no HIGH or CRITICAL vulnerabilities matching the configured criteria are found, the job passes and the pipeline continues.
If HIGH or CRITICAL vulnerabilities are detected, the job fails because we configured:
--severity HIGH,CRITICAL --exit-code 1

Step 7 – Verify the SonarQube Report

Login to SonarQube and open the project.

Review the analysis results, including the applicable:

  • Bugs
  • Vulnerabilities
  • Code Smells
  • Security Hotspots
  • Duplications
  • Coverage
  • Quality Gate status

Verify that the Quality Gate shows PASSED.


Step 8 – Verify the Application

After the pipeline completes successfully, open the Java web application running on Tomcat.

http://<TOMCAT-PUBLIC-DNS>:8080/MyWebApp

You should see the deployed Java web application.

The complete DevSecOps workflow is now:

Developer

↓

GitLab Repository

↓

GitLab Runner

↓

Maven Build

↓

Trivy Security Scan

↓

SonarQube Code Analysis

↓

Quality Gate

↓

Tomcat Deployment

↓

Java Web Application

Key Takeaway

GitLab manages and orchestrates the CI/CD pipeline, while GitLab Runner executes the jobs using the Docker images defined in .gitlab-ci.yml.

The application is deployed only after the configured Trivy security check and SonarQube Quality Gate succeed, providing security and quality checks before deployment.

YouTube video link:

Tuesday, September 22, 2026

How to Integrate HashiCorp Vault with Jenkins Pipeline on Ubuntu 24.04

How to Integrate HashiCorp Vault with Jenkins Pipeline on Ubuntu 24.04 ?

What is HashiCorp Vault?

HashiCorp Vault is a secrets-management platform used to securely store and control access to sensitive information such as:

  • Passwords
  • API tokens
  • Database credentials
  • Cloud credentials
  • GitHub tokens
  • Nexus/Artifactory credentials
  • Deployment credentials

Instead of storing application secrets directly inside Jenkins, Jenkins can authenticate to Vault and retrieve only the secrets required by a pipeline.

Prerequisites

  • Jenkins up and running 
  • New EC2 instance for Vault with port no 22 and 8200 opened

Install HashiCorp Vault on Ubuntu 24.04

Install required packages:

sudo apt update
sudo apt install wget gpg -y

Add the HashiCorp GPG key:

wget -O - https://apt.releases.hashicorp.com/gpg | \
sudo gpg --dearmor \
-o /usr/share/keyrings/hashicorp-archive-keyring.gpg

Add the HashiCorp repository:

echo "deb [arch=$(dpkg --print-architecture) \ signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \ https://apt.releases.hashicorp.com \ $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release) main" | \ sudo tee /etc/apt/sources.list.d/hashicorp.list
Install Vault

sudo
apt update sudo apt install vault -y

Verify Vault version
vault version

Start Vault for the Lab

vault server -dev -dev-listen-address="0.0.0.0:8200"

You'll see something similar to:
Root Token: hvs.xxxxxxxxxxxxx
Save the Root Token.

Note:
Vault development mode should be used only for learning/testing. Do not use dev mode in production.

FREE LIVE WEBINAR | How to Become a DevOps Engineer in 2027

 🚀 Your Future in DevOps Starts Here! New Skills. New Opportunities. A New Career Direction. The world of technology is evolving faste...