Creating the Jenkins X cluster


Creating the Jenkins X cluster

The Jenkins X cluster creation process is a multi-step interactive process performed via command-line interface and your desktop web browser.

Note
This document describes how to create and configure a Jenkins X cluster using Google Kubernetes Engine as the cloud provider. The steps outlined apply to Google Kubernetes Engine and are generally not applicable to configuring clusters for other providers.
  1. Open a terminal or command prompt window (or the GCP Cloud Shell in your web browser) and commence the Jenkins X cluster creation process.

jx create cluster gke
  1. The installation is interactive, stepping you through the entire installation and configuration of the Kubernetes cluster creation process.

    After automatically installing the helm command for package management and gcloud command for cluster configuration on kubernetes, the installer prompts you for your administrative password to complete the installation process.

  2. A browser window appears prompting you to choose the email address associated with your Google Cloud Platform account, then prompts you to accept rights permission to associate your GCP account

  3. The installer prompts you to choose a regional or zonal cluster:

    • Regional clusters spread kubernetes resources in a region to multiple zones with each zone having a cluster master.

    • Zonal clusters run multiple kubernetes resources to multiple cluster nodes using one cluster master.

  4. The installer prompts you for your Cloud node machine type:

    • Standard: a machine that scale CPU and Memory evenly, (1 vCPU with 3.75GB RAM, 2 vCPU with 7.5GB RAM, and so on).

    • High-memory: a machine with higher memory allocation for each CPU (2 vCPU with 13GB RAM, 4 vCPU with 26GB RAM, and so on).

    • High-CPU: a machine with higher vCPU allocation relative to Memory (2 vCPU 1.8GB RAM, 4 vCPU 3.6GB RAM, and so on).

  5. The installer asks to enter the minimum quantity of nodes for the cluster. The recommended minimum for a Jenkins X cluster is 3 nodes for each cluster zone.

  6. The installer asks you to enter the maximum quantity of nodes per zone. The recommended maximum for Jenkins X is 5 nodes per cluster

  7. The installer asks if you want to use preemptible VMs. Preemptible VMs are used typically for less than 24 hours for specific tasks such as short-term compute cluster calculations, media rendering or transcoding, financial industry asset performance modeling, and others. It is not recommended for typical Jenkins X deployments.

  8. The installer asks if you want access to Google Cloud Storage or Google Container Registry. If you enter Y for yes, the installer creates Oauth enabled scopes for accessing Google Cloud Storage and Google Cloud Registry API authentication and access. Default is no.

  9. The installer asks if you want to enable Kaniko for building container images. kaniko is used to create Docker Images without access to a docker daemon. Jenkins X default is no.

  10. The installer continues the installation process to post-installation configuration. The first post-installation prompt searches for a configured ingress controller. An ingress controller works with an external load balancer (such as Google Cloud Load Balancing) to control the incoming requests of various traffic types such as HTTP(S), SSL, TCP and others on any externally accessible network port. Jenkins X requires this in typical deployments, so the default is yes.

  11. You are then prompted with creating a DNS service to use for your cluster load balancer. If your network does not provide custom DNS, the Jenkins X installer will create a simple wildcard DNS services to translate to your cluster load balancer and allow access to the nodes from the Internet. By default, the installer uses nip.io to create a domain based on your IP address.

    For example, if your external internet IP address is 172.31.0.2, the installer will assign the domain name 172.31.0.2.nip.io so that users and Jenkins X administrators can access the cluster.

  12. The installer asks for a local git user for GitHub access:

    1. Enter the GitHub User Name you want to associate to the cluster

    2. Choose whether or not you want to use GitHub as the CI/CD pipeline git server. The default is yes.

    3. When prompted, copy and paste the provided URL into a browser and create a GitHub API token for use in your cluster.

    4. Choose whether you want to use Serverless Jenkins X Pipelines with Tekton or traditional Jenkins with Jenkinsfile. Choose Serverless Jenkins X Pipelines with Tekton, as that method supports cloud native CI/CD declarative pipelines for kubernetes clusters using Tekton custom resources.

    5. The installer creates an autogenerated password for administrative access to the cluster. Copy that password and paste it for later access.

Troubleshooting cluster creation

If your kubectl version is out of date, you may encounter an Object interfaces error:

“error: object does not implement the Object interfaces’”

You must upgrade your version of kubectl to the most current version for jx compatibility:

  • For Mac OS, use the curl command to download the lastest version of kubectl:

    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl

    Then change file mode to executable and move the binary to an executable path:

    chmod +x ./kubectl ; sudo mv ./kubectl /usr/local/bin
  • For Linux, use the curl command to download the lastest version of kubectl:

    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

    Then change file mode to executable and move the binary to an executable path:

    chmod +x ./kubectl ; sudo mv ./kubectl /usr/local/bin
  • For Windows, download the latest binary and move the file in your executable PATH