Install and setup questions

Questions on installing and setting up Jenkins X

For more detail check out how to use jx boot.

How do I upgrade boot?

If you are using jx boot you can upgrade via jx upgrade boot. Refer to Upgrading Jenkins X for more information.

If anything ever goes wrong (e.g. your cluster, namespace or tekton gets deleted), you can always re-run jx boot on your laptop to restore your cluster.

How do I add more resources?

Add more resources (e.g. Ingress, ConfigMap, Secret) to your development environment by adding YAML files to the boot env/templates directory.

How do I add new Environments?

Add a new SourceRepository and Environment resource to the env/templates folder for each new environment you want tto create. We’ve only added dev, staging, production currently.

From your running cluster you can always grab the staging SourceRepository and Environment resource via the following (where XXX is the name of the staging repository returned via kubectl get sr):

kubectl get env staging -oyaml > env/templates/myenv.yaml
kubectl get sr XXX -oyaml > env/templates/myenv-sr.yaml

then modify the YAML to suit, changing the names of the resources to avoid clashing with your staging repository.

How to to manage SourceRepository resources?

See how to update your boot configuration with the latest SourceRepository resources

How do I map SourceRepository to a custom Scheduler

You need to map your SourceRepository to a Scheduler via either specifying --scheduler when you jx create quickstart / jx import your repository or modifying the SourceRepository CRD’s in your development git repository or specifying a different default scheduler on the dev then the next time the prow configuration is generated (on jx create quickstart / jx import / jx boot it’ll update the prow config to use your scheduler

See also How do I add multiple parallel pipelines to a project?

How do I add more charts to Jenkins X?

It depends on which namespace you want the charts to be installed.

If its in the development environment (the jx namespace by default) then env/requirements.yaml is where to add the chart and for a chart foo you can add env/foo/values.yaml to configure it. (or env/foo/values.tmpl.yaml if you want to use some templating of the values.yaml)

Though if you want our chart to be in another namespace then we use the convention of adding a folder in the system directory in the boot configuration (e.g. like we do for ingress, cert manager, velero, service mesh etc). So make a new folder in system and add the jx step helm apply step in the pipeline in jenkins-x.yml like we do for cert-manager, nginx, velero etc.

How do I disable the ingress controller?

If you already have your own ingress controller and do not want jx boot to install another one you can just delete the install-nginx-controller step in your dev environment git repository. e.g. remove this step from the jenkins-x.yml in your dev environment git repository

What do I do if jx boot hangs on step-install-jenkins-x?

You may have a problem with Terminating a PVC that is protected.

Describe your pvc. In the case I saw, it was the jenkins pvc.

kubectl -n jx describe pvc jenkins

If it’s stuck in Terminating and you see that the Finalizer has protection:

Finalizers:    []

Then, you can remove the protection by issuing the following command and your install should continue.

kubectl -n jx patch pvc jenkins -p '{"metadata":{"finalizers": []}}' --type=merge

How do I debug issues with terraform and JenkinsX?

Set the TF_LOG environment variable to TRACE, and then run your terraform commands such as terraform apply or terraform plan.

TF_LOG=TRACE terraform apply

Use the global --verbose flag to add more verbosity to the JenkinsX logs:

jx boot --verbose

How to get a clean terraform destroy

The following steps need to be performed before a terraform destroy can be executed successfully for the EKS cluster.

  • Empty the s3 buckets created by jenkinsX (This is required if force_destroy was set to false, when provisioning the EKS cluster)
  • Delete the Network load balancer (The load balancer is created outside terraform, so you need to delete it manually in the EC2 console before executing a terraform destroy. You can also import it to terraform, and then execute destroy)

If you do not delete the load balancer, you will have issues with detaching the internet gateway (IGW) and deleting it. This can lead to a race condition where terraform tries to destroy the auto scaling group and the IGW, and eventually times out.

Does Jenkins X install a load balancer?

Jenkins X installs nginx which has a LoadBalancer kubernetes Service. But the underlying kubernetes platform needs to implement the load balancing network and infrastructure. This comes OOTB on all public clouds.

On-premises you need to install something like MetalLB

Last modified June 18, 2021: docs: Fix usage of "on-premises" (91a1e4b3eb)