Use this skill when you need to deploy HyperShift clusters on AWS infrastructure with proper STS credentials, IAM roles, and VPC configuration
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
This skill provides implementation guidance for creating HyperShift clusters on AWS, handling AWS-specific requirements including STS credentials, IAM roles, VPC configuration, and regional best practices.
This skill is automatically invoked by the /hcp:generate aws command to guide the AWS provider cluster creation process.
Development Environment:
Production Environment:
Cost-Optimized Environment:
Parse the natural language description for AWS-specific requirements:
Environment Type Detection:
Performance Indicators:
Security/Compliance:
Special Requirements:
Required Parameters:
--region: AWS region (default: us-east-1)--pull-secret: Path to pull secret file--release-image: OpenShift release image--sts-creds: REQUIRED - Path to STS credentials file--role-arn: REQUIRED - ARN of the IAM role to assume--base-domain: REQUIRED - Base domain for the clusterSmart Defaults by Environment:
Development Environment:
--instance-type m5.large
--node-pool-replicas 2
--control-plane-availability-policy SingleReplica
--endpoint-access Public
--root-volume-size 120
--zones auto-select 2 zones based on region
Production Environment:
--instance-type m5.xlarge
--node-pool-replicas 3
--control-plane-availability-policy HighlyAvailable
--endpoint-access PublicAndPrivate
--root-volume-size 120
--auto-repair true
--zones auto-select 3+ zones based on region
Cost-Optimized Environment:
--instance-type m5.large
--node-pool-replicas 2
--control-plane-availability-policy SingleReplica
--endpoint-access Public
--root-volume-size 120
--zones auto-select 2 zones (minimal redundancy)
Required Information Collection:
Cluster Name
š¹ **Cluster Name**: What would you like to name your cluster?
- Must be DNS-compatible (lowercase, hyphens allowed)
- Used for AWS resource naming
- Example: dev-cluster, prod-app, demo-env
AWS Region
š¹ **AWS Region**: Which AWS region should host your cluster?
- Consider latency to your users
- Verify desired instance types are available
- [Press Enter for default: us-east-1]
Popular regions:
- us-east-1 (N. Virginia) - Largest service availability
- us-west-2 (Oregon) - West coast, latest services
- eu-west-1 (Ireland) - Europe
- ap-southeast-1 (Singapore) - Asia Pacific
STS Credentials
š¹ **STS Credentials**: Path to your AWS STS credentials file?
- Required for AWS authentication
- Generate using: aws sts get-session-token
- Example: /home/user/.aws/sts-creds.json
- Format: {"AccessKeyId": "...", "SecretAccessKey": "...", "SessionToken": "..."}
IAM Role ARN
š¹ **IAM Role ARN**: ARN of the IAM role for HyperShift?
- Role must have required HyperShift permissions
- Example: arn:aws:iam::123456789012:role/hypershift-operator-role
- See: https://hypershift.openshift.io/aws-setup/
Base Domain
š¹ **Base Domain**: What base domain should be used for cluster DNS?
- Must be a domain you control in Route53
- Used for cluster API and application routes
- Example: example.com, clusters.mycompany.com
Pull Secret
š¹ **Pull Secret**: Path to your OpenShift pull secret file?
- Required for accessing OpenShift container images
- Download from: https://console.redhat.com/openshift/install/pull-secret
- Example: /home/user/pull-secret.json
OpenShift Version
š¹ **OpenShift Version**: Which OpenShift version do you want to use?
š **Check supported versions**: https://amd64.ocp.releases.ci.openshift.org/
- Enter release image URL: quay.io/openshift-release-dev/ocp-release:X.Y.Z-multi
- [Press Enter for default: quay.io/openshift-release-dev/ocp-release:4.18.0-multi]
Optional Configuration (based on description analysis):
Instance Type (if performance requirements detected)
š¹ **Instance Type**: Select instance type based on your performance needs:
- m5.large (2 vCPU, 8GB RAM) - Development, light workloads
- m5.xlarge (4 vCPU, 16GB RAM) - Production, balanced workloads
- m5.2xlarge (8 vCPU, 32GB RAM) - High-performance workloads
- c5.xlarge (4 vCPU, 8GB RAM) - Compute-optimized
- [Press Enter for default based on environment type]
Node Pool Replicas
š¹ **Node Pool Replicas**: How many worker nodes do you need?
- Minimum: 2 (for basic redundancy)
- Production recommended: 3+
- [Press Enter for default based on environment type]
Availability Zones (auto-selected, but confirmed)
š¹ **Availability Zones**: Detected region: us-east-1
Auto-selecting zones for optimal distribution:
- Development: us-east-1a, us-east-1b (2 zones)
- Production: us-east-1a, us-east-1b, us-east-1c (3 zones)
Modify zone selection? [y/N]
For FIPS Compliance (if detected):
š¹ **FIPS Mode**: Enable FIPS mode for compliance?
- Required for government/regulated workloads
- May impact performance
- [yes/no] [Press Enter for default: no]
For High-Performance Workloads:
š¹ **Root Volume Size**: Increase root volume size?
- Default: 120GB
- High-performance workloads: 200GB+
- [Press Enter for default: 120]
For Production Environments:
š¹ **Auto-Repair**: Enable automatic node repair?
- Automatically replaces unhealthy nodes
- Recommended for production
- [yes/no] [Press Enter for default: yes for production]
Basic AWS Cluster Command:
hypershift create cluster aws \
--name <cluster-name> \
--namespace <cluster-name>-ns \
--region <region> \
--instance-type <instance-type> \
--pull-secret <pull-secret-path> \
--node-pool-replicas <replica-count> \
--zones <zone-list> \
--control-plane-availability-policy <policy> \
--sts-creds <sts-creds-path> \
--role-arn <role-arn> \
--base-domain <base-domain> \
--release-image <release-image>
Development Configuration Example:
hypershift create cluster aws \
--name dev-cluster \
--namespace dev-cluster-ns \
--region us-east-1 \
--instance-type m5.large \
--pull-secret /path/to/pull-secret.json \
--node-pool-replicas 2 \
--zones us-east-1a,us-east-1b \
--control-plane-availability-policy SingleReplica \
--endpoint-access Public \
--root-volume-size 120 \
--sts-creds /path/to/sts-creds.json \
--role-arn arn:aws:iam::123456789012:role/hypershift-role \
--base-domain example.com \
--release-image quay.io/openshift-release-dev/ocp-release:4.18.0-multi
Production Configuration Example:
hypershift create cluster aws \
--name production-cluster \
--namespace production-cluster-ns \
--region us-west-2 \
--instance-type m5.xlarge \
--pull-secret /path/to/pull-secret.json \
--node-pool-replicas 3 \
--zones us-west-2a,us-west-2b,us-west-2c \
--control-plane-availability-policy HighlyAvailable \
--endpoint-access PublicAndPrivate \
--root-volume-size 120 \
--auto-repair \
--sts-creds /path/to/sts-creds.json \
--role-arn arn:aws:iam::123456789012:role/hypershift-prod-role \
--base-domain clusters.company.com \
--release-image quay.io/openshift-release-dev/ocp-release:4.18.0-multi
FIPS-Enabled Configuration:
hypershift create cluster aws \
--name compliance-cluster \
--namespace compliance-cluster-ns \
--region us-gov-east-1 \
--instance-type m5.xlarge \
--pull-secret /path/to/pull-secret.json \
--node-pool-replicas 3 \
--zones us-gov-east-1a,us-gov-east-1b,us-gov-east-1c \
--control-plane-availability-policy HighlyAvailable \
--fips \
--sts-creds /path/to/sts-creds.json \
--role-arn arn:aws-us-gov:iam::123456789012:role/hypershift-fips-role \
--base-domain secure.gov.example.com \
--release-image quay.io/openshift-release-dev/ocp-release:4.18.0-multi
Provide validation commands:
## Pre-Flight Checks
Before creating the cluster, verify your setup:
1. **AWS Credentials:**
aws sts get-caller-identity
2. **STS Credentials File:**
cat /path/to/sts-creds.json | jq .
3. **IAM Role Access:**
aws iam get-role --role-name hypershift-role
4. **Route53 Domain:**
aws route53 list-hosted-zones --query "HostedZones[?Name=='example.com.']"
5. **Region Availability:**
aws ec2 describe-availability-zones --region us-east-1
6. **Instance Type Availability:**
aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=instance-type,Values=m5.large --region us-east-1
Next Steps:
## Next Steps
1. **Verify prerequisites are met:**
- AWS credentials configured
- STS credentials file exists and is valid
- IAM role has required permissions
- Base domain exists in Route53
2. **Run the generated command:**
Copy and paste the command above
3. **Monitor cluster creation:**
kubectl get hostedcluster -n <cluster-namespace>
kubectl get nodepool -n <cluster-namespace>
4. **Check AWS resources:**
- EC2 instances in AWS console
- Load balancers created
- VPC and networking resources
5. **Access cluster when ready:**
hypershift create kubeconfig --name <cluster-name> --namespace <cluster-namespace>
export KUBECONFIG=<cluster-name>-kubeconfig
oc get nodes
Scenario: AWS credentials are invalid or expired.
Action:
AWS credentials validation failed.
Please check:
1. AWS CLI configuration: aws configure list
2. STS credentials file validity
3. IAM permissions
Regenerate STS credentials:
aws sts get-session-token --duration-seconds 3600
Scenario: Specified IAM role doesn't exist or can't be assumed.
Action:
IAM role "arn:aws:iam::123456789012:role/hypershift-role" not found or inaccessible.
Please verify:
1. Role exists: aws iam get-role --role-name hypershift-role
2. Role has required permissions
3. Trust relationship allows your account to assume the role
See HyperShift AWS setup guide: https://hypershift.openshift.io/aws-setup/
Scenario: Instance type not available in selected region/zones.
Action:
Instance type "m5.large" not available in zone "us-east-1f".
Checking alternative zones in us-east-1:
ā
us-east-1a (available)
ā
us-east-1b (available)
ā us-east-1f (not available)
Suggested zones: us-east-1a,us-east-1b
Would you like me to update the command?
Scenario: Base domain not found in Route53 or not accessible.
Action:
Base domain "example.com" not found in Route53.
Please ensure:
1. Domain exists in Route53: aws route53 list-hosted-zones
2. Account has access to the hosted zone
3. Domain spelling is correct
Alternative: Use a subdomain you control (e.g., clusters.mydomain.com)
Scenario: AWS account limits would be exceeded.
Action:
AWS service limits may be exceeded:
- EC2 instances: Current: 18/20, Requested: 5 more
- Elastic IPs: Current: 4/5, Requested: 2 more
Consider:
1. Request limit increases via AWS Support
2. Choose smaller instance types
3. Reduce node count
4. Clean up unused resources
ā Using root AWS credentials
Never use root account credentials for HyperShift
ā Use IAM roles and STS credentials
ā Single availability zone for production
--zones us-east-1a # Single point of failure
ā
Use multiple zones: --zones us-east-1a,us-east-1b,us-east-1c
ā Over-provisioning for development
--instance-type m5.8xlarge --node-pool-replicas 10 # Expensive for dev
ā
Use appropriate sizing: --instance-type m5.large --node-pool-replicas 2
ā Ignoring region-specific limitations
Choosing regions without checking instance type availability
ā Verify instance types and services are available in target region
Input: "cheap AWS cluster for testing our new microservice"
Analysis:
- Environment: Development
- Cost focus: High priority
- Scale: Minimal
Generated Command:
hypershift create cluster aws \
--name dev-microservice \
--namespace dev-microservice-ns \
--region us-east-1 \
--instance-type m5.large \
--node-pool-replicas 2 \
--control-plane-availability-policy SingleReplica \
--endpoint-access Public
Input: "highly available AWS production cluster for customer-facing applications"
Analysis:
- Environment: Production
- Availability: High priority
- Scale: Enterprise
Generated Command:
hypershift create cluster aws \
--name prod-customer-apps \
--namespace prod-customer-apps-ns \
--region us-west-2 \
--instance-type m5.xlarge \
--node-pool-replicas 5 \
--zones us-west-2a,us-west-2b,us-west-2c \
--control-plane-availability-policy HighlyAvailable \
--endpoint-access PublicAndPrivate \
--auto-repair