Créer HostedCluster
Cette skill crée un HostedCluster HyperShift sur AWS à des fins de développement et de test. Les clusters créés sont destinés aux workflows de développement local, non à un usage en production.
Quand utiliser cette skill
Utilisez cette skill quand :
- Vous devez créer un HostedCluster de dev/test pour une vérification manuelle
- Vous voulez tester les fonctionnalités de HyperShift sur un cluster en direct
- Vous avez besoin d'un HostedCluster avec des images CPO ou HO personnalisées
- Vous itérez sur des modifications de code et avez besoin d'un cluster pour les valider
Prérequis
Sourcez le fichier d'environnement avant d'utiliser cette skill :
source dev/claude-env.sh
Exigences supplémentaires :
- Credentials AWS chargées (source
$AWS_CREDS_SOURCE) - KUBECONFIG pointant vers le cluster de gestion (
$MGMT_KUBECONFIG) - Binary hypershift compilé (
./bin/hypershiftou exécutezmake hypershift) - Pull secret disponible (
$PULL_SECRET)
Configuration de l'environnement
Variables d'environnement depuis dev/claude-env.sh :
| Variable | Description |
|---|---|
AWS_CREDENTIALS |
Chemin vers le fichier de credentials AWS |
AWS_CREDS_SOURCE |
Script pour sourcer les variables d'env AWS |
BASE_DOMAIN |
Domaine DNS de base pour les clusters |
PULL_SECRET |
Chemin vers le fichier pull secret |
AWS_REGION |
Région AWS |
MGMT_KUBECONFIG |
Chemin vers le kubeconfig du cluster de gestion |
CPO_IMAGE_REPO |
Repository d'image CPO personnalisée |
Commande de base
source $AWS_CREDS_SOURCE && \
KUBECONFIG=$MGMT_KUBECONFIG \
./bin/hypershift create cluster aws \
--name <CLUSTER_NAME> \
--namespace clusters \
--base-domain $BASE_DOMAIN \
--aws-creds $AWS_CREDENTIALS \
--pull-secret $PULL_SECRET \
--region $AWS_REGION \
--release-image quay.io/openshift-release-dev/ocp-release:4.21.0-multi \
--node-pool-replicas 2
Paramètres courants
| Paramètre | Description | Défaut |
|---|---|---|
--name |
Nom du HostedCluster | Requis |
--namespace |
Namespace pour le HostedCluster | clusters |
--base-domain |
Domaine DNS de base | $BASE_DOMAIN |
--aws-creds |
Chemin vers le fichier de credentials AWS | $AWS_CREDENTIALS |
--pull-secret |
Chemin vers le fichier pull secret | $PULL_SECRET |
--region |
Région AWS | $AWS_REGION |
--release-image |
Image de release OCP | Dernier 4.21.0 multi-arch |
--node-pool-replicas |
Nombre de nœuds initial | 0 (ajouter les nœuds plus tard) |
--control-plane-operator-image |
Image CPO personnalisée | Optionnel |
Avec une image CPO personnalisée
Lors du test de modifications CPO, ajoutez l'image personnalisée :
source $AWS_CREDS_SOURCE && \
KUBECONFIG=$MGMT_KUBECONFIG \
./bin/hypershift create cluster aws \
--name my-test-cluster \
--namespace clusters \
--base-domain $BASE_DOMAIN \
--aws-creds $AWS_CREDENTIALS \
--pull-secret $PULL_SECRET \
--region $AWS_REGION \
--release-image quay.io/openshift-release-dev/ocp-release:4.21.0-multi \
--node-pool-replicas 2 \
--control-plane-operator-image $CPO_IMAGE_REPO:YOUR_TAG
Ce qui est créé
La commande crée :
- VPC AWS avec subnets publics et privés
- NAT gateway et internet gateway
- Tables de routage
- Zones hébergées privées (Route53)
- Provider OIDC pour STS
- Rôles IAM pour les composants du plan de contrôle
- Profil d'instance worker
- Ressources HostedCluster et NodePool
Étapes post-création
-
Vérifier l'état du HostedCluster :
KUBECONFIG=$MGMT_KUBECONFIG kubectl get hostedcluster -n clusters -
Attendre que le plan de contrôle soit disponible :
KUBECONFIG=$MGMT_KUBECONFIG kubectl wait --for=condition=Available \ hostedcluster/<CLUSTER_NAME> -n clusters --timeout=10m -
Mettre à l'échelle NodePool pour ajouter des nœuds :
KUBECONFIG=$MGMT_KUBECONFIG kubectl scale nodepool <NODEPOOL_NAME> \ -n clusters --replicas=1 -
Obtenir le kubeconfig du cluster invité :
KUBECONFIG=$MGMT_KUBECONFIG kubectl get secret <CLUSTER_NAME>-admin-kubeconfig \ -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > /tmp/guest-kubeconfig.yaml
Nettoyage
Utilisez la skill dev:destroy-hc-aws ou exécutez :
source $AWS_CREDS_SOURCE && \
KUBECONFIG=$MGMT_KUBECONFIG \
./bin/hypershift destroy cluster aws \
--name <CLUSTER_NAME> \
--namespace clusters \
--aws-creds $AWS_CREDENTIALS \
--region $AWS_REGION
Dépannage
La création du cluster échoue
- Vérifiez que les credentials AWS sont valides
- Vérifiez que le domaine de base existe dans Route53
- Assurez-vous que le bucket S3 OIDC est accessible
Le plan de contrôle n'est pas disponible
- Vérifiez les pods HCP :
kubectl get pods -n clusters-<CLUSTER_NAME> - Vérifiez les conditions HCP :
kubectl get hcp -n clusters-<CLUSTER_NAME> -o yaml
Les nœuds ne se joignent pas
- Vérifiez les machines :
kubectl get machines -n clusters-<CLUSTER_NAME> - Vérifiez les conditions NodePool :
kubectl get nodepool -n clusters -o yaml