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:
pkg/assets/installconfig
pkg/assets/manifests
-
pkg/assets/machines
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.