Okay, I love to post free examples/projects on my github from while to while, i choose docker and kubernetes this time, the project idea it’s very nice and easy to implement.
What this project do ?
This can be a simple web app that reads a ‘hello world’ string from the MySQL database.Run a database app. Data volume should be persistent.Application from step 1 needs to discover the database from step 2 using Kubernetes native features. Database credentials should NOT be hardcoded in application or helm chart code.The application should be accessible from the outside of Kubernetes.Create a helm chart which implements all these steps
Create an application that connects to a database, reads some data, and returns this data upon HTTP request, This can be a simple web app that reads a ‘hello world’ string from the MySQL database.
Run a database app. Data volume should be persistent.
Application from step 1 needs to discover the database from step 2 using Kubernetes native features, Database credentials should NOT be hardcoded in application or helm chart code.
The application should be accessible from the outside of Kubernetes.
Create a helm chart which implements all these steps
I Choose to use Java as programing language because the springboot frameworkit’s already defined and easy to use.
Please follow the readme file and everything will working fine without any issue, if you have any question comment below and i will answer
DevOps is the union of people, process, and products to enable continuous delivery of value to your end users. Azure DevOps is a set of services that gives you the tools you need to do just that. With Azure DevOps, you can build, test, and deploy any application, either to the cloud or on premises. DevOps practices that enable transparency, cooperation, continuous delivery and continuous deployment become embedded in your software development lifecycle.
Azure DevOps provides several tools you can use for better team collaboration. It also has tools for automated build processes, testing, version control, and package management. That’s quite a bit to cover! We’ll get to all the tools eventually. For now, let’s follow the team as they begin with an overview of what Azure DevOps is and how they can get started.
Agile is a term that’s used to describe approaches to software development, emphasizing incremental delivery, team collaboration, continual planning, and continual learning. Agile isn’t a process as much as it is a philosophy or mindset for planning the work that a team will do. It’s based on iterative development and helps a team better plan for and react to the inevitable changes that occur in software development. Let’s listen in on Mara’s discussion with Andy after the latest release.
Recommendations for adopting Agile
Create an organizational structure that supports Agile practices
Mentor team members on Agile techniques and practices
Enable in-team and cross-team collaboration:- If collaboration is the key to becoming successful at Agile, what are some of the ways you can encourage it? Here are some ideas.
Azure Boards is a tool in Azure DevOps to help teams plan the work that needs to be done. The Tailspin team will use this tool to get a better idea of what work needs to be done and how to prioritize it.
In the Description field, type The Space Game website.
Under Visibility, you choose whether to make your project public or private. For now, you can choose private.
Under Version control, make sure that Git is selected. Under Work item process, make sure that Basic is selected.
Create a team
Select Project settings in the lower-left corner.
On the Project details page, under General, select Teams.
Select Space Game – web Team.
Add team members
Under Members, select + Add.
Enter the email address of the user you’d like to add. Then select Save changes.
Repeat the process for any other members you’d like to add.
Create the board
In the column on the left, point to Boards and select Boards from the menu that appears.
Select Space Game – web Team boards. A blank board appears.
In the To Do column, select the green + button next to the New item field.
Enter Stabilize the build server and then press Enter.
Select the ellipsis (…), and then select Open.
In the Description field, enter this text (The build server keeps falling over. The OS, Ubuntu 16.04, requires security patches and updates. It’s also a challenge to keep build tools and other software up to date.)
Select Save & Close.
Follow the same steps for the next two items.
Create a Git-based workflow
Migrate source code to GitHub and define how we’ll collaborate.
Create unit tests
Add unit tests to the project to help minimize regression bugs.
Drag Stabilize the build server to the top of the stack. Then, drag Create a Git-based workflow to the second item position. Your final board looks like this.
Define a sprint
In the left-side column, select Sprints.
Select Set dates from the upper right.
Leave the name as Sprint 1.
In the Start date field, select the calendar and pick today’s date.
In the End date field, select the calendar and pick the date two weeks from today.
Select Save and Close.
Assign tasks and set the iteration
Under Boards, select Work items.
Select Stabilize the build server.
In the Iteration drop-down list, select Sprint 1.
From the same window, select Unassigned and set yourself as the task owner.
There are different problems category in zabbix which is like the below:-
I will focus in this post on Information and Not Classified Issues.
These two Problem category to inform users about some change in the operating system for example, such as Updating the operating system, or You have CPU utilization, this is not the issue, the problem with these two category they never disappeared from Zabbix Dashboard, and to be honest for me it’s annoying 😅
Therefore, i was trying to find a way to hide these issues, i don’t want to disabled the trigger because in that case it will never appeared and this is not the goal for me,I just want them to be on Dashboard for certain amount of time.
I found two ways for that after investigation, the one will be done from Database level, for example MySQL in my case, the other one via Zabbix Dashboard ( Trigger part) this is the right one and what i want.
To fix this issue from the database , you have to follow the below : –
You should have access to MySQL
Use Zabbix Database
Knowledge of database and Zabbix table, you don’t want to corrupt the database.
there are different tables we need to deal with
You have to know, inside trigger table value column contains two number which 0 (you don’t have any error) and 1 (you have problem)
select * from triggers where description like '%Operating%' and value = 1;
update triggers set value = 0 where description like '%Operating%' and value = 1;
The above Select search for trigger called Operating system and the trigger should have issue, then update this trigger to 0 to assign this issue to ok.
This method i preferred but i had to mentioned the previous one so in case someone wants to use it, in this one you don’t have to access to the database at all.
From The upper panel –> Choose configuration –> Host –> search for your host –> Press on Trigger –> Search for the trigger.
Once you press on the trigger you want, it will show couple of Options , we will care only about “problem expression”
From problem expression press add button and choose the item that related to this trigger.
There is Function inside the zabbix ( Built-in) called nodata takes second as parameter, you can put the item and choose the function then set the time for 10 sec same as the below picture.
Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and deploy it as one package. By doing so, thanks to the container, the developer can rest assured that the application will run on any other Linux machine regardless of any customized settings that machine might have that could differ from the machine used for writing and testing the code.
Why Docker ?
Docker Installation on ubuntu 18.04.3 LTS
In this post, i will show you step by step to install docker on Ubuntu operating system, i prefer to create account on docker hub here.
update the existing list of packages using
sudo apt update
Step #2 :
install prerequisite packages which will let apt use packages over HTTPS
Zabbix is Open Source software used for monitoring the application, Server and networking, and cloud services, zabbix provide metrics, such as network utilization, CPU and disk space .. etc.
In this post i will try to mention everything for Zabbix installation and configuration, include to this some of the issues that you will face during the installation with screenshots, the idea of this post to help people and allow them to understand and simplify the installation/configuration.
You can Refer always to Zabbix documentation which include different versions, remember this post is for Zabbix 4.4.2 and maybe will work on other versions, but never tested before. The documentation HERE.
You can Download Zabbix From HERE, Depends on your operating system and version, Zabbix supporting two different databases during the installation which is MySQL & PostgreSQL.
Once the installation is done, you have to update the timezone for PHP, you can do this by edit the file
Search for the line include word “Date”, remember when you edit the file you will find “;” at start of the line, in php this is comment , so you have to remove and update the timezone, the List of Supported Timezones in php HERE, once you find yours edit the file.
I also attached pictures to show you how the file will look like
Step #2: Before Install Zabbix Server
before install Zabbix server, there are one required step should be done first which is enable the zabbix repository, the download Link (HERE)that mentioned above gave you the steps , again you can find the link here and choose which Operating system Zabbix will be installed on
From the above, once you choose everything, scroll down to find the repository.
Now all the necessary packages has been installed on the operating system, the configuration start from the base which is the database.
Step #4: Create Zabbix Database Schema
Login to MySQL by the below commands to create the database and user.
mysql -uroot -p
Enter the password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Now we have to import the data into the schema we just create, to do this we should run the below command, notice these steps should be done in order otherwise an issue will be appeared, You will be prompted to enter your newly created password.
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -u zabbix -p zabbix
Step #5: Configure Zabbix file to access the database.
Edit the following file
Search for the following Lines using your favorite editor either vi, vim , nano .. etc
Before doing this, which is access to above Link, i faced an issue, which is i was 100% everything is Ok, but everytime i access the link, HTTP response code with 404 NOT FOUND, i was searching about this, and the solution was like the following
Step #7: complete the configuration via Zabbix Web Installer.
Zabbix Setup Welcome Screen
Check for pre-requisites
to solve the above you have to fix the value from one file which is
and search for the option, for example, post_max_size the current value is 8M just change to 16M and So on, remember after you change the value you have to restart the Apache to take the effect and then check the pre-requisites again.
Configure DB Connection
Enter database details created in Step #4 and click next to continue.
Zabbix Server Details
This is the host and port of running Zabbix server, Don’t change the values of the port and host, no need to do that, since it’s running on the same server, for the Name, you can give name for the instance.
This is the first blog post for the 2020, i Wish everyone will have healthy and wonderful year, may your dreams come true.
I post recently or let’s say Last Year about Full automation project using DevOps tools, and i didn’t to be honest except that much download and questions on that post. you can read it from here.
I decided to create new project but this time to show the power of DevOps and how to use it more in your daily Job, task or even configuration.
The idea of this project like the following:-
You have two code, one Go based application, one Java-based application. Both are providing an HTTP service with the same endpoints.
The Endpoints which is :-
A static site. Should not appear in the final setup as it is but redirect to /hotels.
JSON object containing hotel search results
Exposes the health status of the application
Exposes metrics of the application
We have to setup Load Balancer for this application to be like the following :-
traffic distribution should be as follows: 70% of the requests are going to the application written in Go, 30% of the requests are going to the application written in Java, also i will do it using Docker
I upload the code, and the application ( the two part which is Go application and Java) to my Github HERE, all the configuration has been uploaded to my github,
The Solution files like the below;
docker-compose.yml file in root directory is the main compose file for setting up containers for all services
go-app directory contains binary of Golang Application and Dockerfile of relavant setup
java-app directory contains binary of Java Application and Dockerfile of relavant setup
load-balancer directory contains nginx.conf file which is configuration file of Nginx and have load balancer rules written in it. And containers a Dockerfile for setting up Nginx with defined configurations
The final architecture will be like this instead of the image you saw above
The aim of test is to create a simple HTTP service that stores and returns configurations that satisfy certain conditions. Since I love automating things, the service should be automatically deployed to kubernetes.
You can read more about the project, once you access to my GitHub using the README.MD, I explained the project step by step also the documentation explained every thing.
the code has been uploaded to GitHub, include to this, the documentation uploaded to Slide-share.