Managing Pipelines Node Pools

JFrog Pipelines Documentation

ft:sourceType
Paligo

Node Pools provide a convenient way to logically group build nodes in a JFrog Pipelines environment. This enables you to run steps simultaneously on different nodes.

Administrators may create any number of node pools. For SaaS deployments, a node pool named default-dynamic-nodepool is available by default. For self-hosted deployments, at least one node pool must be added and designated as the default node pool, and assigned at least one build node for pipelines to execute in the selected Project.

A node pool must be designated to contain build nodes of one of these types:

  • Dynamic Nodes - Build nodes that are spun up and down on-demand by Pipelines from a cloud or Kubernetes service. This can help scale operations, and help manage costs by not incurring cloud service charges to run idle nodes.

  • Static Nodes – Build nodes (virtual machines) that are persistently available through a fixed IP address.

    For information about the minimum requirements for a static node that can be assigned to JFrog Pipelines and to learn how static nodes can be added, see Managing Pipelines Static Nodes.

Administering Dynamic Node Pools

Dynamic node pools spin build nodes up and down on-demand from a cloud or Kubernetes service. To create a dynamic node pool, you must configure and provide an Admin integration for one of the following cloud or Kubernetes service:

A dynamic node is provisioned when a step is triggered, then either cached or destroyed after a preset amount of idle time if no new step is triggered during that interval. When used on a cloud service, this can help manage costs by not incurring charges to run idle nodes.

The following actions can only be performed by administrator users to configure Pipelines dynamic node pools for operation.Introduction to Users and Groups

Adding a Dynamic Node Pool

To create a new dynamic node pool for on-demand build nodes, go to Administration | Pipelines | Node Pools, click Add Node Pool, and then select Dynamic.

Note

When a user-defined integration is selected, SaaS users can create custom dynamic nodes and customize all the relevant settings. Users can select any cloud provider with no restrictions on settings, such as machine type, region, and others.

dynamicNodePool_30jan23.png

Fields that are not required may be left blank. For example, you may not wish to set the fields to limit node count, disk usage, or timeout. When finished, click Save Node Pool.

General Settings

Name

An alphanumeric friendly name for the node pool.

Note

When adding a node pool within a specific Project, by default, the name is prefixed with the Project Key. After a node pool is saved, its name cannot be edited.Introduction to Projects

Set as Default Node Pool

When checked, sets the node pool as the default node pool for all pipelines in the selected Project. All steps that do not explicitly define which node pool to use will run on nodes of the default node pool.

Select an Integration/Select a Build Image

Integration

Create or select from the available Admin integrations for one of the following cloud or Kubernetes service:

Build Image

In the Build Plane Images window:

  • Select from the available build images. For example, an Amazon Machine Image (AMI) on AWS.

    or

  • Click Add Build Image to add your own custom VM image. For more information, see Creating Custom VM Images.

Additional Settings

Machine Type

Select from the available machine (instance) types for the service. For example: c4.large on AWS.

Fetch Machine Types

Click to fetch all the supported machine types (in addition to the static list of machine types) from the cloud provider for the selected region/zone. The button is available only when a user-defined integration and valid zone (in some cases) is selected.

Node Limits

The maximum number of nodes that can created on-demand for this node pool.

Disk Size

Optional. Configure dynamic node disk size.

The minimum limit is:

  • AWS (Windows): 120 GB

  • Azure (Windows): 128 GB

  • Others: 60 GB

Note

  • This option is available for Pipelines self-hostedise versions only.

  • If the disk size is not specified, the node will use the image’s disk size by default.

Timeout

Number of seconds for connection timeout. Default is 3600 seconds.

For more information, see Setting Step Timeouts.

Node Idle Interval

Number of minutes a node can be idle before it is destroyed.

Insecure Docker Registries

A comma-separated list of allowed insecure docker registries.

Kubernetes Settings (see Creating Dynamic Nodes on Kubernetes for configuration procedures)

Storage Class

The storage class available from the service to use.

Run kubectl get storageclass to list the StorageClasses in your cluster.

CPU

The CPU limit resource settingfor every pod.

Labels

Optional labels for node selector.

Memory

The memory limit resource settingfor every pod.

Namespace

The namespace for nodes.

AWS Settings (see AWS Keys Integration for configuration requirements)

SSH Key Pair

The SSH encrypted access key for the cloud service. Name of the SSH Key pair created on AWS.

Security Group ID

An ID for an optional security group for all created nodes.

Subnet Id

Optional VPC subnet ID

GCP Settings (see Google Cloud Integration for configuration requirements)

Zone

Zonewithin the hosting GCP region

Network Tags

Optional Network tags (text attributes) for the VM instances

Subnet Name

Optional subnet name

Assign Public IP

When selected, nodes will be created with public IP addresses

Azure Settings (see Azure Keys Integration for configuration requirements)

Subscription ID

GUID that uniquely identifies your subscription to use Azure services

Subnet Name

Vnet subnet name

Vnet Name

Azure Virtual Network name (e.g., myVirtualNetwork)

Resource Group Name

Name of the resource group (e.g., myResourceGroup)

Security Group Name

Optional NIC network security group

Public SSH Key

Public Secure Shell (SSH) key for Linux VMs

Admin Username

Username for RDP (Windows nodes only, optional)

Admin Password

Password for RDP (Windows nodes only, optional)

Cache Settings

Enable Cache

When checked, enables node caching.

Reset Cache

Select the type of interval to reset the cache: On Day of Week or By Number of Days.

Available only when node caching is enabled.

Assign Pipelines to this Node Pool

Any Pipeline Source

When selected, pipelines loaded from any pipeline source can use this node pool.

Unselect this option to restrict node pool use to a set of pipeline sources.

Node Duration

