Skip to main content

GitHub Actions

vCluster.Pro provides the following GitHub Actions for use in workflows:

Virtual Clusters for Pull Requests

These examples show how to create and delete Virtual Clusters for pull requests.

This example shows how to create and delete a virtual cluster for testing an application named my-app on pull requests.

# .github/workflows/vclusters.yaml
name: Pull Request Checks
on:
pull_request:
branches:
- "main"
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- name: Install vCluster CLI
uses: loft-sh/setup-vcluster@main
- name: Login to vCluster.Pro instance
env:
LOFT_URL: ${{ secrets.LOFT_URL }}
ACCESS_KEY: ${{ secrets.ACCESS_KEY }}
run: vcluster login $LOFT_URL --access-key $ACCESS_KEY
- name: Create PR Virtual Cluster
env:
NAME: pr-${{ github.event.pull_request.number }}-${{ github.sha }}-${{ github.run_id }}
run: vcluster create $NAME --project default
- name: Deploy Application
run: kubectl apply -Rf ./kubernetes
- name: Wait for Deployment
run: kubectl rollout status deployments/my-app
- name: Run Tests
run: make e2e
- name: Delete PR Virtual Cluster
env:
NAME: pr-${{ github.event.pull_request.number }}-${{ github.sha }}-${{ github.run_id }}
run: vcluster delete $NAME --project default

Explanation:

  1. The Setup vCluster.Pro action is used to install the vCluster CLI.
  2. The vcluster login command is used to log in to the organization's vCluster.Pro instance. Environment variables LOFT_URL and ACCESS_KEY are populated using GitHub secrets.
  3. The vcluster create command is used to create a unique virtual cluster using information about the pull request in the default project. This will automatically configure the kube context for the next steps.
  4. The next step deploys the application using the runner provided kubectl and manifests located under ./kubernetes.
  5. Before running tests, we use kubectl to wait for the my-app deployment to become ready.
  6. Now we run the end-to-end tests. In this example we're using make to run tests, but the command should be customized for your testing framework.
  7. Finally, the vcluster delete command is used to delete the virtual cluster.