L'outil de ligne de commande nomos
est un outil facultatif pour Config Sync qui vous permet d'obtenir l'état de Config Sync et l'état de synchronisation de votre source de vérité. L'outil nomos
vous fournit les commandes suivantes :
Commande | Usage |
---|---|
nomos status |
Vérifier l'état de Config Sync |
nomos vet |
Rechercher des erreurs dans la source de vérité |
nomos hydrate |
Afficher toutes les configurations dans la source de vérité |
nomos bugreport |
Créer un rapport de bug |
nomos migrate |
Migrer de l'objet ConfigManagement vers RootSync |
nomos init |
Initialiser une source de vérité hiérarchique |
Prérequis
Avant d'utiliser l'outil nomos
pour interagir avec un cluster, Config Sync doit déjà être installé sur le cluster cible. Vous devez également installer et configurer l'outil de ligne de commande kubectl
.
Si vous interagissez avec des clusters Google Kubernetes Engine, veillez également à installer gke-gcloud-auth-plugin
.
L'outil nomos
permet de prévisualiser et de valider les configurations Kustomize et les charts Helm. Pour pouvoir utiliser cette fonctionnalité, installez Kustomize et Helm sur votre poste de travail local. Si votre source de vérité ne contient que des configurations entièrement générées, Kustomize et Helm sont facultatifs.
Installez l'outil nomos
L'outil nomos
est un binaire compilé à partir de code Go. Vous pouvez l'installer localement, par exemple sur un ordinateur portable ou de bureau.
L'outil nomos
n'est pas inclus lorsque vous installez Config Sync. Vous pouvez installer l'outil nomos
en installant Google Cloud CLI. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé.
Si vous ne disposez pas de Google Cloud CLI, nous vous recommandons d'utiliser gcloud components install nomos
pour installer l'outil nomos
. L'installation de l'outil nomos
avec Google Cloud CLI vous permet d'utiliser gcloud components update
pour mettre à jour l'outil nomos
vers la dernière version.
Pour connaître les autres moyens d'installer l'outil nomos
, consultez la section Téléchargements.
Utilisation de base
Pour la syntaxe de commande de base, utilisez l'argument --help
:
nomos --help
L'outil nomos
lit les données du clone local de votre source de vérité. Utilisez l'indicateur --path
pour spécifier l'emplacement du premier niveau de la source de vérité. Par défaut, --path
est défini sur .
, soit le répertoire actuel. Exemple :
nomos --path=PATH_TO_SOURCE vet
Vérifier l'état de Config Sync
Vous pouvez surveiller l'état de Config Sync sur tous les clusters enregistrés à l'aide de la commande nomos status
. Pour chaque cluster, nomos status
indique le dernier hachage du commit appliqué au cluster et les erreurs qui se sont produites pendant l'application des modifications récentes.
Vous pouvez également utiliser nomos status
pour vérifier si les ressources gérées par Config Sync sont prêtes. nomos status
indique l'état de chaque ressource individuelle dans la colonne STATUS
de la section Managed resources
du résultat.
L'exemple suivant montre certaines des différentes conditions que la commande nomos status
peut signaler :
nomos status
Exemple de résultat :
MANAGED_CLUSTER_1
--------------------
<root> git@github.com:foo-corp/acme@main
SYNCED f52a11e4
Managed resources:
NAMESPACE NAME STATUS
k8snoexternalservices.constraints.gatekeeper.sh/no-internet-services Current
namespace/hello Current
MANAGED_CLUSTER_2
--------------------
<root> git@github.com:foo-corp/acme@main
PENDING 9edf8444
MANAGED_CLUSTER_3
--------------------
<root> git@github.com:foo-corp/acme@main
ERROR f52a11e4
Error: KNV1021: No CustomResourceDefinition is defined for the resource in the cluster.
MANGED_CLUSTER_4
--------------------
NOT INSTALLED
MANAGED_CLUSTER_5
--------------------
<root> git@github.com:foo-corp/acme/admin@main
SYNCED f52a11e4
Managed resources:
NAMESPACE NAME STATUS
namespace/gamestore Current
namespace/monitoring Current
gamestore reposync.configsync.gke.io/repo-sync Current
gamestore rolebinding.rbac.authorization.k8s.io/gamestore-admin Current
gamestore rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin Current
monitoring deployment.apps/prometheus-operator Current
monitoring prometheus.monitoring.coreos.com/acm Current
monitoring service/prometheus-acm Current
monitoring service/prometheus-operator Current
monitoring serviceaccount/prometheus-acm Current
monitoring serviceaccount/prometheus-operator Current
monitoring servicemonitor.monitoring.coreos.com/acm-service Current
--------------------
bookstore git@github.com:foo-corp/acme/bookstore@v1
SYNCED 34d1a8c8
Managed resources:
NAMESPACE NAME STATUS
gamestore configmap/store-inventory Current
gamestore webstore.marketplace.com/gameplace Current
Dans ce résultat :
MANAGED_CLUSTER_1
a synchronisé la dernière modification apportée à la source de vérité, et toutes les ressources gérées ont l'étatCurrent
. Un étatCurrent
signifie que l'état de la ressource correspond à l'état souhaité.MANAGED_CLUSTER_2
est toujours en cours de synchronisation.MANAGED_CLUSTER_3
présente une erreur qui a empêché l'application de la modification. Dans cet exemple,MANAGED_CLUSTER_3
comporte l'erreur KNV1021, car il manque un objet CRD (CustomResourceDefinition) que les autres clusters ont installé.MANAGED_CLUSTER_4
ne dispose pas de Config Sync installé.MANAGED_CLUSTER_5
est synchronisé à partir de deux dépôts Git. La source de vérité<root>
appartient à l'administrateur de cluster et la source de véritébookstore
peut appartenir à une équipe de développement d'applications.
États des ressources gérées
L'état de vos ressources gérées peut être l'une des valeurs suivantes :
InProgress
: l'état réel de la ressource n'a pas encore atteint l'état que vous avez spécifié dans le fichier manifeste de la ressource. Cet état signifie que le rapprochement des ressources n'est pas encore terminé. Les ressources nouvellement créées commencent généralement par cet état, même si certaines ressources telles que les ConfigMaps sont immédiatement à l'étatCurrent
.Failed
: le processus de rapprochement de l'état réel avec l'état souhaité a rencontré une erreur ou la progression est insuffisante.Current
: l'état réel de la ressource correspond à l'état souhaité. Le processus de rapprochement est considéré comme étant terminé tant que des modifications n'ont pas été apportées à l'état souhaité ou réel.Terminating
: la ressource est en cours de suppression.NotFound
: la ressource n'existe pas dans le cluster.Unknown
: Config Sync ne parvient pas à déterminer l'état de la ressource.
Pour désactiver l'affichage de l'état au niveau des ressources, ajoutez --resources=false
à la commande nomos status
.
À propos du dernier commit synchronisé
La commande nomos status
affiche le dernier hachage de commit appliqué au cluster dans sa sortie sous status.sync.commit
. Pour obtenir cette valeur, interrogez l'objet RootSync
ou RepoSync
et examinez le champ status.sync
.
Par exemple, pour interroger un objet RootSync
, exécutez la commande suivante :
kubectl get rootsyncs.configsync.gke.io -n config-management-system root-sync -o yaml
Exemple de résultat :
apiVersion: configsync.gke.io/v1beta1
kind: RootSync
status:
sync:
commit: f1739af550912034139aca51e382dc50c4036ae0
lastUpdate: "2021-04-20T00:25:01Z"
Pour interroger un objet RepoSync
, exécutez la commande suivante :
kubectl get reposync.configsync.gke.io -n NAMESPACE repo-sync -o yaml
Remplacez NAMESPACE
par l'espace de noms dans lequel vous avez créé votre source de vérité d'espace de noms.
Exemple de résultat :
apiVersion: configsync.gke.io/v1beta1
kind: RepoSync
status:
sync:
commit: ed95b50dd918cf65d8908f7561cb8d8d1f179c2f
lastUpdate: "2021-04-20T00:25:20Z"
Ce commit représente le dernier commit sur le cluster. Cependant, toutes les ressources du cluster ne sont pas affectées par chaque commit. Pour afficher le commit le plus récent d'une ressource spécifique, interrogez la ressource spécifique et vérifiez metadata.annotations.configmanagement.gke.io/token
. Exemple :
kubectl get clusterroles CLUSTER_ROLE_NAME -o yaml
Remplacez CLUSTER_ROLE_NAME
par le nom du rôle de cluster que vous souhaitez interroger.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
configmanagement.gke.io/token: ed95b50dd918cf65d8908f7561cb8d8d1f179c2f
Indicateurs d'état nomos
Pour personnaliser la commande nomos status
, ajoutez les options suivantes :
Drapeau | Description |
---|---|
--contexts |
Accepte une liste de contextes séparés par une virgule à utiliser dans les commandes multicluster. Valeur par défaut pour tous les contextes. Utilisez "" pour aucun contexte. |
-h ou --help |
Aide pour la commande nomos status . |
--namespace |
Accepte une chaîne. Utilisez l'indicateur namespace pour limiter la commande à une source de vérité d'espace de noms spécifique. Laissez la valeur non définie pour obtenir toutes les sources. Cette option n'est disponible que si vous avez activé la synchronisation à partir de plusieurs sources de vérité. |
--poll |
Utilisez l'option poll pour exécuter nomos status en continu et obtenir un tableau d'état actualisé à intervalles réguliers. Par exemple : 3s Laissez cette option non définie pour exécuter nomos status une fois. |
--resources |
Accepte true ou false . Si la valeur est true , nomos status indique l'état au niveau des ressources de votre source de vérité d'espace de noms ou racine lors de la synchronisation à partir de plusieurs sources de vérité.
La valeur par défaut est true . |
--timeout |
Délai d'expiration de la connexion à chaque cluster. La valeur par défaut est 3s . |
--name |
Accepte une chaîne. Utilisez cette option pour filtrer la synchronisation racine et du dépôt avec le nom fourni. Cette option peut être utilisée avec l'option namespace . |
Autorisations requises
Si vous êtes propriétaire d'un projet, vous disposez du rôle RBAC cluster-admin
et vous pouvez utiliser la commande nomos status
pour tous les clusters de votre projet sans ajouter d'autorisations. Si vous ne disposez pas du rôle cluster-admin
, vous pouvez utiliser nomos status
en créant le ClusterRole suivant :
Créez un fichier nommé
nomos-status-reader.yaml
et copiez-y le ClusterRole suivant : Les règles dont vous avez besoin varient selon que vous utilisez des objets RootSync et RepoSync.Utiliser des objets RootSync et RepoSync
# nomos-status-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: nomos-status-reader rules: - apiGroups: ["configsync.gke.io"] resources: ["reposyncs", "rootsyncs"] verbs: ["get"] - nonResourceURLs: ["/"] verbs: ["get"]
Ne pas utiliser les objets RootSync et RepoSync
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: nomos-status-reader rules: - apiGroups: ["configmanagement.gke.io"] resources: ["configmanagements", "repos"] verbs: ["get", "list"] - nonResourceURLs: ["/"] verbs: ["get"]
Appliquez le fichier
nomos-status-reader.yaml
:kubectl apply -f nomos-status-reader.yaml
Rechercher les erreurs dans la source de vérité
Avant de procéder au commit d'une configuration vers la source de vérité, utilisez la commande nomos vet
pour vérifier la syntaxe et la validité des configurations dans votre source de vérité:
nomos vet
Si des erreurs de syntaxe sont détectées, la commande nomos vet
se termine avec un état différent de zéro et consigne des messages d'erreur dans STDERR
.
Options nomos vet
Pour personnaliser la commande nomos vet
, ajoutez les options suivantes :
Drapeau | Description |
---|---|
--clusters |
Accepte une liste de noms de clusters, séparés par des virgules, à utiliser dans les commandes multicluster. Valeur par défaut sur tous les clusters. Utilisez "" pour aucun cluster. |
-h ou --help |
Aide pour la commande nomos vet . |
--namespace |
Accepte une chaîne. Si ce champ est défini, il valide la source de vérité en tant que source de vérité d'espace de noms avec le nom fourni. Définit automatiquement --source-format=unstructured . |
--no-api-server-check |
Accepte une valeur booléenne. Si la valeur est true , désactive la communication avec le serveur d'API pour la découverte. Pour en savoir plus sur cet indicateur, consultez la section Validation côté serveur. |
--path |
Accepte une chaîne. Chemin d'accès au répertoire racine de votre source de vérité Config Sync. La valeur par défaut est ". ". |
--source-format |
Accepte hierarchy ou unstructured . Si la valeur est hierarchy ou n'est pas définie, valide la source de vérité en tant que source de vérité hiérarchique. Si la valeur est unstructured , valide la source de vérité en tant que source de vérité non structurée.
Cette option est obligatoire si vous utilisez une source de vérité non structurée. |
--keep-output |
Accepte une valeur booléenne. Si la valeur est true , le résultat de rendu est enregistré à l'emplacement que vous pouvez spécifier avec l'option --output . |
--output |
Accepte une chaîne. Chemin d'accès au résultat de rendu. Il s'agit par défaut du répertoire compiled . Si --keep-output est défini sur false , cette option est ignorée. |
--format |
Accepte yaml ou json . Format du résultat. La valeur par défaut est yaml . |
Validation côté serveur
Si la commande nomos vet
ne parvient pas à déterminer si le type est associé à un espace de noms, l'outil nomos
se connecte au serveur d'API. Étant donné que l'outil nomos
comprend par défaut les types Kubernetes de base et les objets CRD Config Sync, il ne tente de se connecter au serveur d'API que s'il existe des RS sans objet CRD déclaré correspondant. Dans ce cas, si le serveur d'API n'a pas l'objet CRD appliqué, la commande nomos
vet
renvoie l'erreur KNV1021. Pour désactiver cette vérification et supprimer les erreurs liées à des objets CRD manquants, transmettez l'option --no-api-
server-check
.
Mettre en cache des métadonnées du serveur d'API
Au lieu de supprimer les vérifications du serveur d'API, vous pouvez mettre en cache les données du serveur d'API pour la commande nomos vet
. Pour mettre en cache votre api-resources
, procédez comme suit :
- Connectez-vous à un cluster contenant tous les CRD dont vous avez besoin pour votre source de vérité. Config Sync ne doit pas être activé sur le cluster.
- Accédez au policyDir de votre source de vérité. Il s'agit du même répertoire spécifié dans votre ressource ConfigManagement ou RootSync.
- Exécutez la commande suivante :
kubectl api-resources > api-resources.txt
Cette commande crée un fichier nommé api-resources.txt qui contient le résultat exact de kubectl api-resources.
Désormais, les exécutions de nomos vet
dans la source de vérité connaissent ces définitions de type. Si le fichier api-resources.txt
est supprimé ou renommé, nomos vet
ne peut pas trouver le fichier. nomos vet
tente tout de même de se connecter au cluster s'il trouve des fichiers manifestes pour des types non déclarés dans api-resources.txt (sauf si --no-api-server-check
est transmis).
Le fichier api-resources.txt
n'affecte que le fonctionnement de l'outil nomos
. Il ne modifie en aucun cas le comportement de Config Sync.
Il peut y avoir des entrées supplémentaires dans le fichier api-resources.txt pour les types qui ne figurent pas dans la source de vérité en cours de validation. nomos vet
importe les définitions, mais ne fait rien avec elles.
Mettre à jour api-resources.txt
Après vous être assuré que tous les objets CRD souhaités sont dans le cluster, exécutez la commande suivante :
kubectl api-resources > api-resources.txt
Erreur de correspondance des titres de colonnes dans api-resources
Kubernetes 1.20 et versions ultérieures remplacent la colonne nommée APIGROUP
par APIVERSION
. Pour les versions 1.16.1 et antérieures de nomos, l'utilisation de api-resources.txt
génère une erreur :
[1] KNV1064: unable to find APIGROUP column. Re-run "kubectl api-resources > api-resources.txt" in the root policy directory
Pour résoudre ce problème, remplacez manuellement APIVERSION
dans api-resources.txt
par APIGROUP
.
Rechercher automatiquement des erreurs de syntaxe lors du commit
Si vous procédez au commit d'un fichier contenant des erreurs JSON ou YAML, Config Sync n'applique pas la modification. Toutefois, vous pouvez protéger la source de données grâce à des hooks côté client ou côté serveur.
Utiliser la commande nomos vet
dans un hook de pré-commit
Vous pouvez configurer un hook de pré-commit qui exécute la commande nomos vet
pour rechercher les erreurs de syntaxe lorsque vous procédez au commit d'une modification dans le clone Git local de votre dépôt.
Si l'exécution d'un hook de pré-commit se termine avec un état différent de zéro, l'opération git commit
échoue.
Pour exécuter la commande nomos vet
en tant que hook de pré-commit, modifiez le fichier .git/hooks/pre-commit
dans votre source de vérité. Notez que le caractère .
est placé au début du nom du répertoire .git
. Vous devrez peut-être créer le fichier manuellement. Ajoutez la commande nomos vet
sur une nouvelle ligne du script. L'argument --path
est facultatif.
nomos vet --path=/path/to/repo
Vérifiez que le fichier pre-commit
est exécutable :
chmod +x .git/hooks/pre-commit
Désormais, lorsque vous exécutez une commande git commit
dans le clone de votre source de vérité, nomos vet
s'exécute automatiquement.
Le contenu du répertoire .git/
ne fait pas l'objet d'un suivi par la source de vérité elle-même et ne peut pas être validé vers la source de vérité située dans le même emplacement. Vous pouvez créer un répertoire dans la source de vérité pour les hooks Git, et les utilisateurs de cette source peuvent copier les hooks à l'emplacement approprié dans leur clone local.
Utiliser la commande nomos vet
dans un hook côté serveur
Git fournit un mécanisme permettant d'effectuer des vérifications sur le serveur plutôt que sur le client lors d'une opération git push
. En cas d'échec de la vérification, l'opération git push
échoue également. Ces hooks côté serveur ne peuvent pas être ignorés par le client. La méthode de configuration des hooks côté serveur dépend de la manière dont votre serveur Git est hébergé. Pour en savoir plus, consultez l'un des liens ci-dessous ou la documentation de votre service d'hébergement Git.
Afficher toutes les configurations de la source de vérité
Vous pouvez utiliser la commande nomos hydrate
pour afficher le contenu combiné de votre source de vérité sur chaque cluster enregistré.
Si vous exécutez nomos hydrate
sans aucune option, un répertoire compiled/
est créé dans le répertoire de travail actuel. Dans ce répertoire, un sous-répertoire est créé pour chaque cluster enregistré, avec les configurations entièrement résolues que l'opérateur est censé appliquer au cluster.
Cette commande peut également convertir une source de vérité hiérarchique en une ou plusieurs sources de vérité non structurées, en utilisant le contenu du répertoire compiled/
.
Indicateurs nomos hydrate
Pour personnaliser la commande nomos hydrate
, ajoutez les options suivantes :
Drapeau | Description |
---|---|
--clusters |
Accepte une liste de noms de clusters séparés par une virgule. Utilisez cette option pour limiter le résultat à un seul cluster ou à une liste de clusters. Valeur par défaut sur tous les clusters. Utilisez "" pour aucun cluster. |
--flat |
Si cette option est activée, imprimez tous les résultats dans un seul fichier. Utilisez cette option si vous souhaitez émuler le comportement de nomos view . |
-h ou --help |
Aide pour la commande nomos hydrate . |
--format |
Accepte yaml ou json . Format du résultat. La valeur par défaut est yaml . |
--no-api-server-check |
Accepte une valeur booléenne. Si la valeur est true , désactive la communication avec le serveur d'API pour la découverte. Pour en savoir plus sur cet indicateur, consultez la section Validation côté serveur. |
--output |
Accepte une chaîne. Emplacement dans lequel écrire la configuration hydratée. Il s'agit par défaut du répertoire compiled .
Si --flat n'est pas activé, écrit chaque fichier manifeste de ressources en tant que fichier séparé.
Si --flat est activé, écrit un seul fichier contenant tous les fichiers manifestes des ressources.
|
--path |
Accepte une chaîne. Chemin d'accès au répertoire racine de votre source de vérité Config Sync. La valeur par défaut est ". ". |
--source-format |
Accepte hierarchy ou unstructured . Si la valeur est hierarchy ou n'est pas définie, valide la source de vérité en tant que source de vérité hiérarchique. Si la valeur est unstructured , valide la source de vérité en tant que source de vérité non structurée.
Cette option est obligatoire si vous utilisez une source de vérité non structurée. |
Créer un rapport de bug
Si vous rencontrez un problème avec Config Sync qui nécessite l'aide de l'assistance Google Cloud, vous pouvez leur fournir des informations de débogage précieuses à l'aide de la commande nomos bugreport
. Vous pouvez utiliser cette commande pour une source de vérité unique et plusieurs dépôts.
nomos bugreport
Cette commande génère un fichier ZIP horodaté contenant des informations sur le cluster Kubernetes défini dans votre contexte kubectl
. Le fichier contient également des journaux issus des pods Config Sync. Il ne contient pas d'informations provenant des ressources synchronisées avec Config Sync. Pour en savoir plus sur le contenu du fichier ZIP, consultez la documentation de référence sur nomos bugreport.
Limites
La commande nomos bugreport
échoue et génère un fichier ZIP incomplet si l'un des fichiers individuels dépasse 1 Gio. Cette situation est souvent due à des fichiers journaux volumineux.
Le tableau suivant répertorie les causes les plus courantes de fichiers journaux volumineux et explique comment les résoudre:
Cause | Action recommandée |
---|---|
Augmentation de la verbosité des journaux | Réduisez la verbosité du journal grâce aux remplacements de niveau de journalisation. |
Objets très volumineux | Annuler la gestion de l'objet volumineux ou réduire sa taille |
Nombreux objets | Diviser votre dépôt en plusieurs dépôts |
Conflits de contrôleurs | Résoudre le conflit |
Migrer depuis un objet ConfigManagement vers un objet RootSync
Vous pouvez exécuter la commande nomos migrate
pour migrer votre objet ConfigManagement vers un objet RootSync afin d'activer les API RootSync
et RepoSync
. Cette commande est disponible dans la version 1.10.0 de l'outil nomos
et ses versions ultérieures.
nomos migrate
est compatible avec la simulation pour la prévisualisation du processus de migration.
nomos migrate
modifie directement votre objet ConfigManagement sur le cluster.
Pour éviter l'annulation des modifications effectuées via nomos migrate
, assurez-vous que l'objet ConfigManagement n'est pas enregistré dans votre source de vérité.
nomos migrate --contexts=KUBECONFIG_CONTEXTS --dry-run
Si le résultat de la simulation vous semble correct, vous pouvez migrer votre objet ConfigManagement à l'aide de nomos migrate
:
nomos migrate --contexts=KUBECONFIG_CONTEXTS
Le résultat ressemble à ce qui suit :
--------------------
Enabling the multi-repo mode on cluster "my_managed_cluster-1" ...
- A RootSync object is generated and saved in "/tmp/nomos-migrate/my_managed_cluster-1/root-sync.yaml".
- The original ConfigManagement object is saved in "/tmp/nomos-migrate/my_managed_cluster-1/cm-original.yaml".
- The ConfigManagement object is updated and saved in "/tmp/nomos-migrate/my_managed_cluster-1/cm-multi.yaml".
- Resources for the multi-repo mode have been saved in a temp folder. If the migration process is terminated, it can be recovered manually by running the following commands:
kubectl apply -f /tmp/nomos-migrate/my_managed_cluster-1/cm-multi.yaml && \
kubectl wait --for condition=established crd rootsyncs.configsync.gke.io && \
kubectl apply -f /tmp/nomos-migrate/my_managed_cluster-1/root-sync.yaml.
- Updating the ConfigManagement object ....
- Waiting for the RootSync CRD to be established ....
- The RootSync CRD has been established.
- Creating the RootSync object ....
- Waiting for the reconciler-manager Pod to be ready ....
- Haven't detected running Pods with the label selector "app=reconciler-manager".
- Haven't detected running Pods with the label selector "app=reconciler-manager".
- Haven't detected running Pods with the label selector "app=reconciler-manager".
- The reconciler-manager Pod is running.
- Waiting for the root-reconciler Pod to be ready ....
- Haven't detected running Pods with the label selector "configsync.gke.io/reconciler=root-reconciler".
- Haven't detected running Pods with the label selector "configsync.gke.io/reconciler=root-reconciler".
- Haven't detected running Pods with the label selector "configsync.gke.io/reconciler=root-reconciler".
- The root-reconciler Pod is running.
- The migration process is done. Please check the sync status with `nomos status`.
Finished migration on all the contexts. Please check the sync status with `nomos status`.
Procéder au rollback vers la configuration précédente
Si vous devez effectuer un rollback après avoir effectué la migration avec nomos migrate
, appliquez l'objet ConfigManagement d'origine. nomos migrate
enregistre l'objet ConfigManagement d'origine dans un fichier et imprime le nom sur le terminal.
Le nom du fichier est au format /tmp/nomos-migrate/CURRENT_CONTEXT/cm-original.yaml
.
Pour revenir à la configuration précédente, copiez le chemin d'accès au fichier pour cm-original.yaml
et appliquez le fichier à votre cluster:
kubectl apply -f CM_ORIGINAL_PATH
Indicateurs nomos migrate
Pour personnaliser la commande nomos migrate
, ajoutez les options suivantes :
Drapeau | Description |
---|---|
--connect-timeout |
Accepte une durée. Délai d'expiration de la connexion à chaque cluster.
Valeur par défaut : 3s |
--contexts |
Accepte une liste de contextes séparés par une virgule à utiliser dans les environnements multicluster. Valeur par défaut : contexte actuel. Utilisez "all" pour tous les contextes. |
--dry-run |
Accepte une valeur booléenne. Si la valeur est true , affiche uniquement le résultat de la migration. |
-h ou --help |
Aide pour la commande nomos migrate . |
--wait-timeout |
Accepte une durée. Délai pour l'attente des conditions des ressources Kubernetes. La valeur par défaut est 10m . |
Initialiser une source de vérité hiérarchique
Vous pouvez organiser votre source de vérité arbitrairement si vous utilisez une source de vérité non structurée.
Si vous utilisez une source de vérité hiérarchique, vous devez exécuter la commande nomos init
pour initialiser un répertoire hiérarchique:
nomos init
Cela crée la structure de répertoires de base d'une source de vérité hiérarchique, y compris les répertoires system/
, cluster/
et namespaces/
.
Indicateurs nomos init
Pour personnaliser nomos init
, ajoutez les options suivantes :
Option | Description |
---|---|
--force |
Écrit dans le répertoire même s'il n'est pas vide, écrasant les fichiers en conflit |
-h ou --help |
Aide pour la commande nomos init . |
--path |
Accepte une chaîne. Répertoire racine à utiliser pour votre source de vérité. La valeur par défaut est "." . |
Dépannage
Sous Linux, l'erreur suivante peut se produire lors de l'exécution d'une commande nomos
:
failed to create client configs: while getting config path: failed to get current user: user: Current not implemented on linux/amd64
Pour résoudre ce problème, créez une variable d'environnement USER
:
export USER=$(whoami)