Monday, December 20, 2021

Install SonarQube using Docker | Install SonarQube using Docker on Ubuntu 24.0.4 | Install SonarQube using Docker-Compose

How to setup SonarQube using Docker compose?

SonarQube is static code analysis tool. It is open source and Java based tool. SonarQube can be setup using Docker Compose with less manual steps.

What is Docker Compose?
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. Since Docker Compose lets you configure related containers in a single YAML file, you get the same Infrastructure-as-Code abilities as Kubernetes. But they come in a simpler system that’s more suited to smaller applications that don’t need Kubernetes’ resiliency and scaling.
 
The purpose of docker-compose is to function as docker cli but to issue multiple commands much more quickly. To make use of docker-compose, you need to encode the commands you were running before into a docker-compose.yml file
 
Run docker-compose up and Compose starts and runs your entire app.

SonarQube Architecture



SonarQube have three components namely
1. Scanner - This contains scanner and analyser to scan application code.
2. SonarQube server - contains Webserver(UI) and search server 
3. DB server - used for storing the analysis reports.

Watch steps in YouTube channel:


Pre-requisites:

  • New Ubuntu 24.0.4 EC2 instance with at least t2.medium (4 GB RAM)
  • Port 9000 is opened in security firewall rule
  • Make sure below is taken care off.

Login to SonarQube EC2 instance using git bash or iTerm, perform below command to configure virtual memory permanently for SonarQube to function:
sudo nano /etc/sysctl.conf

Add the following lines to the bottom of that file by scrolling all the way down:

vm.max_map_count=262144
fs.file-max=65536

Press Ctrl + O and Enter for saving the file.

Press Ctrl + X for exiting the file after saving.

To make sure changes are getting into effect:
sudo sysctl -p

Change Host Name to SonarQube
sudo hostnamectl set-hostname SonarQube

Perform System update
sudo apt update

Install Docker-Compose
sudo apt install docker-compose -y

Create docker-compose.yml
this yml has all configuration for installing both SonarQube and Postgresql:
sudo vi docker-compose.yml 

(press I or insert button and then Copy the below code high-lighted in yellow color)
version: "3"
services:
  sonarqube:
    image: sonarqube:community
    restart: unless-stopped
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
    ports:
      - "9000:9000"
  db:
    image: postgres:12
    restart: unless-stopped
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data
volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  postgresql:
  postgresql_data:

Press escape button and then 
Save the file by entering :wq!

Now execute the compose file using Docker compose command:
sudo docker-compose up -d 


Make sure SonarQube is up and running by checking the logs
sudo docker-compose logs --follow


Once you see the message, that's it. SonarQube is been installed successfully. press control C and enter.
Now access sonarQube UI by going to browser and enter public dns name with port 9000

Please follow steps for integrating SonarQube with Jenkins
https://www.coachdevops.com/2020/04/how-to-integrate-sonarqube-with-jenkins.html

Sunday, December 5, 2021

How to migrate a Git Repo from GitHub to Azure Repos? | Migrate a Code from GitHub to Azure Repos including Full History | Import Project from GitHub into Azure Repo

How to migrate a Git Repo from GitHub to Azure Repos including all history?


Pre-requisites:
1. GitHub repo setup in GitHub
2. Azure DevOps account setup and project dashboard created.

Steps to migrate an existing repo from GitHub to Azure Repos
There are many ways to migrate from one Git repo to another Git repo. We will learn how to migrate using UI.

Using import option
You can easily migrate or import a Repo from GitHub into Azure Repos using import option. This will include importing all the branches and history.

1. Login to Azure Repos first. Create a target repo. You will be importing a GitHub Repo into this Repo.

2. Do not check Add a README file option, click on Create

3. Click on import repo

4. Enter source repo details like GitHub Repo url, and select Requires authentication checkbox.

enter username and Personal Access Token or password.


5. Click Import
6. Now you will see GitHub repo fully imported here including history + all the branches.

Monday, November 8, 2021

How to Deploy Docker Containers into AKS cluster using Azure Pipelines | Deploy Docker Image into AKS cluster using Azure Release Pipelines

We are going to learn how to deploy Docker containers into Azure Kubernetes Cluster(AKS) using Azure pipelines. We will take a simple python app, create docker image and deploy docker image into AKS cluster using Azure pipelines.


