Ajouter un nœud de travail
Utilisez cette procédure pour ajouter un nœud de travail à un cluster OpenShift.
Nous fournissons cet exemple de procédure uniquement à des fins d’information. Consultez la documentation Red Hat OpenShift (https://docs.openshift.com/) pour connaître la procédure officielle.
Cette procédure montre un exemple de liaison précoce. Lors de la liaison précoce, vous générez une ISO préconfigurée pour le cluster existant. Lorsque le nœud démarre avec cette ISO, le nœud atteint automatiquement le cluster existant.
Cela entraîne l’envoi d’une ou de plusieurs CSR (CertificateSigningRequests) depuis le nouveau nœud vers le cluster existant. Un CSR est simplement une demande d’obtention des certificats client pour le cluster (existant). Vous devrez approuver explicitement ces demandes. Une fois approuvé, le cluster existant fournit les certificats client au nouveau nœud, et le nouveau nœud est autorisé à rejoindre le cluster existant.
- Connectez-vous à la machine (VM ou BMS) que vous utilisez en tant que client d’installation assistée. La machine cliente de l’installateur assisté est l’endroit où vous passez des appels d’API d’installation assistée au service d’installation assistée hébergé par Red Hat.
- Préparez le déploiement en définissant les variables d’environnement que vous utiliserez ultérieurement.
- Configurez la même clé SSH que vous utilisez pour le cluster existant.
Dans cet exemple, nous récupérons la clé SSH de son emplacement par défaut ~/.ssh/id_rsa.pub et la stockons dans une variable.
export CLUSTER_SSHKEY=$(cat ~/.ssh/id_rsa.pub)
- Si vous n’avez plus l’image pull secret, téléchargez l’image pull secret depuis votre compte Red Hat sur votre ordinateur local. Le pull secret permet à votre installation d’accéder aux services et registres qui servent des images de conteneur pour les composants OpenShift.
Si vous utilisez l’installateur assisté hébergé de Red Hat, vous pouvez télécharger le fichier pull secret (pull-secret) à partir de la page https://console.redhat.com/openshift/downloads . Copiez le fichier pull-secret sur la machine cliente de l’installateur assisté. Dans cet exemple, nous stockons le pull-secret dans un fichier appelé pull-secret.txt.
Retirez tout espace blanc, convertissez le contenu au format DE chaîne JSON et stockez en variable d’environnement, comme suit :
export PULL_SECRET=$(sed '/^[[:space:]]*$/d' pull-secret.txt | jq -R .)
- Si vous n’avez plus votre jeton d’accès hors ligne, copiez le jeton d’accès hors ligne à partir de votre compte Red Hat. Le jeton d’API OpenShift Cluster Manager vous permet (sur la machine cliente de l’installateur assisté) d’interagir avec le service d’API d’installation assisté hébergé par Red Hat.
Le jeton est une chaîne que vous pouvez copier et coller dans une variable d’environnement locale. Si vous utilisez l’installateur assisté hébergé De Red Hat, vous pouvez copier le jeton API de https://console.redhat.com/openshift/downloads.
export OFFLINE_ACCESS_TOKEN='<paste offline access token here>'
- Générez (actualisez) le jeton à partir du OFFLINE_ACCESS_TOKEN. Vous utiliserez ce jeton généré chaque fois que vous émettrez des commandes d’API.
export TOKEN=$(curl --silent --data-urlencode "grant_type=refresh_token" --data-urlencode "client_id=cloud-services" --data-urlencode "refresh_token=${OFFLINE_ACCESS_TOKEN}" https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token | jq -r .access_token)
Note:Ce jeton expire régulièrement. Lorsque ce jeton expire, vous recevrez une réponse HTTP 4xx chaque fois que vous émettez une commande API. Actualisez le jeton lorsqu’il expire, ou actualisez régulièrement le jeton avant son expiration. Il n’y a aucun dommage à actualiser le jeton lorsqu’il n’a pas expiré.
- Obtenez l’ID de cluster OpenShift du cluster existant.
Par exemple :
oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}' 1777102a-1fe1-407a-9441-9d0bad4f5968
export $OS_CLUSTER_ID="1777102a-1fe1-407a-9441-9d0bad4f5968"
- Configurez les variables d’environnement restantes.
Le tableau 1 répertorie toutes les variables d’environnement que vous devez définir dans cette procédure, y compris celles décrites dans les étapes précédentes.
Tableau 1 : Variables d’environnement Exemple de description de la variable CLUSTER_SSHKEY Clé SSH (publique) que vous utilisez pour le cluster existant. Vous devez utiliser cette même clé pour le nouveau nœud que vous ajoutez. – PULL_SECRET Le pull secret de l’image que vous avez téléchargé, dépouillé et converti au format de chaîne JSON. – OFFLINE_ACCESS_TOKEN Le jeton API OpenShift Cluster Manager que vous avez copié. – JETON Le jeton que vous avez généré (actualisé) à partir du OFFLINE_ACCESS_TOKEN. – CLUSTER_NAME Nom du cluster existant. moncluster CLUSTER_DOMAIN Domaine de base du cluster existant. contrail.lan OS_CLUSTER_ID ID de cluster OpenShift du cluster existant. 1777102a-1fe1-407a-9441-9d0bad4f5968 AI_URL URL du service d’installation assistée. Cet exemple utilise l’installateur assisté hébergé par Red Hat. https://api.openshift.com
- Configurez la même clé SSH que vous utilisez pour le cluster existant.
- Importez le cluster existant.
curl -X POST "$AI_URL/api/assisted-install/v2/clusters/import" -H "accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d "{\"name\":\"$CLUSTER_NAME\",\"openshift_cluster_id\":\"$OS_CLUSTER_ID\",\"api_vip_dnsname\":\"api.$CLUSTER_NAME.$CLUSTER_DOMAIN\"}"
Lorsque vous importez le cluster, le service d’installation assistée renvoie un ID de cluster pour AddHostsCluster. Examinez attentivement l’ID de cluster intégré à la réponse. Par exemple :
"id":"19b809b5-69c4-42d8-9e5e-56aae4aba386"
- Générez l’ISO de démarrage de découverte. Vous utiliserez cette ISO pour démarrer le nœud que vous ajoutez au cluster.
L’ISO est personnalisé en fonction de l’environnement d’infrastructure que vous allez configurer.
- Créez un fichier qui décrit l’environnement d’infrastructure. Dans cet exemple, nous l’appelons infra-envs-addhost.json.
cat << EOF > ./infra-envs-addhost.json { "name": "<InfraEnv Name>", "ssh_authorized_key": "$CLUSTER_SSHKEY", "pull_secret": $PULL_SECRET, "cluster_id": "<AddHostsCluster ID>", "openshift_version": "<same as for existing cluster>", "user_managed_networking": <same as for existing cluster>, "vip_dhcp_allocation": <same as for existing cluster>, "base_dns_domain": "$CLUSTER_DOMAIN", } EOF
- InfraEnv Name est le nom que vous souhaitez appeler InfraEnv.
- AddHostsCluster ID est l’ID de cluster de AddHostsCluster (obtenu à l’étape précédente).
user_managed_networking
etvip_dhcp_allocation
sont définies sur les mêmes valeurs que pour le cluster existant.
- Enregistrer l’InfraEnv. En réponse, le service d’installation assistée attribue un ID InfraEnv et construit l’ISO de démarrage de découverte en fonction de l’environnement d’infrastructure spécifié.
curl -X POST "$AI_URL/api/assisted-install/v2/infra-envs" -H "accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d @infra-envs-addhosts.json
Lorsque vous enregistrez l’InfraEnv, le service d’installation assistée renvoie un ID InfraEnv. Recherchez attentivement l’ID InfraEnv intégré à la réponse. Par exemple :
"id":"78d20699-f25b-462c-bc1d-4738590a9344"
Stockez l’ID InfraEnv dans une variable. Par exemple :
export INFRA_ENV_ID="78d20699-f25b-462c-bc1d-4738590a9344"
- Obtenez l’URL de téléchargement de l’image.
curl -s $AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/downloads/image-url -H "accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" | jq '.url'
- Téléchargez l’ISO et enregistrez-la dans un fichier. Dans cet exemple, nous l’enregistrons dans ai-liveiso-addhosts.iso.
curl -L "<image URL>" -H "Authorization: Bearer $TOKEN" -o ./ai-liveiso-addhosts.iso
- Créez un fichier qui décrit l’environnement d’infrastructure. Dans cet exemple, nous l’appelons infra-envs-addhost.json.
- Démarrez le nouveau nœud de travail avec l’ISO de démarrage de détection. Choisissez la méthode de démarrage la plus adaptée à votre infrastructure. Assurez-vous que le nouveau nœud démarre connecté à un réseau qui a accès au programme d’installation assisté hébergé par Red Hat.
- Installez le nouveau nœud sur le cluster existant.
- Inspectez le nouveau nœud pour vous assurer que son rôle est défini comme travailleur.
curl -s -X GET --header "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" $AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts | jq '.'
Ne procédez que lorsque le rôle d’hôte est défini comme travailleur.
- Obtenez l’ID d’hôte du nouveau nœud.
export HOST_ID=$(curl -s -X GET --header "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" $AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts | jq -r '.[].id')
- Installez le nouveau nœud.
curl -X POST "$AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts/$HOST_ID/actions/install" -H "accept: application/json" -H "Authorization: Bearer $TOKEN" | jq -r
- Vérifiez la progression de l’installation.
curl -s -X GET --header "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" $AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts | jq '.'
- Inspectez le nouveau nœud pour vous assurer que son rôle est défini comme travailleur.
- Une fois le nouveau nœud redémarré, il essaiera de rejoindre le cluster existant. Cela entraîne l’envoi d’une ou de plusieurs CSR (CertificateSigningRequests) depuis le nouveau nœud vers le cluster existant. Vous devrez approuver les demandes de CSR.
- Vérifiez les CSR en attente.
Par exemple :
root@ai-client:~/contrail# oc get csr -A NAME AGE SIGNERNAME REQUESTOR CONDITION csr-gblnm 20s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
Vous devrez peut-être répéter cette commande régulièrement jusqu’à ce qu’un CSR soit en attente.
- Approuver les CSR.
Par exemple :
root@ai-client:~/contrail# oc adm certificate approve csr-gblnm certificatesigningrequest.certificates.k8s.io/csr-gblnm approved
- Vérifiez les CSR en attente.
- Vérifiez que le nouveau nœud est opérationnel dans le cluster existant.
oc get nodes