Coder Social home page Coder Social logo

assisted-installer's Introduction

OpenShift Assisted Installer

The OpenShift Assisted Installer provides for easy provisioning of new bare metal machines and creation of OpenShift clusters. The Assisted Installer is meant to run on FCOS or RHCOS liveCD images. The Assisted Installer uses CoreOS Ignition as a configuration format. The ignition files are created and stored by Assisted Installation Service.

The Assisted Installer is executed by the Assisted Installation Service. Once the cluster installation begins (after host discovery), each host will get the relevant install command from the service. For example:

sudo podman run -e CLUSTER_ID=<clusterID> -e BUCKET=<S3 bucket> -e S3_URL=<S3 url> -e DEVICE=<boot disk> -v /dev:/dev:rw --privileged --pid=host  quay.io/openshift/assisted-installer:latest -r <node role>

There are 3 different roles for installing a node using the assisted installer:

  • master
  • worker
  • bootstrap

Unlike most OpenShift installers, the assisted installer requires a minimum of 3 nodes and doesn't require an auxiliary bootstrap node.
Instead, the Assisted Installer will pivot the bootstrap to become a master node once the control plane is running on 2 other master nodes.

Bootstrap node installation flow:

The Assisted Installer will:

  1. fetch the bootstrap ignition file (currently from S3 but will change soon) and utilize the MCO container for writing the configuration to disk (using once-from option).
  2. start the bootstrap services (bootkube.service, approve-csr.service, progress.service), at this point the bootstrap will start a temporary control plane.
  3. fetch the cluster kubeconfig from the assisted-service and wait for 2 master nodes to appear.
  4. patch the etcd configuration to allow etcd to start with less than 3 members (<4.7 only).
  5. wait for 2 ready master nodes and for the bootkube service to complete.
  6. pivot to master by executing the master installation flow.

Master / worker node installation flow:

The Assisted Installer will:

  1. fetch the relevant ignition file and utilize coreos-installer to write the relevant CoreOS image and ignition to disk.
  2. trigger node reboot.

The node will start with the new CoreOS image and ignition, and will contact the machine-config-server running on the bootstrap node in order to complete the installation.

Known changes to be done:

  • Create a machine CR for the bootstrap node in order to approve the CSR for this node.
  • Optimize install time by storing the CoreOS image on the live CD rather than downloading it from the internet.
  • Use the relevant CoreOS image for the OCP release.
  • Get the ignition from the bm-inventory instead of S3.

Build

To build and push your image to docker registry just run make. You can change the default target, export INSTALLER environment variable to your docker registry

export INSTALLER=<registry>/<image-name>:<tag>
make

assisted-installer's People

Contributors

eranco74 avatar tsorya avatar yuvigold avatar dependabot[bot] avatar yevgeny-shnaidman avatar empovit avatar rollandf avatar oshercc avatar slaviered avatar masayag avatar carbonin avatar sacharya avatar danielerez avatar ybettan avatar asalkeld avatar ori-amizur avatar razregev avatar avishayt avatar erezalster avatar jethbu avatar filanov avatar nmagnezi avatar omertuc avatar osherdp avatar pawanpinjarkar avatar victorhooi avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.