Chapter 12. Provisioning Virtual Machines on Container-native Virtualization

Container-native Virtualization addresses the needs of development teams that have adopted or want to adopt Kubernetes but possess existing virtual machine (VM)-based workloads that cannot be easily containerized. This technology provides a unified development platform where developers can build, modify, and deploy applications residing in application containers and VMs in a shared environment. These capabilities support rapid application modernization across the open hybrid cloud.

With Red Hat Satellite, you can create a compute resource for Container-native Virtualization so that you can provision and manage Kubernetes virtual machines using Satellite.

Note that template provisioning is not supported for this release.

Important

The Container-native Virtualization compute resource is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see https://access.redhat.com/support/offerings/techpreview/.

Prerequisites

  • Synchronized content repositories for Red Hat Enterprise Linux. For more information, see Synchronizing Red Hat Repositories in the Content Management Guide.
  • An activation key for host registration. For more information, see Creating An Activation Key in the Content Management guide.
  • A Container-native Virtualization user that has the cluster-admin permissions for the Openshift Container Platform virtual cluster. For more information, see Using RBAC to Define and Apply Permissions in the Authentication guide of the Openshift Container Platform documentation.
  • A Capsule Server managing a network on the Container-native Virtualization server. Ensure that no other DHCP services run on this network to avoid conflicts with Capsule Server. For more information about network service configuration for Capsule Servers, see Chapter 3, Configuring Networking.
  • A Satellite user account with the following roles:

  • A custom role in Satellite with the following permissions:

    • view_compute_resources
    • destroy_compute_resources_vms
    • power_compute_resources_vms
    • create_compute_resources_vms
    • view_compute_resources_vms
    • view_locations
    • view_subnets

      For more information about creating roles, see Creating a Role in the Administering Red Hat Satellite guide. For more information about adding permissions to a role, see Adding Permissions to a Role in the Administering Red Hat Satellite guide.

12.1. Adding a Container-native Virtualization Connection to Satellite Server

Use this procedure to add Container-native Virtualization as a compute resource in Satellite.

Procedure

  1. Enter the following satellite-installer command to enable the Container-native Virtualization plugin for Satellite:

    # satellite-installer --enable-foreman-plugin-kubevirt
  2. Generate a bearer token to use for HTTP and HTTPs authentication. On the Container-native Virtualization server, list the secrets that contain tokens:

    # kubectl get secrets
  3. List the token for your secret:

    # kubectl get secrets YOUR_SECRET -o jsonpath='{.data.token}' | base64 -d | xargs

    Make a note of this token to use later in this procedure.

  4. In the Satellite web UI, navigate to Infrastructure > Compute Resources, and click Create Compute Resource.
  5. In the Name field, enter a name for the new compute resource.
  6. From the Provider list, select Container-native Virtualization.
  7. In the Description field, enter a description for the compute resource.
  8. In the Hostname field, enter the address of the Container-native Virtualization server that you want to use.
  9. In the API Port field, enter the port number that you want to use for provisioning requests from Satellite to Container-native Virtualization.
  10. In the Namespace field, enter the user name of the Container-native Virtualization virtual cluster that you want to use.
  11. In the Token field, enter the bearer token for HTTP and HTTPs authentication.
  12. Optional: In the X509 Certification Authorities field, enter a certificate to enable client certificate authentication for API server calls.