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

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 Kubernete…


This content originally appeared on DEV Community and was authored by Binoy

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

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"
}

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

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/

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"

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

Applications

Reference


This content originally appeared on DEV Community and was authored by Binoy


Print Share Comment Cite Upload Translate Updates
APA

Binoy | Sciencx (2024-08-31T20:11:42+00:00) Deploy Jenkins, JFrog, Grafana and Prometheus Applications in Kubernetes Cluster – Terraform. Retrieved from https://www.scien.cx/2024/08/31/deploy-jenkins-jfrog-grafana-and-prometheus-applications-in-kubernetes-cluster-terraform/

MLA
" » Deploy Jenkins, JFrog, Grafana and Prometheus Applications in Kubernetes Cluster – Terraform." Binoy | Sciencx - Saturday August 31, 2024, https://www.scien.cx/2024/08/31/deploy-jenkins-jfrog-grafana-and-prometheus-applications-in-kubernetes-cluster-terraform/
HARVARD
Binoy | Sciencx Saturday August 31, 2024 » Deploy Jenkins, JFrog, Grafana and Prometheus Applications in Kubernetes Cluster – Terraform., viewed ,<https://www.scien.cx/2024/08/31/deploy-jenkins-jfrog-grafana-and-prometheus-applications-in-kubernetes-cluster-terraform/>
VANCOUVER
Binoy | Sciencx - » Deploy Jenkins, JFrog, Grafana and Prometheus Applications in Kubernetes Cluster – Terraform. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/08/31/deploy-jenkins-jfrog-grafana-and-prometheus-applications-in-kubernetes-cluster-terraform/
CHICAGO
" » Deploy Jenkins, JFrog, Grafana and Prometheus Applications in Kubernetes Cluster – Terraform." Binoy | Sciencx - Accessed . https://www.scien.cx/2024/08/31/deploy-jenkins-jfrog-grafana-and-prometheus-applications-in-kubernetes-cluster-terraform/
IEEE
" » Deploy Jenkins, JFrog, Grafana and Prometheus Applications in Kubernetes Cluster – Terraform." Binoy | Sciencx [Online]. Available: https://www.scien.cx/2024/08/31/deploy-jenkins-jfrog-grafana-and-prometheus-applications-in-kubernetes-cluster-terraform/. [Accessed: ]
rf:citation
» Deploy Jenkins, JFrog, Grafana and Prometheus Applications in Kubernetes Cluster – Terraform | Binoy | Sciencx | https://www.scien.cx/2024/08/31/deploy-jenkins-jfrog-grafana-and-prometheus-applications-in-kubernetes-cluster-terraform/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.