Installer

The OpenShift Installer repo contains the code for the openshift-install Go binary as well as templates and documentation for user-provisioned infrastructure. openshift-install provides a user interface for the installation process on multiple cloud platforms. Users provide install configuration through an install-config.yaml file, which can be created interactively through the openshift-install create install-config command. The installer uses this configuration to create Kubernetes manifests and ignition configs for the virtual machines. In the case of installer-provisioned infrastructure, openshift-install uses Terraform to create the infrastructure for the cluster. For user-provisioned infrastructure, cloud-specific templates such as CloudFormation for AWS or ARM for Azure, are provided.

For a more detailed overview of the Installer, please read the Installer Overview. For an overview of the general architecture of a cluster see the Architecture section of the official docs.

For contributing to the Installer, please read the Contributor Guidelines. In particular, please note the guidelines regarding commit messages. Code contributions should be grouped into logically organized commits with clear commit messages. OWNERS files should be added in platform specific subdirectories.

We recommend committing code to the Installer in the following order:

pkg/types

The types package is the API for the Installer. As such, it should not contain any external dependencies so that the package can be cleanly vendored to other repos.

pkg/assets:

For the design behind assets in the installer, see the Asset Generation doc. A suggested approach for adding assets would be:

  1. pkg/assets/installconfig
  2. pkg/assets/manifests
  3. pkg/assets/machines

  4. Adding Alibaba Assets.

Terraform Integration

Integrate the Terraform provider by adding the plugin.

Terraform Configs

Create the Terraform configurations at /data/data/{platform}.

Destroy

Add code to remove all resources created by the Installer and the cluster. The Installer should loop until all known resources are destroyed.

Documentation

Add in-repo documentation, ideally following the general format of other platforms.