Making SNO in the summer has never been easier with a little help from Hive and the Assisted Installer operators in OpenShift. If this sounds like something of interested then please read further on as I step through the method to get a Single Node OpenShift (SNO) deployed from an existing OpenShift cluster.
The first thing I will need to perform the procedure will be to have an existing OpenShift cluster running on 4.8. In my case I am using a pre-release version of 4.8.0-fc3 running on an existing SNO deployed cluster which is a virtual machine. Further I will need another unused virtual node that will become my new SNO OpenShift cluster.
Now that I have identified my environment lets go ahead and start the configuration process. First we need to enable and configure the Local-Storage operator so that we can provide some PVs that can be consumed by the AI operator for the Postgres and bucket requirements of that operator. Note that any dynamic storage provider can be used for this but in my environment Local-Storage made the most sense. First lets create the local-storage-operator.yaml:
$ cat << EOF > ~/local-storage-operator.yaml --- apiVersion: v1 kind: Namespace metadata: name: openshift-local-storage spec: {} --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-local-storage namespace: openshift-local-storage spec: targetNamespaces: - openshift-local-storage --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: local-storage-operator namespace: openshift-local-storage spec: channel: "4.7" installPlanApproval: Automatic name: local-storage-operator source: redhat-operators sourceNamespace: openshift-marketplace EOF
$ oc create -f ~/local-storage-operator.yaml namespace/openshift-local-storage created operatorgroup.operators.coreos.com/openshift-local-storage created subscription.operators.coreos.com/local-storage-operator created
$ oc get pods -n openshift-local-storage NAME READY STATUS RESTARTS AGE local-storage-operator-845457cd85-ttb8g 1/1 Running 0 37s
$ cat << EOF > ~/hive-local-storage.yaml apiVersion: local.storage.openshift.io/v1 kind: LocalVolume metadata: name: fs namespace: openshift-local-storage spec: logLevel: Normal managementState: Managed storageClassDevices: - devicePaths: - /dev/sdb - /dev/sdc - /dev/sdd - /dev/sde - /dev/sdf - /dev/sdg - /dev/sdh - /dev/sdi - /dev/sdj - /dev/sdk - /dev/sdl - /dev/sdm fsType: ext4 storageClassName: local-storage volumeMode: Filesystem EOF
$ oc create -f hive-local-storage.yaml localvolume.local.storage.openshift.io/fs created
$ oc get pods -n openshift-local-storage NAME READY STATUS RESTARTS AGE fs-local-diskmaker-nv5xr 1/1 Running 0 46s fs-local-provisioner-9dt2m 1/1 Running 0 46s local-storage-operator-845457cd85-ttb8g 1/1 Running 0 4m25s
$ oc get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-188fc254 20Gi RWO Delete Available local-storage 33s local-pv-6d45f357 20Gi RWO Delete Available local-storage 33s local-pv-96d2cc66 10Gi RWO Delete Available local-storage 33s local-pv-99a52316 20Gi RWO Delete Available local-storage 33s local-pv-9e0442ea 10Gi RWO Delete Available local-storage 33s local-pv-c061aa19 20Gi RWO Delete Available local-storage 33s local-pv-c26659da 20Gi RWO Delete Available local-storage 33s local-pv-d08519a8 10Gi RWO Delete Available local-storage 33s local-pv-d2f2a467 10Gi RWO Delete Available local-storage 33s local-pv-d4a12edd 20Gi RWO Delete Available local-storage 33s local-pv-f5e1ca69 10Gi RWO Delete Available local-storage 33s local-pv-ffdb70b 10Gi RWO Delete Available local-storage 33s $ oc get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 72s
$ oc patch storageclass local-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' storageclass.storage.k8s.io/local-storage patched
$ oc get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE local-storage (default) kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 2m14s
$ cat << EOF > ~/hive-operator.yaml --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: hive-operator namespace: openshift-operators spec: channel: alpha installPlanApproval: Automatic name: hive-operator source: community-operators sourceNamespace: openshift-marketplace startingCSV: hive-operator.v1.1.4 EOF
$ oc create -f hive-operator.yaml subscription.operators.coreos.com/hive-operator created
$ oc get operators hive-operator.openshift-operators NAME AGE hive-operator.openshift-operators 2m28s $ oc get pods -n hive No resources found in hive namespace.
$ oc delete namespace assisted-installer namespace "assisted-installer" deleted
$ cat << EOF > ~/assisted-installer-catsource.yaml --- apiVersion: v1 kind: Namespace metadata: name: assisted-installer labels: name: assisted-installer --- apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: assisted-service namespace: openshift-marketplace spec: sourceType: grpc image: quay.io/ocpmetal/assisted-service-index:latest EOF
$ cat << EOF > ~/assisted-installer-operator.yaml --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: assisted-service-operator namespace: assisted-installer spec: targetNamespaces: - assisted-installer --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: assisted-service-operator namespace: assisted-installer spec: channel: alpha installPlanApproval: Automatic name: assisted-service-operator source: assisted-service sourceNamespace: openshift-marketplace EOF
$ oc create -f assisted-installer-catsource.yaml namespace/assisted-installer created catalogsource.operators.coreos.com/assisted-service created $ oc create -f assisted-installer-operator.yaml operatorgroup.operators.coreos.com/assisted-service-operator created subscription.operators.coreos.com/assisted-service-operator created
$ oc get pods -n assisted-installer NAME READY STATUS RESTARTS AGE assisted-service-operator-579679d899-x982l 1/1 Running 0 56s
$ cat << EOF > ~/assisted-installer-agentserviceconfig.yaml apiVersion: agent-install.openshift.io/v1beta1 kind: AgentServiceConfig metadata: name: agent spec: databaseStorage: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi filesystemStorage: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi osImages: - openshiftVersion: '4.8' rootFSUrl: >- https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/pre-release/4.8.0-fc.3/rhcos-live-rootfs.x86_64.img url: >- https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/pre-release/4.8.0-fc.3/rhcos-4.8.0-fc.3-x86_64-live.x86_64.iso version: 48.84.202105062123-0 EOF
$ oc create -f ~/assisted-installer-agentserviceconfig.yaml agentserviceconfig.agent-install.openshift.io/agent created
$ oc get pods -n assisted-installer NAME READY STATUS RESTARTS AGE assisted-service-b7dc8b8d7-2cztd 1/2 Running 1 53s assisted-service-operator-579679d899-x982l 1/1 Running 0 3m50s $ oc get pvc -n assisted-installer NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE assisted-service Bound local-pv-99a52316 20Gi RWO local-storage 87s postgres Bound local-pv-6d45f357 20Gi RWO local-storage 87s
$ cat << EOF > ~/assisted-installer-clusterimageset.yaml apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-v4.8.0 namespace: assisted-installer spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.8.0-fc.3-x86_64 EOF $ oc create -f ~/assisted-installer-clusterimageset.yaml clusterimageset.hive.openshift.io/openshift-v4.8.0 created
$ cat << EOF > ~/assisted-installer-secrets.yaml apiVersion: v1 kind: Secret metadata: name: assisted-deployment-pull-secret namespace: assisted-installer stringData: .dockerconfigjson: 'OPENSHIFT-PULL-SECRET-HERE' EOF $ oc create -f ~/assisted-installer-secrets.yaml secret/assisted-deployment-pull-secret created
$ cat << EOF > ~/assisted-installer-sshprivate.yaml apiVersion: v1 kind: Secret metadata: name: assisted-deployment-ssh-private-key namespace: assisted-installer stringData: ssh-privatekey: |- -----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn NhAAAAAwEAAQAAAYEA7uOSmvd8CgAUDaqGheAUcBsEOOoFAZYqtLKL9N0HameO6Fhv1t/l a4tG8BQMiu3pm5DWpRrq/O12OjjVDOHHSjwcMX/qfn8OKNVtPVq0SMZRbbkkpnK2WLMwLg ... 8QT4AK4mb7H8tHo1RQkOB4foAQwPLXHvRBHrEGXnIugAeCszn8twZruRtcoX2jRiw7MS8B R+AuTLBeBwEXYGoxFhsaLhiCVUueEKJDUt66tVCr3ovvz8eapWv1LUM2QGeP56Z5QUsIrl wJwTtficCtwxK0XL+gJro9qYslbX2XxVD67goxVecIfNVmxtZ8KHeo6ICLkhOJjTAveAm+ tF77qty2d0d0UAAAAXYnNjaG1hdXNAcmhlbDgtb2NwLWF1dG8BAgME -----END OPENSSH PRIVATE KEY----- type: Opaque EOF $ oc create -f ~/assisted-installer-sshprivate.yaml secret/assisted-deployment-ssh-private-key created
$ cat << EOF > ~/assisted-installer-agentclusterinstall.yaml --- apiVersion: extensions.hive.openshift.io/v1beta1 kind: AgentClusterInstall metadata: name: test-cluster-virtual-aci namespace: assisted-installer spec: clusterDeploymentRef: name: test-cluster-virtual imageSetRef: name: openshift-v4.8.0 networking: clusterNetwork: - cidr: "10.128.0.0/14" hostPrefix: 23 serviceNetwork: - "172.30.0.0/16" machineNetwork: - cidr: "192.168.0.0/24" provisionRequirements: controlPlaneAgents: 1 sshPublicKey: 'ssh-rsa AAB3NzaC1yc2EAAAADAQABAAABgQDu45Ka93wKABQNqoaF4BRwGwQ46gUBliq0sov03QdqZ47oWG/W3+Vri0bwFAyK7embkNalGur87XY6ONUM4cdKPBwxf+p+fw4o1W09WrRIxlFtuSSmcrZYszAuD3NlHDS2WbXRHbeaMz8QsA9qNceZZj7PyB+fNULJYS2iNtlIING4DZTvoEr6KCe2cOIdDnjOW0xNng+ejKMe3vszwutLqgPMwQXS2tqJSHOMIS1kDdLFd3ZIT25xvORoNC/PWy5NAkxp9gJbrYEDlcvy7eUxqLAM9lTCWJQ0l31gqIQDOkGmS7M41x3nJ6kG1ilLn1miMfwrGKDramp7+8ejfr0QBspikp9S4Tmj6s0PA/lEL6EST4N12sr+GsJkHqhWa+HwutcMbg0qIFwhUMFN689Q84Tz9abSPnQipn09xNv1YtAEQLJxypZj3NB6/ZYZXWjB/IGgbJ4tifD1cTYdSA1A4UeNyvhIFj9yyjRF8mucGUR873xSMTlcLIq3V0aZqXU= bschmaus@rhel8-ocp-auto' EOF $ oc create -f ~/assisted-installer-agentclusterinstall.yaml agentclusterinstall.extensions.hive.openshift.io/test-cluster-virtual-aci created
$ cat << EOF > ~/assisted-installer-clusterdeployment.yaml --- apiVersion: hive.openshift.io/v1 kind: ClusterDeployment metadata: name: test-cluster-virtual namespace: assisted-installer spec: baseDomain: schmaustech.com clusterName: kni3 controlPlaneConfig: servingCertificates: {} installed: false clusterInstallRef: group: extensions.hive.openshift.io kind: AgentClusterInstall name: test-cluster-virtual-aci version: v1beta1 platform: agentBareMetal: agentSelector: matchLabels: bla: "aaa" pullSecretRef: name: assisted-deployment-pull-secret EOF $ oc create -f ~/assisted-installer-clusterdeployment.yaml clusterdeployment.hive.openshift.io/test-cluster-virtual created
$ cat << EOF > ~/assisted-installer-infraenv.yaml --- apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: test-cluster-virtual-infraenv namespace: assisted-installer spec: clusterRef: name: test-cluster-virtual namespace: assisted-installer sshAuthorizedKey: 'ssh-rsa AAB3NzaC1yc2EAAAADAQABAAABgQDu45Ka93wKABQNqoaF4BRwGwQ46gUBliq0sov03QdqZ47oWG/W3+Vri0bwFAyK7embkNalGur87XY6ONUM4cdKPBwxf+p+fw4o1W09WrRIxlFtuSSmcrZYszAuD3NlHDS2WbXRHbeaMz8QsA9qNceZZj7PyB+fNULJYS2iNtlIING4DZTvoEr6KCe2cOIdDnjOW0xNng+ejKMe3vszwutLqgPMwQXS2tqJSHOMIS1kDdLFd3ZIT25xvORoNC/PWy5NAkxp9gJbrYEDlcvy7eUxqLAM9lTCWJQ0l31gqIQDOkGmS7M41x3nJ6kG1ilLn1miMfwrGKDramp7+8ejfr0QBspikp9S4Tmj6s0PA/lEL6EST4N12sr+GsJkHqhWa+HwutcMbg0qIFwhUMFN689Q84Tz9abSPnQipn09xNv1YtAEQLJxypZj3NB6/ZYZXWjB/IGgbJ4tifD1cTYdSA1A4UeNyvhIFj9yyjRF8mucGUR873xSMTlcLIq3V0aZqXU= bschmaus@rhel8-ocp-auto' agentLabelSelector: matchLabels: bla: aaa pullSecretRef: name: assisted-deployment-pull-secret EOF $ oc create -f ~/assisted-installer-infraenv.yaml infraenv.agent-install.openshift.io/test-cluster-virtual-infraenv created
$ oc get infraenv test-cluster-virtual-infraenv -o jsonpath='{.status.isoDownloadURL}' -n assisted-installer https://assisted-service-assisted-installer.apps.kni1.schmaustech.com/api/assisted-install/v1/clusters/b38c1d3e-e460-4111-a35f-4a8d79203585/downloads/image.iso?api_key=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbHVzdGVyX2lkIjoiYjM4YzFkM2UtZTQ2MC00MTExLWEzNWYtNGE4ZDc5MjAzNTg1In0.0sjy-0I9DstyaRA8oIUF9ByyUe31Kl6rUpVzBXSsO9mFfqLCDtF-Rh2NCWvVtjKyd4BZ7Zo5ZUIMsEtHX5sKWg
# pwd /var/lib/libvirt/images # wget --no-check-certificate https://assisted-service-assisted-installer.apps.kni1.schmaustech.com/api/assisted-install/v1/clusters/b38c1d3e-e460-4111-a35f-4a8d79203585/downloads/image.iso?api_key=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbHVzdGVyX2lkIjoiYjM4YzFkM2UtZTQ2MC00MTExLWEzNWYtNGE4ZDc5MjAzNTg1In0.0sjy-0I9DstyaRA8oIUF9ByyUe31Kl6rUpVzBXSsO9mFfqLCDtF-Rh2NCWvVtjKyd4BZ7Zo5ZUIMsEtHX5sKWg -O discover.iso --2021-05-26 15:16:13-- https://assisted-service-assisted-installer.apps.kni1.schmaustech.com/api/assisted-install/v1/clusters/b38c1d3e-e460-4111-a35f-4a8d79203585/downloads/image.iso?api_key=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbHVzdGVyX2lkIjoiYjM4YzFkM2UtZTQ2MC00MTExLWEzNWYtNGE4ZDc5MjAzNTg1In0.0sjy-0I9DstyaRA8oIUF9ByyUe31Kl6rUpVzBXSsO9mFfqLCDtF-Rh2NCWvVtjKyd4BZ7Zo5ZUIMsEtHX5sKWg Resolving assisted-service-assisted-installer.apps.kni1.schmaustech.com (assisted-service-assisted-installer.apps.kni1.schmaustech.com)... 192.168.0.204 Connecting to assisted-service-assisted-installer.apps.kni1.schmaustech.com (assisted-service-assisted-installer.apps.kni1.schmaustech.com)|192.168.0.204|:443... connected. WARNING: The certificate of ‘assisted-service-assisted-installer.apps.kni1.schmaustech.com’ is not trusted. WARNING: The certificate of ‘assisted-service-assisted-installer.apps.kni1.schmaustech.com’ hasn't got a known issuer. HTTP request sent, awaiting response... 200 OK Length: 109111296 (104M) [application/octet-stream] Saving to: ‘discover.iso’ discover.iso 100%[=====================================================================================================================>] 104.06M 104MB/s in 1.0s 2021-05-26 15:16:14 (104 MB/s) - ‘discover.iso’ saved [109111296/109111296] # ls -l *.iso -rw-r--r--. 1 root root 109111296 May 26 15:16 discover.iso
# virsh list --all Id Name State --------------------------- - nuc4-vm1 shut off # virsh dumpxml nuc4-vm1 | sed "/^ <disk device="cdrom" type="file">/a \ \ \ \ <source file="/var/lib/libvirt/images/discover.iso"></source>" | virsh define /dev/stdin # virsh start nuc4-vm1 Domain nuc4-vm1 started
$ oc get agentclusterinstalls test-cluster-virtual-aci -o json -n assisted-installer | jq '.status.conditions[]' { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The Spec has been successfully applied", "reason": "SyncOK", "status": "True", "type": "SpecSynced" } { "lastProbeTime": "2021-05-27T17:43:30Z", "lastTransitionTime": "2021-05-27T17:43:30Z", "message": "The installation is pending on the approval of 1 agents", "reason": "UnapprovedAgents", "status": "False", "type": "RequirementsMet" } { "lastProbeTime": "2021-05-27T17:43:30Z", "lastTransitionTime": "2021-05-27T17:43:30Z", "message": "The cluster's validations are passing", "reason": "ValidationsPassing", "status": "True", "type": "Validated" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation has not yet started", "reason": "InstallationNotStarted", "status": "False", "type": "Completed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation has not failed", "reason": "InstallationNotFailed", "status": "False", "type": "Failed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation is waiting to start or in progress", "reason": "InstallationNotStopped", "status": "False", "type": "Stopped" }
$ oc get agents.agent-install.openshift.io -n assisted-installer -o=jsonpath='{range .items[*]}{"\n"}{.spec.clusterDeploymentName.name}{"\n"}{.status.inventory.hostname}{"\n"}{range .status.conditions[*]}{.type}{"\t"}{.message}{"\n"}{end}' test-cluster-virtual master-0.kni5.schmaustech.com SpecSynced The Spec has been successfully applied Connected The agent's connection to the installation service is unimpaired ReadyForInstallation The agent is not approved Validated The agent's validations are passing Installed The installation has not yet started
$ oc get agents.agent-install.openshift.io -n assisted-installer NAME CLUSTER APPROVED e4117b8b-a2ef-45df-baf0-2ebc6ae1bf8e test-cluster-virtual false
$ oc -n assisted-installer patch agents.agent-install.openshift.io e4117b8b-a2ef-45df-baf0-2ebc6ae1bf8e -p '{"spec":{"approved":true}}' --type merge agent.agent-install.openshift.io/e4117b8b-a2ef-45df-baf0-2ebc6ae1bf8e patched
$ oc get agents.agent-install.openshift.io -n assisted-installer -o=jsonpath='{range .items[*]}{"\n"}{.spec.clusterDeploymentName.name}{"\n"}{.status.inventory.hostname}{"\n"}{range .status.conditions[*]}{.type}{"\t"}{.message}{"\n"}{end}' test-cluster-virtual master-0.kni5.schmaustech.com SpecSynced The Spec has been successfully applied Connected The agent's connection to the installation service is unimpaired ReadyForInstallation The agent cannot begin the installation because it has already started Validated The agent's validations are passing Installed The installation is in progress: Host is preparing for installation
$ oc get agentclusterinstalls test-cluster-virtual-aci -o json -n assisted-installer | jq '.status.conditions[]' { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The Spec has been successfully applied", "reason": "SyncOK", "status": "True", "type": "SpecSynced" } { "lastProbeTime": "2021-05-27T17:50:12Z", "lastTransitionTime": "2021-05-27T17:50:12Z", "message": "The cluster requirements are met", "reason": "ClusterAlreadyInstalling", "status": "True", "type": "RequirementsMet" } { "lastProbeTime": "2021-05-27T17:43:30Z", "lastTransitionTime": "2021-05-27T17:43:30Z", "message": "The cluster's validations are passing", "reason": "ValidationsPassing", "status": "True", "type": "Validated" } { "lastProbeTime": "2021-05-27T17:50:12Z", "lastTransitionTime": "2021-05-27T17:50:12Z", "message": "The installation is in progress: Preparing cluster for installation", "reason": "InstallationInProgress", "status": "False", "type": "Completed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation has not failed", "reason": "InstallationNotFailed", "status": "False", "type": "Failed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation is waiting to start or in progress", "reason": "InstallationNotStopped", "status": "False", "type": "Stopped" }
$ oc get agentclusterinstalls test-cluster-virtual-aci -o json -n assisted-installer | jq '.status.conditions[]' { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The Spec has been successfully applied", "reason": "SyncOK", "status": "True", "type": "SpecSynced" } { "lastProbeTime": "2021-05-27T17:50:12Z", "lastTransitionTime": "2021-05-27T17:50:12Z", "message": "The cluster requirements are met", "reason": "ClusterAlreadyInstalling", "status": "True", "type": "RequirementsMet" } { "lastProbeTime": "2021-05-27T17:43:30Z", "lastTransitionTime": "2021-05-27T17:43:30Z", "message": "The cluster's validations are passing", "reason": "ValidationsPassing", "status": "True", "type": "Validated" } { "lastProbeTime": "2021-05-27T17:52:00Z", "lastTransitionTime": "2021-05-27T17:52:00Z", "message": "The installation is in progress: Installation in progress", "reason": "InstallationInProgress", "status": "False", "type": "Completed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation has not failed", "reason": "InstallationNotFailed", "status": "False", "type": "Failed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation is waiting to start or in progress", "reason": "InstallationNotStopped", "status": "False", "type": "Stopped" }
$ oc get agentclusterinstalls test-cluster-virtual-aci -o json -n assisted-installer | jq '.status.conditions[]' { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The Spec has been successfully applied", "reason": "SyncOK", "status": "True", "type": "SpecSynced" } { "lastProbeTime": "2021-05-27T17:50:12Z", "lastTransitionTime": "2021-05-27T17:50:12Z", "message": "The cluster requirements are met", "reason": "ClusterAlreadyInstalling", "status": "True", "type": "RequirementsMet" } { "lastProbeTime": "2021-05-27T17:43:30Z", "lastTransitionTime": "2021-05-27T17:43:30Z", "message": "The cluster's validations are passing", "reason": "ValidationsPassing", "status": "True", "type": "Validated" } { "lastProbeTime": "2021-05-27T18:37:20Z", "lastTransitionTime": "2021-05-27T18:37:20Z", "message": "The installation is in progress: Finalizing cluster installation", "reason": "InstallationInProgress", "status": "False", "type": "Completed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation has not failed", "reason": "InstallationNotFailed", "status": "False", "type": "Failed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation is waiting to start or in progress", "reason": "InstallationNotStopped", "status": "False", "type": "Stopped" }
$ oc get agentclusterinstalls test-cluster-virtual-aci -o json -n assisted-installer | jq '.status.conditions[]' { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The Spec has been successfully applied", "reason": "SyncOK", "status": "True", "type": "SpecSynced" } { "lastProbeTime": "2021-05-27T18:50:00Z", "lastTransitionTime": "2021-05-27T18:50:00Z", "message": "The cluster installation stopped", "reason": "ClusterInstallationStopped", "status": "True", "type": "RequirementsMet" } { "lastProbeTime": "2021-05-27T17:43:30Z", "lastTransitionTime": "2021-05-27T17:43:30Z", "message": "The cluster's validations are passing", "reason": "ValidationsPassing", "status": "True", "type": "Validated" } { "lastProbeTime": "2021-05-27T18:50:00Z", "lastTransitionTime": "2021-05-27T18:50:00Z", "message": "The installation has completed: Cluster is installed", "reason": "InstallationCompleted", "status": "True", "type": "Completed" } { "lastProbeTime": "2021-05-26T20:07:00Z", "lastTransitionTime": "2021-05-26T20:07:00Z", "message": "The installation has not failed", "reason": "InstallationNotFailed", "status": "False", "type": "Failed" } { "lastProbeTime": "2021-05-27T18:50:00Z", "lastTransitionTime": "2021-05-27T18:50:00Z", "message": "The installation has stopped because it completed successfully", "reason": "InstallationCompleted", "status": "True", "type": "Stopped" }
$ oc get secret -n assisted-installer test-cluster-virtual-admin-kubeconfig -o json | jq -r '.data.kubeconfig' | base64 -d > /tmp/sno-spoke-kubeconfig $ export KUBECONFIG=/tmp/sno-spoke-kubeconfig
$ oc get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME master-0.kni5.schmaustech.com Ready master,worker 53m v1.21.0-rc.0+291e731 192.168.0.200 <none> Red Hat Enterprise Linux CoreOS 48.84.202105062123-0 (Ootpa) 4.18.0-293.el8.x86_64 cri-o://1.21.0-90.rhaos4.8.git07becf8.el8
$ oc get co NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE authentication 4.8.0-fc.3 True False False 9m35s baremetal 4.8.0-fc.3 True False False 30m cloud-credential 4.8.0-fc.3 True False False 48m cluster-autoscaler 4.8.0-fc.3 True False False 30m config-operator 4.8.0-fc.3 True False False 50m console 4.8.0-fc.3 True False False 9m46s csi-snapshot-controller 4.8.0-fc.3 True False False 9m23s dns 4.8.0-fc.3 True False False 22m etcd 4.8.0-fc.3 True False False 31m image-registry 4.8.0-fc.3 True False False 21m ingress 4.8.0-fc.3 True False False 14m insights 4.8.0-fc.3 True False False 13m kube-apiserver 4.8.0-fc.3 True False False 22m kube-controller-manager 4.8.0-fc.3 True False False 22m kube-scheduler 4.8.0-fc.3 True False False 29m kube-storage-version-migrator 4.8.0-fc.3 True False False 31m machine-api 4.8.0-fc.3 True False False 30m machine-approver 4.8.0-fc.3 True False False 48m machine-config 4.8.0-fc.3 True False False 20m marketplace 4.8.0-fc.3 True False False 30m monitoring 4.8.0-fc.3 True False False 9m24s network 4.8.0-fc.3 True False False 51m node-tuning 4.8.0-fc.3 True False False 22m openshift-apiserver 4.8.0-fc.3 True False False 22m openshift-controller-manager 4.8.0-fc.3 True False False 30m openshift-samples 4.8.0-fc.3 True False False 21m operator-lifecycle-manager 4.8.0-fc.3 True False False 30m operator-lifecycle-manager-catalog 4.8.0-fc.3 True False False 48m operator-lifecycle-manager-packageserver 4.8.0-fc.3 True False False 6m34s service-ca 4.8.0-fc.3 True False False 50m storage 4.8.0-fc.3 True False False 30m
$ oc get clusterversion NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.8.0-fc.3 True False 6m26s Cluster version is 4.8.0-fc.3