Personnalisation des pods via la création d'un patch d'injection de spécifications de ressources
Vous pouvez utiliser l'injection de spécifications de ressources (RSI) pour créer des correctifs permettant de personnaliser les pods de votre IBM® Software Hub environnement.
- Qui doit s'acquitter de cette tâche?
- Pour effectuer cette tâche, vous devez :
- administrateur de cluster
- Un administrateur d'instance
- Quand devez-vous réaliser cette tâche?
- Effectuez cette tâche si vous souhaitez créer ou modifier un patch RSI.Important : ne créez des patchs RSI que si vous êtes un utilisateur expérimenté de Red Hat® OpenShift® Container Platform. Il vous incombe de vous assurer que les correctifs que vous appliquez ne provoquent pas de problèmes dans votre IBM Software Hub installation.
Avant de commencer
Vous pouvez utiliser la cpd-cli
manage
create-rsi-patch commande pour créer ou mettre à jour des correctifs.
- Créer un nouveau correctif
- Si vous créez un nouveau patch, indiquez les options suivantes :
--cpd_instance_ns--description--patch_name--patch_spec--patch_type--include_labelsou--select_all_pods--skip_apply--spec_format--state
- Mise à jour d'un correctif
- Si vous mettez à jour un correctif existant, les options que vous spécifiez dépendent de ce que vous souhaitez faire. Vous devez au minimum indiquer :
--cpd_instance_ns--patch_name
Vous pouvez modifier les éléments suivants d'un correctif existant :- --description
- Vous pouvez mettre à jour la description du correctif.
--patch_spec- Vous pouvez modifier le contenu du fichier JSON qui définit le correctif.
--state- Vous pouvez activer ou désactiver le correctif.
- étiquettes
- Si vous utilisez l'une des options suivantes, vous pouvez modifier les pods auxquels le correctif s'applique :
--include_labels--exclude_labels
Restriction : vous ne pouvez pas passer de l'option--include_labelsà l'option--select_all_pods.
Quels types d'écussons pouvez-vous créer?
oc get -n=${PROJECT_CPD_INST_OPERANDS} pod <pod-name> -o yaml- Ajouter des variables d'environnement aux conteneurs de pod
- Pour ajouter des variables d'environnement aux conteneurs de pod, vous devez créer un
rsi_pod_env_varpatch :--patch_type=rsi_pod_env_varjsonexemple- Vous pouvez créer un JSON fichier contenant les opérations de patch à appliquer successivement aux conteneurs du pod. Dans cet exemple, les variables d'environnement seront ajoutées à certains conteneurs de pod.Important : pour appliquer le correctif à des conteneurs de pod spécifiques, vous devez connaître l'index du conteneur.
[ { "op":"add", "path":"/spec/containers/0/env/-", "value":{ "name":"replicaset-test-env-json-one","value":"replicaset-test-env-json-one" } }, { "op":"add", "path":"/spec/containers/0/env/-", "value":{ "name":"replicaset-test-env-json-two","value":"replicaset-test-env-json-two" } } ]Le format de votre JSON fichier estjson:--spec_format=json json-mergeexemplespecCejson-mergeformat n'est pas recommandé pourrsi_pod_env_varles correctifs, car le correctif remplace l'intégralitéenvde la section du pod.set-envexemple- Vous pouvez créer un JSON fichier contenant un tableau de paires clé-valeur qui définissent les variables d'environnement pour tous les conteneurs du pod.
[ { "name": "myapp-set-env-name-one", "value": "myapp-set-env-value-one" }, { "name": "myapp-set-env-name-two", "value": "set-env-value-two" }, { "name": "myapp-set-env-name-four", "value": "myapp-set-env-value-four" } ]Le format de votre JSON fichier estset-env:--spec_format=set-env
- Ajouter des étiquettes aux pods
- Pour ajouter des étiquettes aux pods, vous devez créer un
rsi_pod_labelpatch :--patch_type=rsi_pod_labeljsonexemple- Vous pouvez créer un JSON fichier contenant des opérations de modification à appliquer successivement aux étiquettes des métadonnées du pod. Dans cet exemple, le correctif ajoute une nouvelle étiquette aux étiquettes existantes.
[ { "op":"add", "path":"/metadata/labels/zen-metastoredb-label-json-one", "value":"zen-metastoredb-label-json-one" } ]Le format de votre JSON fichier estjson:--spec_format=json json-mergeexemple- Vous pouvez créer un JSON fichier qui définit les étiquettes à utiliser dans les métadonnées du pod. Dans cet exemple, le correctif écrase toutes les étiquettes existantes et les remplace par la nouvelle étiquette.
{ "metadata":{ "labels":{ "zen-metastoredb-label-merge-one": "zen-metastoredb-label-merge-one" } } }Le format de votre JSON fichier est
json-merge:--spec_format=json-merge
- Ajouter des annotations aux pods
- Pour ajouter des annotations aux pods, vous devez créer un
rsi_pod_annotationpatch :--patch_type=rsi_pod_annotationjsonexemple- Vous pouvez créer un JSON fichier contenant des opérations de modification à appliquer successivement aux annotations présentes dans les métadonnées du pod. Dans cet exemple, le correctif ajoute une nouvelle annotation aux annotations existantes.
[ { "op":"add", "path":"/metadata/annotations/zen-watchdog-anno-json-one", "value":"zen-watchdog-anno-json-one" } ]Le format de votre JSON fichier estjson:--spec_format=json json-mergeexemple- Vous pouvez créer un JSON fichier qui définit les annotations à utiliser dans les métadonnées du pod. Dans cet exemple, le correctif écrase toutes les annotations existantes et les remplace par la nouvelle annotation.
{ "metadata":{ "annotations":{ "zen-watchdog-anno-json-merge-one": "zen-watchdog-anno-json-merge-one" } } }Le format de votre JSON fichier est
json-merge:--spec_format=json-merge
- Ajouter des champs à la
specsection des pods - Pour ajouter des champs à la
specsection des pods, vous devez créer unrsi_pod_specpatch :--patch_type=rsi_pod_specjsonexemplespecVous pouvez créer un JSON fichier contenant les opérations de correction à appliquer successivement au pod. Dans cet exemple, le correctif ajoute une classe d'exécution qui définit le moteur d'exécution pour tous les conteneurs du pod.[ { "op":"add", "path":"/spec/runtimeClassName", "value":"selinux" } ]Le format de votre JSON fichier estjson:--spec_format=jsonjson-mergeexemplespecVous pouvez créer un JSON fichier qui définit les paramètres à ajouter au pod.specDans cet exemple, le correctif ajoute une stratégie DNS ou remplace la stratégie DNS existante dans le pod.{ "spec":{ "dnsPolicy": "ClusterFirst" } }Le format de votre JSON fichier est
json-merge:--spec_format=json-merge
- Ajouter un
initconteneur aux pods - Pour ajouter un
initconteneur à des pods, vous devez créer unrsi_pod_init_containerpatch :--patch_type=rsi_pod_init_containerjsonexemplespecVous pouvez créer un JSON fichier contenant des opérations de patch qui doivent être appliquées les unes après les autres à lainitContainerssection du pod. Dans cet exemple, le correctif ajoute un nouveauinitconteneur à la liste des conteneurs existantsinit.[ { "op":"add", "path":"/spec/initContainers", "value":[ { "command":[ "sh", "-c", "echo The app init" ], "image":"busybox:1.28", "name":"init-svr" } ] } ]Le format de votre JSON fichier estjson:--spec_format=jsonjson-mergeexemplespecVous pouvez créer un JSON fichier qui définit les paramètres à utiliser dans lainitContainerssection du pod. Dans cet exemple, le correctif remplace tous les conteneurs existantsinitpar un nouveauinitconteneur.{ "spec":{ "initContainers":[ { "command":["sh","-c","echo The app init"], "image":"busybox:1.28", "name":"init-svr" } ] } }Le format de votre JSON fichier estjson-merge:--spec_format=json-merge
- Ajouter un
sidecarconteneur aux pods - Pour ajouter un
sidecarconteneur à des pods, vous devez créer unrsi_pod_side_car_containerpatch :--patch_type= rsi_pod_side_car_containerjsonexemplespecVous pouvez créer un JSON fichier contenant des opérations de patch qui doivent être appliquées les unes après les autres à lacontainerssection du pod. Dans cet exemple, le correctif ajoute un nouveausidecarconteneur à la liste des conteneurs existants.[ { "op":"add", "path":"/spec/containers/-1", "value":{ "command":["sh","-c","echo \"The app sidecar\" \u0026\u0026 sleep 3600 "], "image":"busybox:1.28", "name":"sidecar" } } ]Le format de votre JSON fichier estjson:--spec_format=json
json-mergeexemplespecCejson-mergeformat n'est pas recommandé pourrsi_pod_side_car_containerles correctifs, car le correctif remplace l'intégralitécontainersde la section du pod.
Référence des options
Le tableau suivant fournit des informations détaillées sur les options que vous pouvez spécifier pour la cpd-cli
manage
create-rsi-patch commande.
| Option | Descriptif |
|---|---|
--cpd_instance_ns |
Le projet (espace de noms) dans lequel vous souhaitez créer ou mettre à jour le correctif. Si d'autres projets sont liés à ce projet, le correctif s'appliquera également à ces projets.
|
--description |
Description du correctif. Utilisez la description pour expliquer l'objectif et l'intention du correctif.
|
--exclude_labels |
Spécifiez un sous-ensemble de pods à ignorer en fonction des étiquettes associées à ces pods. Si vous spécifiez plusieurs paires clé-valeur, le patch ignorera tous les pods qui possèdent toutes les étiquettes spécifiées.
|
--include_labels |
Indiquez à quels pods le correctif doit s'appliquer en fonction des étiquettes associées à ces pods. Si vous spécifiez plusieurs paires clé-valeur, le correctif ne sera appliqué qu'aux pods qui possèdent toutes les étiquettes spécifiées. Par exemple, si vous indiquez
|
--patch_name |
Le nom du correctif à créer ou à mettre à jour.
|
--patch_spec |
Le fichier JSON contenant le correctif. Enregistrez le fichier dans le répertoire
|
--patch_type |
Le type de correctif à créer.
|
--select_all_pods |
Indiquez si vous souhaitez appliquer le correctif à tous les pods du projet « operands » et à tous les projets associés à l'instance.
|
--skip_apply |
Indiquez si le webhook RSI attend avant d'appliquer le correctif ou s'il l'applique immédiatement.
|
--spec_format |
Le format du fichier JSON contenant les spécifications du correctif.
|
--state |
Indiquez si le correctif peut être appliqué via le webhook RSI.
|
-v-vv-vvv |
Afficher un rapport détaillé. Les options sont classées de la moins détaillée à la plus détaillée.
|