hypershift:cluster
SkillCloud & infraCreate and destroy HyperShift clusters on AWS for testing Rossoctl platform. Manages ephemeral OpenShift clusters.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the hypershift:cluster skill
What this skill tells your AI
The instructions your AI receives, as published by rossoctl/rossoctl in .claude/skills/hypershift:cluster/SKILL.md and read by ahel’s review.
Create, destroy, and manage HyperShift clusters on AWS for testing.
When to Use
- Need to create a test OpenShift cluster on AWS
- Destroying a cluster after testing
- User asks "create hypershift cluster" or "destroy cluster"
- Testing Rossoctl on real OpenShift (not Kind)
Prerequisites
Before creating clusters, ensure setup is complete:
# 1. Run preflight check
./.github/scripts/hypershift/preflight-check.sh
# 2. Setup credentials (first time only, requires IAM admin)
./.github/scripts/hypershift/setup-hypershift-ci-credentials.sh
# 3. Setup local tools (hcp CLI, ansible, etc.)
./.github/scripts/hypershift/local-setup.sh
Create Cluster
Quick Create (Default Suffix)
# Creates: rossoctl-hypershift-custom-<username>
./.github/scripts/hypershift/create-cluster.sh
Create with Custom Suffix
# Creates: rossoctl-hypershift-custom-pr529
./.github/scripts/hypershift/create-cluster.sh pr529
# Creates: rossoctl-hypershift-custom-mytest
./.github/scripts/hypershift/create-cluster.sh mytest
Create with Custom Configuration
# More worker nodes and larger instances
REPLICAS=3 INSTANCE_TYPE=m5.2xlarge ./.github/scripts/hypershift/create-cluster.sh
# Specific OCP version
OCP_VERSION=4.19.5 ./.github/scripts/hypershift/create-cluster.sh
Environment Variables
| Variable | Default | Description |
|---|---|---|
REPLICAS | 2 | Number of worker nodes |
INSTANCE_TYPE | m5.xlarge | AWS instance type |
OCP_VERSION | 4.20.11 | OpenShift version |
CLUSTER_SUFFIX | username | Suffix for cluster name |
MANAGED_BY_TAG | rossoctl-hypershift-custom | IAM scope prefix |
Destroy Cluster
Quick Destroy
# Destroy by suffix
./.github/scripts/hypershift/destroy-cluster.sh <suffix>
# Examples:
./.github/scripts/hypershift/destroy-cluster.sh pr529
./.github/scripts/hypershift/destroy-cluster.sh ladas
Destroy by Full Name
./.github/scripts/hypershift/destroy-cluster.sh rossoctl-hypershift-custom-pr529
After Cluster Creation
The create script outputs next steps. Typical workflow:
# 1. Set kubeconfig to new cluster
export KUBECONFIG=~/clusters/hcp/<cluster-name>/auth/kubeconfig
# 2. Verify cluster access
oc get nodes
oc get clusterversion
# 3. Deploy Rossoctl platform
./.github/scripts/operator/30-run-installer.sh --env ocp
./.github/scripts/operator/41-wait-crds.sh
# 4. Deploy demo agents
./.github/scripts/operator/71-build-weather-tool.sh
./.github/scripts/operator/72-deploy-weather-tool.sh
./.github/scripts/operator/74-deploy-weather-agent.sh
# 5. Run E2E tests
export AGENT_URL="https://$(oc get route -n team1 weather-service -o jsonpath='{.spec.host}')"
export ROSSOCTL_CONFIG_FILE=deployments/envs/ocp_values.yaml
./.github/scripts/operator/90-run-e2e-tests.sh
Full Test Workflow
Use the full test script for complete workflow:
# Full test: create cluster -> deploy -> test -> keep cluster
./.github/scripts/local-setup/hypershift-full-test.sh --skip-cluster-destroy
# With custom suffix
./.github/scripts/local-setup/hypershift-full-test.sh pr123 --skip-cluster-destroy
# Include cleanup after test
./.github/scripts/local-setup/hypershift-full-test.sh --include-cluster-destroy
Cluster Naming
Clusters are named: ${MANAGED_BY_TAG}-${CLUSTER_SUFFIX}
| MANAGED_BY_TAG | Use Case | Example |
|---|---|---|
rossoctl-hypershift-custom | Local development (default) | rossoctl-hypershift-custom-ladas |
rossoctl-hypershift-ci | CI/CD pipelines | rossoctl-hypershift-ci-pr529 |
Troubleshooting
Cluster Creation Stuck
# Check HostedCluster status (use management cluster kubeconfig)
source .env.rossoctl-hypershift-custom # or .env.hypershift-ci
oc get hostedcluster -n clusters
# Check conditions
oc get hostedcluster -n clusters <cluster-name> -o jsonpath='{range .status.conditions[*]}{.type}{": "}{.status}{" - "}{.message}{"\n"}{end}'
# Check NodePool
oc get nodepool -n clusters <cluster-name>
Cluster Deletion Stuck
# Debug AWS resources
./.github/scripts/hypershift/debug-aws-hypershift.sh <cluster-name>
# Force remove finalizer (only if AWS resources are cleaned)
oc patch hostedcluster -n clusters <cluster-name> -p '{"metadata":{"finalizers":null}}' --type=merge
Control Plane Namespace Issues
# If namespace is stuck terminating
oc delete ns clusters-<cluster-name> --wait=false
oc patch ns clusters-<cluster-name> -p '{"metadata":{"finalizers":null}}' --type=merge
Check AWS Quotas
# Before creating clusters, check capacity
./.github/scripts/hypershift/check-quotas.sh
Related Skills
- hypershift:setup: Setup local environment for HyperShift
- hypershift:preflight: Run pre-flight checks
- hypershift:quotas: Check AWS quotas
- hypershift:debug: Debug AWS resources for stuck clusters
Related Documentation
.github/scripts/local-setup/README.md- Local setup documentationdocs/hypershift-hcp-research.md- HyperShift research and architecture
Signals
- GitHub stars
- 300
- Forks
- 107
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
hypershift-cluster- Source
- github.com/rossoctl/rossoctl