
{"id":7071,"date":"2022-07-29T14:40:08","date_gmt":"2022-07-29T14:40:08","guid":{"rendered":"https:\/\/rax-stg-wp-aws.com\/blogs\/guide-to-installing-jenkins-x-on-an-aws-eks-cluster-blog-series-pt-3\/"},"modified":"2026-11-03T19:27:45","modified_gmt":"2026-11-03T19:27:45","slug":"guide-to-installing-jenkins-x-on-an-aws-eks-cluster-blog-series-pt-3","status":"publish","type":"blogs","link":"https:\/\/www.rackspace.com\/en-gb\/blogs\/guide-to-installing-jenkins-x-on-an-aws-eks-cluster-blog-series-pt-3\/","title":{"rendered":"Guide to Installing Jenkins X on an AWS EKS Cluster (Blog Series Pt.3)"},"content":{"rendered":"<p><strong>Introduction<\/strong><\/p>\n<p>Jenkins X is an open-source tool that automates CI\/CD workflow for cloud native apps on Kubernetes. It harnesses the power of Kubernetes and let its users use it without knowing internal working of Kubernetes. Jenkins X is a collection of some of the best of breed tools and microservices like <a href=\"https:\/\/kubernetes.io\/\">Kubernetes<\/a>, <a href=\"https:\/\/tekton.dev\/\">Tekton<\/a>, <a href=\"https:\/\/helm.sh\/\">Helm<\/a>, <a href=\"https:\/\/github.com\/jenkins-x\/lighthouse\">Lighthouse<\/a>, <a href=\"https:\/\/www.terraform.io\/\">Terraform<\/a>, <a href=\"https:\/\/octant.dev\/\">Octant(UI)<\/a>], <a href=\"https:\/\/www.vaultproject.io\/\">Hashicorp Vault<\/a>, <a href=\"https:\/\/github.com\/GoogleContainerTools\/kaniko\">Kaniko<\/a>, <a href=\"https:\/\/grafana.com\/\">Grafana<\/a>, <a href=\"https:\/\/prometheus.io\/\">Prometheus<\/a>, <a href=\"https:\/\/github.com\/kuberhealthy\/kuberhealthy\">kuberhealthy<\/a>,&nbsp;etc.<\/p>\n<p><strong>Create Jenkins X cluster git repo<\/strong><\/p>\n<p>Jenkins X provides a cluster git repository template for managing Jenkins X configuration. To change anything in your Jenkins X cluster, open a pull request to this repository. Fork this repository to your GitHub organization account by clicking on this <a href=\"https:\/\/github.com\/jx3-gitops-repositories\/jx3-eks-vault\/generate\">link<\/a>.<\/p>\n<p>The recommended approach to install Jenkins X is via terraform script that is provided by another git repository. Fork this repository into your GitHub organization account via this <a href=\"https:\/\/github.com\/jenkins-x\/terraform-aws-eks-jx\">link <\/a>.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture1_8.png\" alt=\"Jenkins Pic 1\" \/><\/p>\n<p>Now clone this repository into your local and open the project via your favorite IDE.<\/p>\n<p><em>cd terraform-aws-eks-jx\/<\/em><\/p>\n<p>\nOpen <strong>outputs.tf<\/strong> file and modify below parameter<\/p>\n<p><em>vault_user_id:<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>*sensitive: true*<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture2_8.png\" alt=\"Jenkins Pic 2\" \/><\/p>\n<p>Also, open the <strong>variables.tf<\/strong> file and modify the following parameters:&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>cluster_name:&nbsp;<\/p>\n<p>&nbsp; _default: \u201cmy-eks-cluster\u201d_<\/p>\n<p>profile:<\/p>\n<p>&nbsp; _default: \u201cdefault\u201d_<\/p>\n<p>node_group_disk_size:<\/p>\n<p>&nbsp; _default: \u201c20\u201d_<\/p>\n<p>vpc_name:<\/p>\n<p>&nbsp; _default: \u201cmy-eks-vpc-stack-VPC\u201d_<\/p>\n<p>public_subnets:<\/p>\n<p>&nbsp; _default: [&#8220;192.168.64.0\/18&#8221;, &#8220;192.168.0.0\/18&#8221;]_<\/p>\n<p>private_subnets:<\/p>\n<p>&nbsp; _default: [&#8220;192.168.128.0\/18&#8221;, &#8220;192.168.192.0\/18&#8221;]_<\/p>\n<p>vpc_cidr_block:<\/p>\n<p>&nbsp; _default: &#8220;192.168.0.0\/16&#8243;_<\/p>\n<p>is_jx2:<\/p>\n<p>&nbsp; _default: false_<\/p>\n<p>jx_git_url:<\/p>\n<p>&nbsp; _default: (your-cluster-git-repo(jx3-eks-vault)_<\/p>\n<p>jx_bot_username:<\/p>\n<p>&nbsp; _default: (your-new-bot-user)_<\/p>\n<p>create_eks:<\/p>\n<p>&nbsp; _default: false_<\/p>\n<p>create_vpc:<\/p>\n<p>&nbsp; _default: false_<\/p>\n<p>vpc_id:<br \/>\n&nbsp; _default: (vpc-id-of-eks-cluster)_<\/p>\n<p>nginx_chart_version:<br \/>\n&nbsp; _default: \u201c3.12.0\u201d_<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture4_8.png\" alt=\"Jenkins Pic 4\" \/><\/p>\n<p>Save GitHub bot user token as an environment variable<\/p>\n<p><em>export TF_VAR_jx_bot_token=&lt;git-bot-user-token<\/em><\/p>\n<p>To initialize terraform<\/p>\n<p><em>terraform init<\/em><\/p>\n<p>To see potential changes made by Terraform<\/p>\n<p><em>terraform plan<\/em><\/p>\n<p>To execute the install<\/p>\n<p><em>terraform apply<\/em><\/p>\n<p>When prompted for <strong>provider.aws.region<\/strong>, enter the AWS region where your EKS cluster is provisioned.<br \/>\nIf the terraform apply command ran successfully then you will see similar output as below&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture5_7.png\" alt=\"Jenkins Pic 5\" \/><\/p>\n<p><strong>Note:<\/strong> It can take up to 10 minutes to install Jenkins X.&nbsp;<\/p>\n<p>To verify Jenkins X installation<\/p>\n<p><em>jx ns jx<br \/>\nkubectl get es -A<\/em><\/p>\n<p>Expected output:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture6_4.png\" alt=\"Jenkins Pic 6\" \/><\/p>\n<p>\nCheck all pods are running in jx namespace<\/p>\n<p><em>kubectl get pods -n jx<\/em><\/p>\n<p>Expected output:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture7_3.png\" alt=\"Jenkins Pic 7\" \/><\/p>\n<p>Another command to verify successful Jenkins X installation<\/p>\n<p><em>jx verify install<\/em><\/p>\n<p>Expected output:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture8_2.png\" alt=\"Jenkins Pic 8\" \/><\/p>\n<p>\nTo visualize Jenkins X installation and pipelines on UI, run this command. It will automatically open UI in a browser<\/p>\n<p><em>jx ui<\/em><\/p>\n<p>Expected output:&nbsp;<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture9_2.png\" alt=\"Jenkins Pic 9\" \/><\/p>\n<p>Verify ingress is working. Replace &lt;hook-jx\u2026&gt; below with the value of hook\u2019s HOSTS.<\/p>\n<p><em>kubectl get ing -A<br \/>\ncurl -v http:\/\/&lt;hook-jx\u2026&gt;\/hook&nbsp;&nbsp;<\/em><\/p>\n<p>Expected output:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture10_1.png\" alt=\"Jenkins Pic 10\" \/><\/p>\n<p><strong>Troubleshooting Tips:<\/strong><\/p>\n<p><strong>TIP #1&nbsp;<\/strong><\/p>\n<p>If _kubectl get es -A_ gives _404 status error_, it most likely means that the secret generation step in the boot log did not work. One way to re-generate secrets is by making a direct push to the main branch of the cluster git repo (not by creating a pull request).<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture11_1.png\" alt=\"Jenkins Pic 11\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture12_0.png\" alt=\"Jenkins Pic 12\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture12_1.png\" alt=\"Jenkins Pic 12\" \/><\/p>\n<p>&nbsp;To verify successful secret generation, check admin logs using the following command and select the latest log<\/p>\n<p><em>jx admin log<\/em><\/p>\n<p>Expected output:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture13_1.png\" alt=\"Jenkins Pic 13\" \/><\/p>\n<p><strong>TIP #2<\/strong><\/p>\n<p>If ingress controller is not working: &nbsp;<br \/>\n&nbsp;<\/p>\n<p><em>curl -v http:\/\/&lt;hook-jx\u2026&gt;\/hook<\/em><\/p>\n<p>does not give a 200 status code then check your ingress controller pod (nexus-nexus-\u2026) is running via kubectl get pods -n jx&nbsp;<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26243-body-Picture14_0.png\" alt=\"Jenkins Pic 14\" \/><\/p>\n<p>\nVerify this ingress IP is same as Elastic Network Interface (ENI) public IPv4 of the Network Load Balancer (NLB) created during Jenkins X installation.&nbsp;<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>As you can see how easily we can tweak input variables as per our need in terraform script and run only one command *(terraform apply)* to create the entire Jenkins X cluster. Now we can import our application git repository to this Jenkins X cluster and can create multiple pipelines<strong>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog describes how to Install Jenkins X on AWS EKS cluster<\/p>\n","protected":false},"author":2,"featured_media":7073,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","format":"standard","meta":{"content-type":"","nid":"26243","content_type":"blog","created_by":"10130","authored_on":"2023-11-14T15:40:08+00:00","field_article_industries":"","tag_category":"Technical","field_blog_author_text":"by Bachu Paul, Devops Engineer, Rackspace Technology","seo_description":"Get a step-by-step guide on installing Jenkins X on AWS EKS cluster. Automate CI\/CD workflows for cloud-native apps.\r\n","field_featured_image":"","insights_image":"\/wp-content\/uploads\/2026\/blog_technical_images\/26243-insights_image-devops-technical-blog-1-insights.jpg","field_partners":"","rxt_platforms":"Applications","product":"","publisheddate":"2022-07-29T14:40:08","rxt_solutions":"Applications","opengraph_tag":"","x_tag":"","teaser_flag":"Technical Blog","seo_titile":"Installing Jenkins X AWS EKS Cluster | Rackspace Technology","field_topics":"","field_slug":"jenkins-x\u2013an-opinionated-cloud-native-cicd-tool-series-blog-3","footnotes":""},"categories":[178],"tags":[204],"class_list":["post-7071","blogs","type-blogs","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-technical"],"_links":{"self":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/7071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs"}],"about":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/types\/blogs"}],"author":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/comments?post=7071"}],"version-history":[{"count":2,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/7071\/revisions"}],"predecessor-version":[{"id":8859,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/7071\/revisions\/8859"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/media\/7073"}],"wp:attachment":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/media?parent=7071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/categories?post=7071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/tags?post=7071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}