Deploy Jenkins, JFrog, Grafana and Prometheus Applications in Kubernetes Cluster - Terraform

Binoy - Aug 31 - - Dev Community

I have created a terraform scripts help set up DevOps applications necessary for application development. The module is hosted in a GitHub repository called "DevOps Terraform Module.".

The following applications will be deployed locally in a Kubernetes cluster.

  • Jenkins
  • JFrog
  • Prometheus
  • Grafana

Image description

Root Main Terraform Script main.tf

module "common" {
  source = "git::https://github.com/developerhelperhub/devops-terraform-module.git//modules/common?ref=v1.1.0"
}

module "devops" {
  source = "git::https://github.com/developerhelperhub/devops-terraform-module.git//devops?ref=v1.1.0"

  kind_cluster_name = var.kind_cluster_name
  kind_http_port    = 80
  kind_https_port   = 443

  kubernetes_namespace = "devops"

  jenkins_service_port   = 8080
  jenkins_enable         = true
  jenkins_domain_name    = var.jenkins_domain_name
  jenkins_admin_username = var.jenkins_admin_username
  jenkins_admin_password = module.common.random_password_16

  jfrog_service_port        = 8082
  jfrog_enable              = true
  jfrog_domain_name         = var.jfrog_domain_name
  jfrog_postgresql_password = module.common.random_password_16

  kube_prometheus_stack_enable = true
  prometheus_service_port      = 9090
  prometheus_domain_name       = var.prometheus_domain_name

  grafana_service_port   = 80
  grafana_domain_name    = var.grafana_domain_name
  grafana_admin_password = module.common.random_password_16

  prometheus_alertmanager_enabled      = true
  prometheus_persistent_volume_enabled = true
  prometheus_persistent_volume_size    = "1Gi"
}
Enter fullscreen mode Exit fullscreen mode

Setup local environment to build DevOps resources

I use docker containers to set up work environments for multiple applications(Setup Environment). This approach ensures fully isolated and maintainable environments for application development, allowing us to easily start and terminate these environments. Below is the Docker command to create the environment.

docker run -it --name test-devops-module-envornment-box -v ~/.kube/config:/work/.kube/config -e KUBECONFIG=/work/.kube/config -v ${HOME}/root/ -v ${PWD}:/work -w /work --net host developerhelperhub/kub-terr-work-env-box
Enter fullscreen mode Exit fullscreen mode

The container contains Docker, Kubectl, Helm, Terraform, Kind, Git

Setup DevOps Applications on Kubernetes Cluster

I have developed all the necessary Terraform scripts, which are available in a GitHub repository. You can download these scripts to set up various DevOps applications, which are deployed on a Kubernetes cluster running locally in a Docker container.

Clone the repository onto your local Linux machine to get started.

git clone https://github.com/developerhelperhub/kuberentes-help.git
cd kuberentes-help/terraform/dev/terraform-module-devops/
Enter fullscreen mode Exit fullscreen mode

Run the following commands to install the resources

terraform init
terraform plan -var="kind_cluster_name=devops-test-cluster"
terraform apply -var="kind_cluster_name=devops-test-cluster"
Enter fullscreen mode Exit fullscreen mode

Note: The Terraform state file should be kept secure and encrypted (using encryption at rest) because it contains sensitive information, such as usernames, passwords, and Kubernetes cluster details etc.

Add our domain to the bottom of the /etc/hosts file on your local machine. This configuration should not be inside our working Linux box “test-jenkins-module-envornment-box”; it should be applied to your personal machine's /etc/hosts file.
(you will need administrator access):

127.0.0.1       jenkins.devops.com
127.0.0.1       jfrog.devops.com
127.0.0.1       prometheus.devops.com
127.0.0.1       grafana.devops.com
Enter fullscreen mode Exit fullscreen mode

Applications

Reference

. . . . . . . . . . . . . . . . .