ContainerCraft / Kargo

Kargo Private Cloud Platform
GNU General Public License v3.0
99 stars 13 forks source link
esxi kubernetes kubevirt kvm platform qemu vmware xen

Kargo - The Cloud-Native ESXi Replacement

Quickstart Test

Overview

Kargo replaces traditional hypervisors with a cloud-native container and virtualization platform. Kargo works seamlessly in on-prem, cloud, and local environments, leveraging Kubernetes to create a robust and scalable platform for modern compute and platform as a service use cases.

Join Kargo users and contributors in the ContainerCraft Community Discord!

Kargo in Konductor Github CodeSpaces Devcontainer

Note: Kargo is in early development. Checkout @usrbinkat's inaugural Twitter/X Thread to see how it all started.

Project Goals

Getting Started

Try Kargo with just a browser to get started with GitHub Codespaces following the steps below.

Prerequisites

Ensure you have the following tools and accounts:

  1. GitHub
  2. Pulumi Cloud
  3. Microsoft Edge or Google Chrome

Quickstart

Check out the video to see Kargo deploy for yourself, or try it in your browser with the steps below.

Step-by-Step Instructions

  1. Log in to GitHub.

  2. Launch Kargo in GitHub Codespaces:

    • Use the Launch Kargo link directly or use the green Code button above to start a new Codespace.
    • Create a new Codespace with the following options:
      • Branch: main
      • Dev Container Configuration: konductor
      • Region: Your choice
      • Machine Type: 4 cores, 16 GB RAM, or better
  3. Open the VSCode Integrated Terminal:

    • Use key combination [ Ctrl + ]` to open the terminal.
  4. Authenticate Credentials

Login to Pulumi Cloud and other services.

task login
  1. Configure:

Configure the Pulumi IaC Stack parameters.

# confirm Pulumi stack
export ORGANIZATION="${GITHUB_USER:-${GITHUB_REPOSITORY_OWNER:-}}"
export DEPLOYMENT="${RepositoryName:-}"
task configure
  1. Deploy Kubernetes:

Deploy Kubernetes using Talos.

task kubernetes
  1. Deploy Platform:

Deploy the Kubevirt PaaS IaC to Kubernetes.

task deploy
  1. Deploy a Virtual Machine:

Deploy an Ubuntu Virtual Machine on the platform using Kubevirt.

Note: Run this step manually via integrated terminal.

# Purge old known host fingerprints
task ssh-clean

# Enable the VM instance
pulumi config set --path vm.enabled true

# Deploy the Kubevirt VM instance
pulumi up --skip-preview --refresh=false
  1. SSH to the new VM Instance:

Access the VM via SSH using a Kubernetes NodePort service.

ssh -p 30590 -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no kc2@localhost screenfetch
  1. Virtctl SSH:

Use virtctl to access the VM via SSH without a NodePort service.

# SSH using virtctl
virtctl ssh kc2@ubuntu
  1. Virtctl Serial Console:

Use virtctl to access the serial console of the VM.

# Serial console access
virtctl console ubuntu

Tip: To exit the serial console, press Ctrl + ] or close the terminal.

  1. Cleanup:

Clean up all Kubernetes and Pulumi resources.

task clean-all

Contributing

Kargo thrives on community contributions. Learn how to get involved by reading our CONTRIBUTING.md.

Developing Kargo

Use our GitHub Actions integration and the act tool to test CI pipelines locally before pushing your changes.

To test Kargo CI locally:

task act

Join the Community + Learn More

For more discussion, support, and contribution, join our ContainerCraft Community Discord Kargo Channel.

For more information, explore the Kargo Project FAQ.