Openshift Driver

Selecting the openshift driver adds the following options to the providers section of the configuration.

providers.[openshift]
Type: list

An Openshift provider’s resources are partitioned into groups called pool (see providers.[openshift].pools for details), and within a pool, the node types which are to be made available are listed (see providers.[openshift].labels for details).

Note

For documentation purposes the option names are prefixed providers.[openshift] to disambiguate from other drivers, but [openshift] is not required in the configuration (e.g. below providers.[openshift].pools refers to the pools key in the providers section when the openshift driver is selected).

Example:

providers:
  - name: cluster
    driver: openshift
    context: context-name
    pools:
      - name: main
        labels:
          - name: openshift-project
            type: project
          - name: openshift-pod
            type: pod
            image: docker.io/fedora:28
providers.[openshift].context (required)

Name of the context configured in kube/config.

Before using the driver, Nodepool services need a kube/config file manually installed with self-provisioner (the service account needs to be able to create projects) context. Make sure the context is present in oc config get-contexts command output.

providers.[openshift].launch-retries
Default: 3

The number of times to retry launching a node before considering the job failed.

providers.[openshift].max-projects
Default: infinite
Type: int

Maximum number of projects that can be used.

providers.[openshift].pools
Type: list

A pool defines a group of resources from an Openshift provider.

providers.[openshift].pools.name (required)

Project’s name are prefixed with the pool’s name.

providers.[openshift].pools.node-attributes
Type: dict

A dictionary of key-value pairs that will be stored with the node data in ZooKeeper. The keys and values can be any arbitrary string.

providers.[openshift].labels
Type: list

Each entry in a pool`s labels section indicates that the corresponding label is available for use in this pool.

Each entry is a dictionary with the following keys

providers.[openshift].labels.name (required)

Identifier for this label; references an entry in the labels section.

providers.[openshift].labels.type

The Openshift provider supports two types of labels:

project

Project labels provide an empty project configured with a service account that can create pods, services, configmaps, etc.

pod

Pod labels provide a new dedicated project with a single pod created using the providers.[openshift].labels.image parameter and it is configured with a service account that can exec and get the logs of the pod.

providers.[openshift].labels.image

Only used by the pod label type; specifies the image name used by the pod.

providers.[openshift].labels.image-pull
Default: IfNotPresent
Type: str

The ImagePullPolicy, can be IfNotPresent, Always or Never.

providers.[openshift].labels.image-pull-secrets
Default: []
Type: list

The imagePullSecrets needed to pull container images from a private registry.

Example:

labels:
  - name: openshift-pod
    image: docker.io/fedora:28
    image-pull-secrets:
      - name: registry-secret
providers.[openshift].labels.python-path
Default: auto
Type: str

The path of the default python interpreter. Used by Zuul to set ansible_python_interpreter. The special value auto will direct Zuul to use inbuilt Ansible logic to select the interpreter on Ansible >=2.8, and default to /usr/bin/python2 for earlier versions.

providers.[openshift].labels.shell-type
Default: sh
Type: str

The shell type of the node’s default shell executable. Used by Zuul to set ansible_shell_type. This setting should only be used

  • For a windows image with the experimental connection-type ssh, in which case cmd or powershell should be set and reflect the node’s DefaultShell configuration.

  • If the default shell is not Bourne compatible (sh), but instead e.g. csh or fish, and the user is aware that there is a long-standing issue with ansible_shell_type in combination with become

providers.[openshift].labels.cpu
Type: int

Only used by the pod label type; specifies the number of cpu to request for the pod.

providers.[openshift].labels.memory
Type: int

Only used by the pod label type; specifies the amount of memory in MB to request for the pod.

providers.[openshift].labels.env
Default: []
Type: list

Only used by the pod label type; A list of environment variables to pass to the Pod.

providers.[openshift].labels.env.name (required)
Type: str

The name of the environment variable passed to the Pod.

providers.[openshift].labels.env.value (required)
Type: str

The value of the environment variable passed to the Pod.

providers.[openshift].labels.node-selector
Type: dict

Only used by the pod label type; A map of key-value pairs to ensure the OpenShift scheduler places the Pod on a node with specific node labels.