### Run MicroShift Source: https://microshift.io/docs/developer-documentation/local-development Starts the MicroShift service. Ensure CRI-O is installed and running on the host before execution. ```bash sudo ./microshift run ``` -------------------------------- ### Install MicroShift and SELinux Policies Source: https://microshift.io/docs/developer-documentation/build-install-rpm Installs the MicroShift and SELinux policy RPMs using `dnf localinstall`. This command installs the necessary components for MicroShift to run. ```bash sudo dnf localinstall -y packaging/rpm/_rpmbuild/RPMS/noarch/microshift-selinux-* sudo dnf localinstall -y packaging/rpm/_rpmbuild/RPMS/x86_64/microshift-* ``` -------------------------------- ### Start Vagrant VM Source: https://microshift.io/docs/developer-documentation/vagrant-setup Starts the Vagrant virtual machine based on the configuration in the Vagrantfile. ```bash vagrant up ``` -------------------------------- ### Deploy MicroShift and Configure Firewall Source: https://microshift.io/docs/getting-started Installs MicroShift from a COPR repository, configures the firewall to allow necessary ports and traffic, and enables the MicroShift service to start on boot. ```bash sudo dnf copr enable -y @redhat-et/microshift sudo dnf install -y microshift sudo firewall-cmd --zone=trusted --add-source=10.42.0.0/16 --permanent sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp --permanent sudo firewall-cmd --zone=public --add-port=5353/udp --permanent sudo firewall-cmd --reload sudo systemctl enable microshift --now ``` -------------------------------- ### Install OpenShift Client Tools Source: https://microshift.io/docs/getting-started Downloads and installs the OpenShift client (oc) and kubectl. This command fetches the latest stable client archive and extracts the binaries to /usr/local/bin. ```bash curl -O https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/ocp/stable/openshift-client-linux.tar.gz sudo tar -xf openshift-client-linux.tar.gz -C /usr/local/bin oc kubectl ``` -------------------------------- ### Install Build Dependencies Source: https://microshift.io/docs/developer-documentation/local-development Installs necessary packages for building MicroShift on Fedora, CentOS Stream, or RHEL systems. ```bash sudo dnf install -y git make golang ``` -------------------------------- ### Install Build Dependencies Source: https://microshift.io/docs/developer-documentation/build-install-rpm Installs necessary packages for building MicroShift RPMs, including git, golang, rpm-build, and SELinux development tools. ```bash sudo dnf install -y git golang rpm-build selinux-policy-devel container-selinux ``` -------------------------------- ### Install SELinux Policies Source: https://microshift.io/docs/developer-documentation/local-development Installs SELinux policies required by MicroShift. This can be done from a pre-built RPM or by building from source. ```bash # from RPM sudo dnf copr enable -y @redhat-et/microshift sudo dnf install -y microshift-selinux # from source (cd packaging/selinux && sudo make install) ``` -------------------------------- ### Install MicroShift Container Images with RPM Source: https://microshift.io/docs/user-documentation/how-tos/offline-containers Installs MicroShift container images by adding a COPR repository and then installing the `microshift-containers` package. This method is useful for systems that will have restricted connectivity. ```bash curl -L -o /etc/yum.repos.d/microshift-containers.repo \ https://copr.fedorainfracloud.org/coprs/g/redhat-et/microshift-containers/repo/fedora-35/group_redhat-et-microshift-containers-fedora-35.repo rpm-ostree install microshift-containers ``` -------------------------------- ### Example SSH Config File Source: https://microshift.io/docs/developer-documentation/vagrant-setup An example of a generated SSH configuration file for connecting to a Vagrant VM. This file can be customized for easier identification. ```sshconfig Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /path/to/microshift/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL ``` -------------------------------- ### Deploy MetalLB Namespace and Components Source: https://microshift.io/docs/user-documentation/how-tos/example-usage Apply the MetalLB namespace and its core components using `oc apply`. Ensure MetalLB is installed before proceeding with configuration. ```bash oc apply -f https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/namespace.yaml oc apply -f https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/metallb.yaml ``` -------------------------------- ### Install and Enable mDNS on Linux Source: https://microshift.io/docs/user-documentation/networking/mdns Install necessary packages and enable the avahi-daemon service for mDNS resolution on Linux hosts. This allows other Linux hosts to discover MicroShift services. ```bash sudo dnf install -y nss-mdns avahi hostnamectl set-hostname microshift-vm.local systemctl enable --now avahi-daemon.service ``` -------------------------------- ### Start CRI-O and MicroShift Services Source: https://microshift.io/docs/developer-documentation/build-install-rpm Enables and starts the CRI-O and MicroShift systemd services. This command ensures that MicroShift and its container runtime are running. ```bash sudo systemctl enable crio --now sudo systemctl enable microshift --now ``` -------------------------------- ### Enable CRI-O Module and Install Source: https://microshift.io/docs/getting-started Enables a specific CRI-O module version and installs CRI-O and cri-tools. This is suitable for systems where module streams are managed via DNF. ```bash sudo dnf module enable -y cri-o:1.21 sudo dnf install -y cri-o cri-tools sudo systemctl enable crio --now ``` -------------------------------- ### Configure VM Provider Settings Source: https://microshift.io/docs/developer-documentation/vagrant-setup Configures the virtual machine provider settings within the Vagrantfile. This example sets memory to 3GB and CPUs to 2 for the libvirt provider. ```ruby config.vm.provider "libvirt" do |v| # provides 3GB of memory v.memory = 3072 # for parallelization v.cpus = 2 end ``` -------------------------------- ### Enable CRI-O Repository Source: https://microshift.io/docs/developer-documentation/build-install-rpm Enables the CRI-O repository for installation. This command is specific to RHEL-based systems and requires subscription-manager. ```bash command -v subscription-manager &> /dev/null \ && subscription-manager repos --enable rhocp-4.8-for-rhel-8-x86_64-rpms ``` -------------------------------- ### Install CRI-O on RHEL/Fedora/CentOS Stream Source: https://microshift.io/docs/getting-started Installs CRI-O and related tools, enabling the CRI-O service. Use this command for RHEL 8 systems with the appropriate repository enabled. ```bash command -v subscription-manager &> /dev/null && subscription-manager repos --enable rhocp-4.8-for-rhel-8-x86_64-rpms sudo dnf install -y cri-o cri-tools sudo systemctl enable crio --now ``` -------------------------------- ### Configure firewalld for MicroShift Ports Source: https://microshift.io/docs/user-documentation/networking/firewall This script installs and enables firewalld, then configures it to allow essential MicroShift ports and the NodePort range. It also adds the Pod IP range to the trusted zone. Run this script to ensure proper network access for MicroShift services and applications. ```bash sudo dnf install -y firewalld sudo systemctl enable firewalld --now sudo firewall-cmd --zone=trusted --add-source=10.42.0.0/16 --permanent sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp --permanent sudo firewall-cmd --zone=public --add-port=6443/tcp --permanent sudo firewall-cmd --zone=public --add-port=5353/udp --permanent sudo firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent sudo firewall-cmd --zone=public --add-port=30000-32767/udp --permanent sudo firewall-cmd --reload ``` -------------------------------- ### Check Running Containers Source: https://microshift.io/docs/developer-documentation/build-install-rpm Verifies that MicroShift and its related processes are running by listing containers managed by Podman and critcl. This is a useful check after starting or troubleshooting MicroShift. ```bash sudo podman ps sudo critcl ps ``` -------------------------------- ### Authenticate to a Registry with Podman Source: https://microshift.io/docs/user-documentation/how-tos/private-registries Use this command to log in to a private registry using Podman. This allows MicroShift to pull images from the authenticated registry across all namespaces. Ensure Podman is installed in your environment. ```bash podman login registry.redhat.io ``` -------------------------------- ### Verify Service and Assigned IP Source: https://microshift.io/docs/user-documentation/how-tos/example-usage Check the status of the NGINX service using `oc get svc`. This command verifies that the service has been created and an external IP address has been assigned by MetalLB. ```bash oc get svc -n test ``` -------------------------------- ### Enable CRI-O Module Source: https://microshift.io/docs/developer-documentation/build-install-rpm Enables the CRI-O module for DNF package manager. This command ensures the correct version of CRI-O is available for installation. ```bash sudo dnf module enable -y cri-o:1.21 ``` -------------------------------- ### Push Application RPMs to COPR with paack.py Source: https://microshift.io/docs/user-documentation/how-tos/offline-containers Pushes the packaged application container images to a COPR repository using `paack.py`. This allows for easy distribution and installation of offline container images. ```bash ./paack.py copr example-user-containers.yaml mangelajo/my-app-containers ``` -------------------------------- ### Delete Flannel DaemonSet as Workaround Source: https://microshift.io/docs/user-documentation/troubleshooting As a workaround for OpenShift pods entering CrashLoopBackOff, delete the flannel daemonset. This is safe for single-node MicroShift as flannel is only used for multi-node setups. ```bash oc delete ds -n kube-system kube-flannel-ds ``` -------------------------------- ### Extract Import Secret and Kubeconfig Source: https://microshift.io/docs/user-documentation/how-tos/acm-with-microshift Extract the import YAML and kubeconfig from the generated secret. This is necessary for subsequent steps in importing the managed cluster to the hub cluster. Requires 'yq' to be installed. ```bash IMPORT=`oc get secret "${CLUSTER_NAME}"-import -n "${CLUSTER_NAME}" -o jsonpath={.data.import\\.yaml} | base64 --decode` IMPORT_KUBECONFIG=$(yq eval-all '. | select(.metadata.name == "bootstrap-hub-kubeconfig") | .data.kubeconfig' IMPORT) ``` -------------------------------- ### Create Test Namespace and Deploy NGINX Source: https://microshift.io/docs/user-documentation/how-tos/example-usage Create a dedicated namespace 'test' and deploy an NGINX deployment within it using `oc create`. This prepares the environment for testing the load balancer. ```bash oc create ns test oc create deployment nginx -n test --image nginx ``` -------------------------------- ### Render Klusterlet Manifests Source: https://microshift.io/docs/user-documentation/how-tos/acm-with-microshift Prepare the Kustomize manifests by substituting placeholders for the cluster name and kubeconfig. This step is crucial before syncing the manifests to the MicroShift node. ```bash sed -i "s/{{ .clustername }}/${CLUSTER_NAME}/g" manifests/klusterlet.yaml sed -i "s/{{ .kubeconfig }}/${IMPORT_KUBECONFIG}/g" manifests/klusterlet-kubeconfighub.yaml ``` -------------------------------- ### Initialize Vagrant Environment Source: https://microshift.io/docs/developer-documentation/vagrant-setup Initializes a new Vagrant environment in the current directory, creating a Vagrantfile for configuration. ```bash vagrant init fedora/34-cloud-base ``` -------------------------------- ### Expose Deployment via Route Source: https://microshift.io/docs/user-documentation/networking/exposing-services Expose a deployment using `oc expose` and then create a route with a specific hostname. Ensure the hostname is mapped to the MicroShift node IP for external access. ```bash oc create deployment nginx --image=nginxinc/nginx-unprivileged:stable-alpine oc expose deployment nginx --port=8080 oc expose service/nginx --hostname=my-hostname.com # assuming my-hostname.com being mapped to the MicroShift node IP curl http://my-hostname.com ``` -------------------------------- ### Verify PVC and PV Creation and Hostpath Directory Source: https://microshift.io/docs/user-documentation/how-tos/dynamic-pv These commands verify that the PVC has been successfully bound to a PV and that the corresponding directory has been created in `/var/hpvolumes/` by the hostpath provisioner. ```bash $ oc get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE task-pv-claim Bound pvc-58a28c40-7726-4830-ba70-32d18188a8b4 39Gi RWO kubevirt-hostpath-provisioner 8m43s $ oc get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-58a28c40-7726-4830-ba70-32d18188a8b4 39Gi RWO Delete Bound default/task-pv-claim kubevirt-hostpath-provisioner 8m43s $ ll /var/hpvolumes/ total 0 drwxrwxrwx. 1 root root 8 Apr 5 10:26 pvc-58a28c40-7726-4830-ba70-32d18188a8b4 ``` -------------------------------- ### Build MicroShift RPMs Source: https://microshift.io/docs/developer-documentation/build-install-rpm Builds the SELinux and MicroShift RPM packages using the `make rpm` command. The generated RPMs will be located in the `./packaging/rpm/_rpmbuild/RPMS/` directory. ```bash make rpm ``` -------------------------------- ### Configure CRI-O/Podman Proxy Settings Source: https://microshift.io/docs/user-documentation/how-tos/proxy Set environment variables for HTTP(S) proxy and optionally NO_PROXY in `/etc/systemd/system/crio.service.d/00-proxy.conf`. This is necessary for Go programs like CRI-O and Podman that use the built-in `net/http` package. ```ini [Service] Environment=NO_PROXY="localhost,127.0.0.1,10.42.0.0/16,10.43.0.0/16" Environment=HTTP_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/" Environment=HTTPS_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/" ``` -------------------------------- ### Configure yum Proxy Settings Source: https://microshift.io/docs/user-documentation/how-tos/proxy Add these lines to `/etc/yum.conf` to configure yum to use a proxy. Replace placeholders with your proxy details. ```ini proxy=http://$PROXY_SERVER:$PROXY_SERVER proxy_username=$PROXY_USER proxy_password=$PROXY_PASSWORD ``` -------------------------------- ### Instantiate an NGINX Pod Mounting the Dynamic PV Source: https://microshift.io/docs/user-documentation/how-tos/dynamic-pv This pod manifest defines an NGINX container that mounts the dynamically provisioned volume from the `task-pv-claim` PVC to `/usr/share/nginx/html`. ```yaml apiVersion: v1 kind: Pod metadata: name: task-pv-pod spec: volumes: - name: task-pv-storage persistentVolumeClaim: claimName: task-pv-claim containers: - name: task-pv-container image: nginx ports: - containerPort: 80 name: "http-server" volumeMounts: - mountPath: "/usr/share/nginx/html" name: task-pv-storage ``` -------------------------------- ### Build MicroShift Binary Source: https://microshift.io/docs/developer-documentation/local-development Builds the MicroShift binary. Use `make` for a release build without debug symbols, or `make DEBUG=true` for a development build with debug symbols. ```bash # release build (without debug symbols) make # development build (with debug symbols) make DEBUG=true ``` -------------------------------- ### Create Kustomization File for Nginx Source: https://microshift.io/docs/user-documentation/manifests This snippet defines a Kustomization file that includes the Nginx deployment manifest and specifies the image to be used for the Nginx container. This allows for image customization during the apply process. ```yaml apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - nginx.yaml images: - name: NGINX_IMAGE newName: nginx:1.21 ``` -------------------------------- ### Create a Persistent Volume Claim for Dynamic PV Provisioning Source: https://microshift.io/docs/user-documentation/how-tos/dynamic-pv This manifest creates a Persistent Volume Claim (PVC) that triggers the hostpath provisioner to dynamically create a Persistent Volume (PV). Ensure the `kubevirt.io/provisionOnNode` annotation points to your target node. ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: task-pv-claim annotations: kubevirt.io/provisionOnNode: ricky-fedora.oglok.net spec: storageClassName: kubevirt-hostpath-provisioner accessModes: - ReadWriteOnce resources: requests: storage: 3Gi ``` -------------------------------- ### Package Application as RPM with paack.py Source: https://microshift.io/docs/user-documentation/how-tos/offline-containers Uses the `paack.py` script to package a workload application container image into an RPM. This RPM will be stored in read-only container storage and configured in `/etc/container/storage.conf`. ```bash ./paack.py rpm example-user-containers.yaml centos-stream-9-aarch64 ``` -------------------------------- ### Add Vagrant Box Source: https://microshift.io/docs/developer-documentation/vagrant-setup Adds a specified Vagrant box to your local system. This is the base image for your virtual machine. ```bash vagrant box add fedora/34-cloud-base ``` -------------------------------- ### Create Nginx Deployment Manifest Source: https://microshift.io/docs/user-documentation/manifests This snippet creates a Kubernetes Deployment manifest for an Nginx application. It defines the number of replicas and the container image to use. ```bash cat </etc/microshift/manifests/nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: NGINX_IMAGE ports: - containerPort: 8080 EOF ``` -------------------------------- ### Package Application as SRPM with paack.py Source: https://microshift.io/docs/user-documentation/how-tos/offline-containers Generates a source RPM (SRPM) for a workload application container image using `paack.py`. The SRPM contains repository binaries and manifests for each architecture, which are then used by the build system. ```bash ./paack.py srpm example-user-containers.yaml ``` -------------------------------- ### Verify MicroShift Status Source: https://microshift.io/docs/developer-documentation/local-development Checks if MicroShift is running by listing all pods in all namespaces using `oc`. ```bash oc get pods -A ``` -------------------------------- ### Copy Kubeconfig for Non-Admin Access Source: https://microshift.io/docs/getting-started Copies the MicroShift kubeconfig file to the user's home directory for direct access using oc or kubectl without administrator privileges. ```bash mkdir ~/.kube sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config ``` -------------------------------- ### Configure Full mDNS Resolver on Linux Source: https://microshift.io/docs/user-documentation/networking/mdns Enable the full mDNS resolver on Linux hosts to resolve hostnames in the form of 'subdomain.domain.local'. This involves updating the mdns.allow file and modifying the nsswitch.conf file. ```bash echo .local > /etc/mdns.allow echo .local. >> /etc/mdns.allow sed -i 's/mdns4_minimal/mdns/g' /etc/nsswitch.conf ``` -------------------------------- ### Expose Service with mDNS Hostname via Route Source: https://microshift.io/docs/user-documentation/networking/exposing-services Expose a service using a mDNS (.local) hostname for the route. This hostname will be announced via mDNS. ```bash oc expose service/nginx --hostname=my-hostname.local curl http://my-hostname.local ``` -------------------------------- ### Clone MicroShift Repository Source: https://microshift.io/docs/developer-documentation/local-development Clones the MicroShift GitHub repository and navigates into the project directory. Ensure you are using the correct branch for compatibility. ```bash git clone -b 4.8.0-microshift-2022-04-20-141053 https://github.com/openshift/microshift.git cd microshift ``` -------------------------------- ### Expose Deployment as NodePort Service Source: https://microshift.io/docs/user-documentation/networking/exposing-services Expose a deployment as a NodePort service. This makes the service accessible on a dedicated port on all cluster nodes. Ensure the 30000-32767 port range is open in the firewall. ```bash oc create deployment nginx --image=nginxinc/nginx-unprivileged:stable-alpine oc expose deployment nginx --type=NodePort --name=nodeport-nginx --port 8080 NODEPORT=$(oc get service nodeport-nginx -o jsonpath='{.spec.ports[0].nodePort}') IP=$(oc get node -A -o jsonpath='{.items[0].status.addresses[0].address}') curl http://$IP:$NODEPORT/ ``` -------------------------------- ### Connect to Vagrant VM via SSH Source: https://microshift.io/docs/developer-documentation/vagrant-setup Connects to the running Vagrant virtual machine using SSH. ```bash vagrant ssh ``` -------------------------------- ### Configure MetalLB Address Pool Source: https://microshift.io/docs/user-documentation/how-tos/example-usage Create a `ConfigMap` to define the IP address pool for MetalLB. This configuration specifies the network range and protocol (layer2) the load balancer will use to assign external IPs. ```yaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.1.240-192.168.1.250 ``` -------------------------------- ### Restart CRI-O Service Source: https://microshift.io/docs/user-documentation/how-tos/proxy After configuring proxy settings for CRI-O, restart the service to apply the changes. ```bash sudo systemctl restart crio ``` -------------------------------- ### Define MicroShift Cluster Namespace and Label Source: https://microshift.io/docs/user-documentation/how-tos/acm-with-microshift Set up a unique namespace for the MicroShift cluster and apply a label to identify it as a managed cluster within RHACM. Ensure CLUSTER_NAME is set to a unique value. ```bash export CLUSTER_NAME=microshift oc new-project ${CLUSTER_NAME} oc label namespace ${CLUSTER_NAME} cluster.open-cluster-management.io/managedCluster=${CLUSTER_NAME} ``` -------------------------------- ### Allow Pod IP Range with firewalld Source: https://microshift.io/docs/user-documentation/networking/firewall This command adds the specified Pod IP range to the trusted zone in firewalld, allowing pods to communicate with the internal coreDNS server. Ensure the PodIP range matches your MicroShift network configuration. ```bash sudo firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 ``` -------------------------------- ### Create LoadBalancer Service for NGINX Source: https://microshift.io/docs/user-documentation/how-tos/example-usage Define and create a Kubernetes `Service` of type `LoadBalancer` for the NGINX deployment. This service utilizes the MetalLB 'default' address pool to expose the application externally. ```yaml apiVersion: v1 kind: Service metadata: name: nginx namespace: test annotations: metallb.universe.tf/address-pool: default spec: ports: - port: 80 targetPort: 80 selector: app: nginx type: LoadBalancer ``` -------------------------------- ### Apply KlusterletAddonConfig for Managed Cluster Source: https://microshift.io/docs/user-documentation/how-tos/acm-with-microshift Configure the KlusterletAddonConfig to enable various RHACM controllers and define cluster labels for the managed MicroShift cluster. This ensures that RHACM components can manage the cluster effectively. ```yaml cat < ssh-config.conf ``` -------------------------------- ### Create a Kubernetes Docker Pull Secret from a config file Source: https://microshift.io/docs/user-documentation/how-tos/private-registries Create a Kubernetes secret of type `kubernetes.io/dockerconfigjson` using your container manager's configuration file. This secret is namespace-scoped. ```bash # First create the secret in a name space using our configuration file oc create secret generic my_pull_secret \ --from-file=.dockerconfigjson=.docker/config.json \ --type=kubernetes.io/dockerconfigjson ``` -------------------------------- ### Cleanup MicroShift Processes Source: https://microshift.io/docs/developer-documentation/local-development Stops all MicroShift processes and removes its state, effectively cleaning up the local development environment. ```bash sudo hack/cleanup.sh ``` -------------------------------- ### Link a Pull Secret to a Service Account Source: https://microshift.io/docs/user-documentation/how-tos/private-registries Attach a previously created pull secret to the 'default' service account within a namespace. This enables the service account to pull images from the specified registry. ```bash # Then attach the secret to a service account in the name space oc secrets link default my_pull_secret --for=pull ``` -------------------------------- ### Stop MicroShift Service Source: https://microshift.io/docs/developer-documentation/build-install-rpm Stops the MicroShift service using systemd. This command gracefully shuts down the MicroShift cluster. ```bash sudo systemctl stop microshift ``` -------------------------------- ### Troubleshoot OpenShift Pods CrashLoopBackOff on RHEL 8.4 Source: https://microshift.io/docs/user-documentation/troubleshooting When OpenShift pods enter CrashLoopBackOff on RHEL 8.4, check journalctl for iptables segmentation faults and CNI network errors. This often indicates an issue with the iptables configuration. ```log Sep 21 19:12:54 ip-172-31-85-30.ec2.internal microshift[1297]: I0921 19:12:54.399365 1297 server_others.go:185] Using iptables Proxier. Sep 21 19:13:50 ip-172-31-85-30.ec2.internal kernel: iptables[2438]: segfault at 88 ip 00007feaf5dc0e47 sp 00007fff6f2fea08 error 4 in libnftnl.so.11.3.0[7feaf5dbc000+16000] Sep 21 19:13:50 ip-172-31-85-30.ec2.internal systemd-coredump[2442]: Process 2438 (iptables) of user 0 dumped core. Sep 21 20:35:57 ip-172-31-85-30.ec2.internal microshift[1297]: E0921 20:35:57.914558 1297 remote_runtime.go:143] StopPodSandbox "1ae45abde0b46d8ea5176b6a00f0e5b4291e6bb496762ca25a4196a5f18d0475" from runtime service failed: rpc error: code = Unknown desc = failed to destroy network for pod sandbox k8s_service-ca-64547678c6-2nxnp_openshift-service-ca_6236deba-fc5f-4915-817d-f8699a4accfc_0(1ae45abde0b46d8ea5176b6a00f0e5b4291e6bb496762ca25a4196a5f18d0475): error removing pod openshift-service-ca_service-ca-64547678c6-2nxnp from CNI network "crio": running [/usr/sbin/iptables -t nat -D POSTROUTING -s 10.42.0.3 -j CNI-d5d0edec163ce01e4591c1c4 -m comment --comment name: "crio" id: "1ae45abde0b46d8ea5176b6a00f0e5b4291e6bb496762ca25a4196a5f18d0475" --wait]: exit status 2: iptables v1.8.4 (nf_tables): Chain 'CNI-d5d0edec163ce01e4591c1c4' does not exist ``` ```log I0921 17:36:17.811391 1 router.go:262] router "msg"="router is including routes in all namespaces" E0921 17:36:17.914638 1 haproxy.go:418] can't scrape HAProxy: dial unix /var/lib/haproxy/run/haproxy.sock: connect: no such file or directory I0921 17:36:17.948417 1 router.go:579] template "msg"="router reloaded" "output"=" - Checking http://localhost:80 ...\n - Health check ok : 0 retry attempt(s).\n" ``` -------------------------------- ### Apply ManagedCluster Resource Source: https://microshift.io/docs/user-documentation/how-tos/acm-with-microshift Define the ManagedCluster resource to establish the MicroShift cluster as a managed entity within the RHACM hub cluster. This allows the hub to accept client connections for management. ```yaml cat <