When a step is triggered, a dynamic node is spun up to execute the step. After the step is complete, the node is available to execute subsequent steps until it is terminated.

When node caching is not enabled, Pipelines will check the node at each node idle interval after the node was first spun up. If the node is idle Pipelines terminates the node. This ensures that your build infrastructure is managed in an efficient manner, to help you control computing costs.

Dynamic Node Caching

When enabled, node caching helps speed up execution of your builds by avoiding having to repeat time-consuming processes, such as installing or loading large amounts of dependency data. This feature is available only on dynamic node pools.

When node caching is enabled for a dynamic node pool, Pipelines pauses your node after executing a step, instead of terminating it after the specified idle time. When the next step executes, the paused node is restarted, retaining any Docker images or dependencies that were installed as part of the previous step. This greatly speeds up builds that pull or build Docker images as part of their workflow.

In addition, the node is available to execute the job much sooner, since restarting the node from a paused state is much faster than provisioning a new node. So if your build takes just a few minutes to execute, you save on the node provisioning time for every build, which adds up quickly.

Administering Static Node Pools

Sttatic node pools are collections of persistently available build nodes (virtual machines). Static nodes enable you to execute pipeline steps on your own infrastructure. For more information, see Managing Pipelines Static Nodes.

The following actions can only be performed by administrator users to configure Pipelines static node pools.Introduction to Users and Groups

Note

For information about troubleshooting node initialization issues, see Troubleshooting - Node Initialization.Troubleshooting

Adding a Static Node Pool

To create a new node pool of static build nodes, go to Administration | Pipelines | Node Pools, click Add Node Pool, and then select Static.

addStaticNodePool_19oct21.png

Fields that are not required may be left blank. For example, you may not wish to set the fields to limit node count, disk usage, or timeout. When finished, click Save Node Pool.

General Settings

Name

An alphanumeric friendly name for the node pool.

Set as Default Node Pool

When checked, sets the node pool as the default node pool for all pipelines. All steps that do not explicitly define which node pool to use will run on nodes of the default node pool.

Additional Settings

Architecture

Currently limited to x86_64

OS

Select from the list of operating systems supported for the selected architecture. For a list of supported OS and architecture combinations, refer to Runtime Images.

Runtime Version

The default runtime image that will be used to run pipeline steps. Choose a specific runtime to make sure the build nodes have the versions you need for languages/services/CLIs/etc. To learn more, see Managing Runtimes.

Node Limits

Limits the maximum number of nodes that can be added to the node pool.

Max Disk Usage %

Limits the maximum disk usage. A build node that exceeds this maximum will be marked as failed.

Timeout

The maximum time (in seconds) after which you want your pipeline steps to timeout. This timeout is used when your step does not have any timeout specified. Default value for timeout is 3600 seconds.

For more information, see Setting Step Timeouts.

Insecure Docker Registries

A comma-separated list of allowed insecure docker registries.

Assign Pipelines to this Node Pool

Any Pipeline Source

When selected, pipelines loaded from any pipeline source can use this node pool.

Unselect this option to restrict node pool use to a set of pipeline sources.

Once you have created a static node pool, you can add static nodes.

Administering All Node Pools

The following actions can only be performed by administrator users to configure Pipelines node pools (both static and dynamic) for operation.Introduction to Users and Groups

Restricting Node Pool Use

If a node pool is in a Project, it may be assigned to one or more environments, and pipelines in pipeline sources that share at least one environment with the node pool may use the node pool. By default, node pools are in the DEV environment.

Node pools that are not in a Project are available to pipelines in pipeline sources that are not in a Project. In addition, further restrictions may be specified to restrict use of particular pipeline sources and users that have been given permissionsto use those pipeline sources.Introduction to Permissions

You can establish those usage restrictions when you add or modify a node pool.

  1. Under Assign Pipeines to this Node Pool, uncheck the option for Any Pipeline Source.

  2. In the revealed interface, select from the list of available pipeline sources and move the row(s) (by click-and-drag or arrow button) to the list of included pipeline sources.

    image2019-12-2_13-43-38.png
  3. When finished, click Save Node Pool.

Viewing Available Node Pools

To view the the list of node pools already added and available for use, go to Administration | Pipelines | Node Pools or Application | Pipelines | Node Pools.

Note

Non-administrator users will only be shown node pools that they are permitted to use.

nodePoolsList_19oct21.png

Max Limit Exceeded

If the number of nodes in a node pool exceeds its maximum limit, it is listed with an exclamation mark in the Max Limit column.

max_limit_exceeded_12oct21.png
Node Provision Status

In the Node Pools list view, the Provision Status column provides a color representation of the provision status for each node. Every color represents one of the stages in the lifecycle of a node.

provision_status_12oct21.png

Color

Provision Status

Description

provision_status_not_provisioned.png

Not provisioned

The node has not been requested to be provisioned.

provision_status_waiting.png

Waiting

When a node is provisioned, it first goes into waiting state. This means that the cloud provider is initializing the node and/or has not reported the status back to Pipelines.

provision_status_processing.png

Processing

  • The cloud provider reported the node's status back to Pipelines and Pipelines is setting up the agent.

    or

  • The node is running a build.

provision_status_success.png

Success

The node successfully initialized and is waiting for a Pipelines build.

provision_status_failure.png

Failure

The node failed. This is usually caused by an out of memory issue. However, there could be several other reasons, which are reflected in the node console.

provision_status_stopped.png

Stopped

When a node is deleted, its provisioning is first stopped and then it is deleted.

provision_status_cached.png

Cached

The node is stopped and not running, but the actual instance is still available for instant use.

Note

Caching must be enabled for a node to be cached.

Viewing Node Pool Details

To view the details of a node pool, click the name of the node pool in the list of available node pools.