Watch the steps in YouTube channel:


Pre-requisites:

1. AKS cluster needs to be up running. You can create AKS cluster using one of the below options:

2. ACR is also setup in Azure cloud. 
3. Already created Azure DevOps dashboard in 
4. Dockerfile created along with the application source code

Implementation Steps
Step 1 - Create Azure Build pipeline for building Docker images and uploading into ACR
Step 2 - Create Azure Release pipeline for deploying Docker containers into AKS
 
Step 1 - How to create a Azure Build Pipeline

1. Login into your Azure DevOps dashboard
2. Click on Pipelines.

3. Click on New Pipeline

4. Click on use the classic editor
Enter your repo name and branch name where you have stored your source code along with Dockerfile

Click on Continue. Now choose the template by typing Docker, Select Docker container and Apply.
 

Now pipeline is created with two tasks already. We need to configure it.

Let's modify Build an image task.


Select Push an image task

Add a task for Copying YAML file, enter the Kubernetes deployment YAML file

Add Publish artifact task


Now click Save + Queue and run to start Building the pipeline



Once the build is completed, you should be able to see the Docker images under 
Services --> Repositories


Step 2 - How to Create Release pipeline for deploying Docker containers into AKS Cluster 

Go to Pipelines --> Click on Releases --> New Release pipeline

Click on Stage 1 and choose a template by selecting
Deploy to a Kubernetes cluster and click on Apply


Change the stage name to Deploy to AKS


Now click on Add an artifact


Select the Build pipeline and click on the latest version

Now click on Deploy to AKS stage
Click on kubectl apply


Now Click on New to enter AKS cluster connection info


Choose the Azure subscription and enter Microsoft user credentials.



Select AKS cluster from the drop down, choose default namespace


Choose command as apply and select the yaml file from the dropdown from Configuration file 



Now click on Save,
Click on Create a release
and then click Create to run the deployment


Click on Stage to see the logs

Now you will the following tasks are in green to confirm Deployment was successful.


Let's check if deployment created any pods

kubectl get deployments

kubectl get pods

kubectl get svc



Now try to access application running inside AKS cluster by using external IP and port number


Go to the browser enter http://external IP:5000



Thursday, October 28, 2021

Configure ACR integration for existing AKS clusters | Authenticate with Azure Container Registry from Azure Kubernetes Service

When you're using Azure Container Registry (ACR) with Azure Kubernetes Service (AKS), an authentication mechanism needs to be established. 

To allow an AKS cluster to interact with ACR, an Azure Active Directory managed identity is used. 

Create Resource Group

Make sure you are login to Azure portal first.

az login

You need to create a resource group first.

az group create --name myResourceGroup --location southcentralus

Create AKS cluster with 2 worker nodes

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --enable-addons monitoring --generate-ssh-keys

az aks show --name myAKSCluster --resource-group myResourceGroup

The above command should display Cluster exists in Azure portal

Create Azure Container Registry

Run the below command to create your own private container registry using Azure Container Registry (ACR).

az acr create --resource-group myResourceGroup --name myacrrepo31 --sku Standard --location southcentralus

Connect to the cluster

 az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --overwrite-existing

To verify the connection to your cluster, use the kubectl get command to return a list of the cluster nodes.

kubectl get nodes

 



For Deploying Docker images from ACR into AKS Cluster

The following command allows you to authorize an existing ACR in your subscription and configures the appropriate ACRPull role for the managed identity.

az aks update -n myAKSCluster -g myResourceGroup --attach-acr myacrrepo31

To Detach ACR from AKS use below command

az aks update -n myAKSCluster -g myResourceGroup --detach-acr myacrrepo31


Sunday, October 17, 2021

How to Setup SonarQube on Azure VM | Install SonarQube Server on Ubuntu 18.0.4 VM in Azure Cloud

SonarQube is one of the popular static code analysis tools. SonarQube enables developers to write cleaner, safer code. SonarQube is open-source, Java based tool. SonarQube uses database for storing analysis results. Database can be MS SQL, Oracle or PostgreSQL.  We will use PostgreSQL as it is open source as well.

SonarQube Architecture:



