This document discusses modernizing virtualized workloads using OpenShift Virtualization and Kubernetes. It provides an overview of OpenShift Virtualization and how it allows running VM and container workloads side by side using KubeVirt. It then discusses migrating a classic .NET application on Windows Server to a containerized .NET Core application on Kubernetes while still running legacy components in a Windows VM. Steps for building the container image for the migrated .NET Core application are also provided.
2. 2
Accelerate your journey to Kubernetes
with the Konveyor Community
A community of people passionate about
helping others modernize and migrate
their applications to the hybrid cloud by
building tools and best practices on
how to break down monoliths, adopt
containers, and embrace Kubernetes.
www.konveyor.io
4. 4
What is OpenShift Virtualization?
● OpenShift Operator based on the upstream KubeVirt project
● KubeVirt brings VMs to the Kubernetes world
● Allows you to run VM and container workloads side by side
5. 5
Major public clouds are running KVM for Virtualization. Any customer looking at public cloud is using KVM.
Our vision is to provide enterprise virtualization in the private data center based on KVM,
driving consistency and containing cost.
PUBLIC CLOUD
PRIVATE CLOUD
KVM
BASED
VIRTUALIZATION
KVM is Hybrid Cloud / Virtualization
6. 6
Install using Operator Hub
● Install through Web Console or CLI
● Installation using CLI is fully automatable
● Supports installation in disconnected
environments
7. 7
Supported Guest Operating Systems
● Red Hat Enterprise Linux 6, 7, and 8.
● Microsoft Windows Server 2012 R2, 2016, and 2019.
● Microsoft Windows 10.
8. 8
VM Networking
● Default networking via Masquerade
○ VM assigned non-routable IP
○ External traffic forwarded via virt-launcher pod
● Can attach multiple NICs to VM via Multus
● Can access host network by using bridge interface on OCP host
○ Can be configured via NMstate
11. 11
Why run a Windows Server VM on Kubernetes?
● Not always feasible to migrate applications all at once.
○ Large applications, especially monolithic ones
● Dependencies on libraries not available on .Net Core
● Colocation of legacy VM and updated code running in containers
○ Communication via internal Kubernetes Service instead of egress to another
server in datacenter.
● Migrate away from costly hypervisors.