SonarQube have three components namely
1. Scanner - This contains scanner and analyser to scan application code.
2. SonarQube server - contains Webserver(UI) and search server 
3. DB server - used for storing the analysis reports.

Please find steps for installing SonarQube on Ubuntu 18.0.4 in Azure Cloud. Make sure port 9000 is opened in firewall rules.

 

Pre-requisites:
Instance should have at least 2 GB RAMMake sure port 9000 is opened as port 9000 is default port for SonarQube.

Click here to learn to setup Azure VM.

How to open port 9000 in Azure VM?

1. Select VM, under Settings--> choose Network


2. Click on Add inbound security role

 
3. Make sure you add entries like below: 
9000 as Destination port ranges
TCP as protocol
310 as priority number
port_9000 as Name

 4. Click on Add, once you add it should be like below:



Let us start with java install (skip java install if you already have it installed).

Change Host Name to SonarQube
sudo hostname SonarQube

Install Open JDK 11

sudo apt-get update && sudo apt-get install default-jdk -y

Postgres DB Setup

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
 
 
 
sudo wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

 

sudo apt-get -y install postgresql postgresql-contrib


Ignore the message in red color below:

sudo systemctl start postgresql
sudo systemctl enable postgresql

Login as postgres user
sudo su - postgres

Now create a user below by executing below command
createuser sonar

9. Switch to sql shell by entering
psql







Execute the below three lines (one by one)

ALTER USER sonar WITH ENCRYPTED password 'password';

CREATE DATABASE sonarqube OWNER sonar;

 GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

Now to come out of Postgres by below command and press enter

\q





and then type exit to come out of postgres user.





3. Download SonarQube and Install

sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.6.0.39681.zip
sudo apt-get -y install unzip

sudo unzip sonarqube*.zip -d /opt




sudo mv /opt/sonarqube-8.6.0.39681 /opt/sonarqube -v




Create Group and User:
sudo groupadd sonarGroup

Now add the user with directory access
sudo useradd -c "user to run SonarQube" -d /opt/sonarqube -g sonarGroup sonar 
sudo chown sonar:sonarGroup /opt/sonarqube -R

Modify sonar.properties file
sudo vi /opt/sonarqube/conf/sonar.properties
uncomment the below lines by removing # and add values highlighted yellow
sonar.jdbc.username=sonar
sonar.jdbc.password=password





Next, add the below line:
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

 
 

Now press escape button, and enter :wq! to come out of the above screen.

Edit the sonar script file and set RUN_AS_USER
sudo vi /opt/sonarqube/bin/linux-x86-64/sonar.sh
Add enable the below line 
RUN_AS_USER=sonar








Setup SonarQube as a service(this will enable to start automatically when you restart the server)

Execute the below command:

sudo vi /etc/systemd/system/sonar.service











add the below code in green color:
[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=forking

ExecStart=/opt/sonarqube/bin/l
inux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/li
nux-x86-64/sonar.sh stop
LimitNOFILE=131072
LimitNPROC=8192
User=sonar
Group=sonarGroup
Restart=always


[Install]
WantedBy=multi-user.target

Save the file by entering :wq!
 
Kernel System changes
we must make a few modifications to a couple of kernel system limits files for sonarqube to work.
sudo vi /etc/sysctl.conf

Add the following lines to the bottom of that file:

vm.max_map_count=262144
fs.file-max=65536

Next, we're going to edit limits.conf. Open that file with the command:

sudo vi /etc/security/limits.conf

At the end of this file, add the following: 

sonar   -   nofile   65536
sonar   -   nproc    4096


Reload system level changes without server boot
sudo sysctl -p

Start SonarQube Now
sudo systemctl start sonar

sudo systemctl enable sonar

sudo systemctl status sonar

Now wait for SonarQube to come up after you executed above commands, It will take a few mins to come up.
type q now to come out of this mode.
Now execute the below command to see if Sonarqube is up and running. This may take a few minutes.

tail -f /opt/sonarqube/logs/sonar*.log

Make sure you get the below message that says sonarqube is up..

Now access sonarQube UI by going to browser and enter public dns name with port 9000

🚀 Live AI-Enabled DevSecOps & Cloud Engineering Bootcamp – Sep 2026

Live AI-Enabled DevSecOps & Cloud Engineering Bootcamp from Coach AK - Sep 2026 Schedule