Résoudre les problèmes d’extension pour les clusters Kubernetes avec Azure Arc
Cet article décrit des conseils de résolution des problèmes courants liés aux extensions de cluster comme GitOps (Flux v2) dans Azure ou Open Service Mesh (OSM).
Pour résoudre les problèmes liés à Kubernetes avec Azure Arc en général, consultez Résoudre les problèmes Kubernetes avec Azure Arc.
GitOps (Flux v2)
Remarque
Vous pouvez utiliser l’extension Flux v2 dans un cluster Kubernetes avec Azure Arc ou dans un cluster AKS (Azure Kubernetes Service). Ces conseils de dépannage s’appliquent généralement à tous les types de clusters.
Pour obtenir de l’aide générale sur la résolution des problèmes lorsque vous utilisez des ressources fluxConfigurations
, exécutez ces commandes Azure CLI avec le paramètre --debug
:
az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug
Erreurs de test à blanc de webhook
Flux peut échouer et afficher une erreur similaire à dry-run failed, error: admission webhook "<webhook>" does not support dry run
. Pour résoudre le problème, accédez à ValidatingWebhookConfiguration
ou MutatingWebhookConfiguration
. Dans la configuration, définissez la valeur de sideEffects
sur None
ou NoneOnDryRun
.
Pour plus d’informations, consultez Comment faire pour résoudre les erreurs « webhook qui ne prend pas en charge les tests » ?.
Erreur lors de l’installation de l’extension microsoft.flux
L’extension microsoft.flux
installe les contrôleurs Flux et les agents Azure GitOps dans un cluster Kubernetes avec Azure Arc ou un cluster Azure Kubernetes Service (AKS). Si l’extension n’est pas déjà installée dans un cluster et que vous créez une ressource de configuration GitOps pour le cluster, l’extension est installée automatiquement.
Si vous rencontrez une erreur lors de l’installation ou si l’extension affiche un état Failed
, assurez-vous que le cluster n’a pas de stratégies limitant la création de l’espace de noms flux-system
ou de n’importe laquelle de ces ressources dans cet espace de noms.
Pour un cluster AKS, vérifiez que l’indicateur de fonctionnalité Microsoft.ContainerService/AKS-ExtensionManager
est activé dans l’abonnement Azure :
az feature register --namespace Microsoft.ContainerService --name AKS-ExtensionManager
Exécutez ensuite la commande suivante pour déterminer s’il existe d’autres problèmes. Définissez le paramètre de type de cluster (-t
) sur connectedClusters
pour un cluster avec Azure Arc ou sur managedClusters
pour un cluster AKS. Si l’extension a été installée automatiquement lorsque vous avez créé votre configuration GitOps, le nom de l’extension microsoft.flux
est flux
.
az k8s-extension show -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <connectedClusters or managedClusters>
La sortie peut vous aider à identifier le problème et à le résoudre. Les actions de correction possibles sont les suivantes :
- Forcez la suppression de l’extension en exécutant
az k8s-extension delete --force -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <managedClusters OR connectedClusters>
. - Désinstallez la version Helm en exécutant
helm uninstall flux -n flux-system
. - Supprimez l’espace de noms
flux-system
du cluster en exécutantkubectl delete namespaces flux-system
.
Vous pouvez ensuite créer une nouvelle configuration Flux, qui installe automatiquement l’extension microsoft.flux
, ou vous pouvez installer l’extension Flux manuellement.
Erreurs lors de l’installation de l’extension microsoft.flux dans un cluster disposant d’une identité managée par pod Microsoft Entra
Si vous tentez d’installer l’extension Flux dans un cluster disposant d’une identité managée par un pod Microsoft Entra, une erreur peut se produire dans le pod extension-agent
. La sortie ressemble à cet exemple :
{"Message":"2021/12/02 10:24:56 Error: in getting auth header : error {adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID <REDACTED>\n}","LogType":"ConfigAgentTrace","LogLevel":"Information","Environment":"prod","Role":"ClusterConfigAgent","Location":"westeurope","ArmId":"/subscriptions/<REDACTED>/resourceGroups/<REDACTED>/providers/Microsoft.Kubernetes/managedclusters/<REDACTED>","CorrelationId":"","AgentName":"FluxConfigAgent","AgentVersion":"0.4.2","AgentTimestamp":"2021/12/02 10:24:56"}
L’état de l’extension retourne Failed
:
"{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"ExtensionCreationFailed\",\"message\":\" error: Unable to get the status from the local CRD with the error : {Error : Retry for given duration didn't get any results with err {status not populated}}\"}]}}",
Dans ce cas, le pod extension-agent
tente d’obtenir son jeton à partir du service de métadonnées d’instance Azure sur le cluster, mais la demande de jeton est interceptée par l’identité de pod. Pour résoudre ce problème, mettez à niveau vers la dernière version de l’extension microsoft.flux
.
Configuration requise pour la mémoire et le processeur pour l’installation de l’extension microsoft.flux
Les contrôleurs installés dans votre cluster Kubernetes lorsque vous installez l’extension microsoft.flux
doivent disposer de suffisamment de ressources processeur et mémoire pour planifier correctement sur un nœud de cluster Kubernetes. Assurez-vous que votre cluster répond aux exigences minimales en matière de mémoire et de ressources processeur.
Le tableau suivant répertorie les limites minimales et maximales pour les besoins potentiels en ressources processeur et mémoire pour ce scénario :
Nom du conteneur | Processeur minimal | Mémoire minimale | Processeur maximal | Quantité de mémoire maximale |
---|---|---|---|---|
fluxconfig-agent |
5 m | 30 Mi | 50 m | 150 Mi |
fluxconfig-controller |
5 m | 30 Mi | 100 m | 150 Mi |
fluent-bit |
5 m | 30 Mi | 20 m | 150 Mi |
helm-controller |
100 m | 64 Mi | 1,000 m | 1 Gi |
source-controller |
50 m | 64 Mi | 1,000 m | 1 Gi |
kustomize-controller |
100 m | 64 Mi | 1,000 m | 1 Gi |
notification-controller |
100 m | 64 Mi | 1,000 m | 1 Gi |
image-automation-controller |
100 m | 64 Mi | 1,000 m | 1 Gi |
image-reflector-controller |
100 m | 64 Mi | 1,000 m | 1 Gi |
Si vous avez activé une stratégie Azure Policy Gatekeeper personnalisée ou intégrée qui limite les ressources pour les conteneurs sur des clusters Kubernetes, assurez-vous que les limites de ressources sur la stratégie sont supérieures aux limites indiquées dans le tableau précédent, ou que l’espace de noms flux-system
fait partie du paramètre excludedNamespaces
dans l’attribution de stratégie. Kubernetes cluster containers CPU and memory resource limits should not exceed the specified limits
est un exemple de stratégie dans ce scénario.
Flux v1
Remarque
Nous vous recommandons d’effectuer la migration vers Flux v2 dès que possible. La prise en charge des ressources de configuration de cluster basées sur Flux v1 créées avant le 1er janvier 2024 prendra fin le 24 mai 2025. À compter du 1er janvier 2024, vous ne pouvez plus créer de ressources de configuration de cluster basées sur Flux v1.
Pour résoudre les problèmes liés à la ressource sourceControlConfigurations
dans Flux v1, exécutez ces commandes Azure CLI, notamment le paramètre --debug
:
az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug
Azure Monitor Container Insights
Cette section fournit de l’aide pour résoudre les problèmes liés à Azure Monitor Container Insights dans Azure Monitor pour les clusters Kubernetes avec Azure Arc.
Activation du mode privilégié pour un cluster Kubernetes Charmed Canonical
Azure Monitor Container Insights nécessite que son DaemonSet Kubernetes s’exécute en mode privilégié. Pour configurer correctement un cluster Kubernetes Charmed Canonical pour la supervision, exécutez la commande suivante :
juju config kubernetes-worker allow-privileged=true
Impossible d’installer des pods AMA sur Oracle Linux 9.x
Si vous essayez d’installer l’agent Azure Monitor (AMA) sur un cluster Oracle Linux (Red Hat Enterprise Linux (RHEL)) 9.x, les pods AMA et le pod AMA-RS peuvent ne pas fonctionner correctement en raison du conteneur addon-token-adapter
dans le pod. Lorsque vous vérifiez les journaux d’activité du pod ama-logs-rs
, dans addon-token-adapter container
, vous voyez la sortie similaire à l’exemple suivant :
Command: kubectl -n kube-system logs ama-logs-rs-xxxxxxxxxx-xxxxx -c addon-token-adapter
Error displayed: error modifying iptable rules: error adding rules to custom chain: running [/sbin/iptables -t nat -N aad-metadata --wait]: exit status 3: modprobe: can't change directory to '/lib/modules': No such file or directory
iptables v1.8.9 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
Cette erreur se produit, car l’installation de l’extension nécessite le module iptable_nat
, mais ce module n’est pas automatiquement chargé dans les distributions Oracle Linux (RHEL) 9.x.
Pour résoudre ce problème, vous devez charger explicitement le module iptables_nat
sur chaque nœud du cluster. Utilisez la commande modprobe
sudo modprobe iptables_nat
. Une fois connecté à chaque nœud et ajouté manuellement le module iptable_nat
, réessayez l’installation d’AMA.
Remarque
L’exécution de cette étape ne rend pas le module iptables_nat
persistant.
Open Service Mesh avec Azure Arc
Cette section illustre des commandes que vous pouvez utiliser pour valider et résoudre les problèmes de déploiement des composants d’extension Open Service Mesh (OSM) sur votre cluster.
Vérifier le déploiement du contrôleur OSM
kubectl get deployment -n arc-osm-system --selector app=osm-controller
Si le contrôleur OSM est sain, vous voyez une sortie similaire à :
NAME READY UP-TO-DATE AVAILABLE AGE
osm-controller 1/1 1 1 59m
Vérifier les pods du contrôleur OSM
kubectl get pods -n arc-osm-system --selector app=osm-controller
Si le contrôleur OSM est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME READY STATUS RESTARTS AGE
osm-controller-b5bd66db-wglzl 0/1 Evicted 0 61m
osm-controller-b5bd66db-wvl9w 1/1 Running 0 31m
Même si un contrôleur a un état Evicted
à un moment donné, un autre contrôleur a l’état READY
1/1
et Running
avec 0
redémarrages. Si l’état READY
est autre que 1/1
, le maillage de service est dans un état rompu. Si READY
est 0/1
, le conteneur du plan de contrôle se bloque.
Utilisez la commande suivante pour inspecter les journaux de contrôleur :
kubectl logs -n arc-osm-system -l app=osm-controller
Si l’état READY
est supérieur à 1
après la barre oblique (/
), les sidecars sont installés. Le contrôleur OSM ne fonctionne généralement pas correctement lorsque des sidecars sont attachés.
Vérifier le service du contrôleur OSM
Pour vérifier le service du contrôleur OSM, exécutez cette commande :
kubectl get service -n arc-osm-system osm-controller
Si le contrôleur OSM est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
osm-controller ClusterIP 10.0.31.254 <none> 15128/TCP,9092/TCP 67m
Remarque
La valeur réelle de CLUSTER-IP
sera différente de cet exemple. Les valeurs de NAME
et de PORT(S)
doivent correspondre à ce qui est illustré dans cet exemple.
Vérifier les points de terminaison du contrôleur OSM
kubectl get endpoints -n arc-osm-system osm-controller
Si le contrôleur OSM est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME ENDPOINTS AGE
osm-controller 10.240.1.115:9092,10.240.1.115:15128 69m
Si le cluster ne présente pas de ENDPOINTS
ayant la valeur osm-controller
, le plan de contrôle n’est pas sain. Cet état non sain signifie que le pod du contrôleur s’est écrasé ou qu’il n’a jamais été déployé correctement.
Vérifier le déploiement de l’injecteur OSM
kubectl get deployments -n arc-osm-system osm-injector
Si l’injecteur OSM est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME READY UP-TO-DATE AVAILABLE AGE
osm-injector 1/1 1 1 73m
Vérifier le pod d’injecteur OSM
kubectl get pod -n arc-osm-system --selector app=osm-injector
Si l’injecteur OSM est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME READY STATUS RESTARTS AGE
osm-injector-5986c57765-vlsdk 1/1 Running 0 73m
L’état READY
doit être 1/1
. Toute autre valeur indique un pod injecteur OSM défectueux.
Vérifier le service d’injecteur OSM
kubectl get service -n arc-osm-system osm-injector
Si l’injecteur OSM est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
osm-injector ClusterIP 10.0.39.54 <none> 9090/TCP 75m
Vérifiez que l’adresse IP répertoriée pour le service osm-injector
est 9090
. Il ne doit pas y avoir de valeur répertoriée pour EXTERNAL-IP
.
Vérifier les points de terminaison d’injecteur OSM
kubectl get endpoints -n arc-osm-system osm-injector
Si l’injecteur OSM est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME ENDPOINTS AGE
osm-injector 10.240.1.172:9090 75m
Pour qu’OSM fonctionne, il doit y avoir au moins un point de terminaison pour osm-injector
. L’adresse IP de vos points de terminaison d’injecteur OSM varie, mais la valeur du port 9090
doit être la même.
Vérifier les webhooks : Validating et Mutating
Vérifiez le webhook Validating en exécutant la commande suivante :
kubectl get ValidatingWebhookConfiguration --selector app=osm-controller
Si le webhook Validating est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME WEBHOOKS AGE
osm-validator-mesh-osm 1 81m
Vérifiez le webhook Mutating en exécutant la commande suivante :
kubectl get MutatingWebhookConfiguration --selector app=osm-injector
Si le webhook Mutating est sain, une sortie similaire à l’exemple suivant s’affiche :
NAME WEBHOOKS AGE
arc-osm-webhook-osm 1 102m
Recherchez le service et le pack d’autorité de certification (CA) du webhook Validating à l’aide de cette commande :
kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq '.webhooks[0].clientConfig.service'
Une sortie de webhook Validating bien configurée présente une sortie similaire à celle de cet exemple :
{
"name": "osm-config-validator",
"namespace": "arc-osm-system",
"path": "/validate",
"port": 9093
}
Rechercher le service et le bundle d’autorité de certification du webhook de mutation en utilisant la commande suivante :
kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq '.webhooks[0].clientConfig.service'
Une sortie de webhook Mutating bien configurée présente une sortie similaire à celle de cet exemple :
{
"name": "osm-injector",
"namespace": "arc-osm-system",
"path": "/mutate-pod-creation",
"port": 9090
}
Vérifiez si le contrôleur OSM a donné au webhook Validating (ou Mutating) un pack d’autorité de certification à l’aide de la commande suivante :
kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c
kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c
Exemple de sortie :
1845
Le nombre dans la sortie représente le nombre d’octets ou la taille du pack de l’autorité de certification. Si la sortie est vide, ou s’il affiche 0 ou un nombre inférieur à 1 000, le pack d’autorité de certification n’est pas correctement approvisionné. Sans pack d’autorité de certification correct, ValidatingWebhook
génère une erreur.
Vérifiez la osm-mesh-config
ressource
Vérifiez l’existence de la ressource :
kubectl get meshconfig osm-mesh-config -n arc-osm-system
Vérifiez la valeur du paramètre OSM meshconfig
:
kubectl get meshconfig osm-mesh-config -n arc-osm-system -o yaml
Trouvez la sortie qui ressemble à cet exemple :
apiVersion: config.openservicemesh.io/v1alpha1
kind: MeshConfig
metadata:
creationTimestamp: "0000-00-00A00:00:00A"
generation: 1
name: osm-mesh-config
namespace: arc-osm-system
resourceVersion: "2494"
uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31
spec:
certificate:
certKeyBitSize: 2048
serviceCertValidityDuration: 24h
featureFlags:
enableAsyncProxyServiceMapping: false
enableEgressPolicy: true
enableEnvoyActiveHealthChecks: false
enableIngressBackendPolicy: true
enableMulticlusterMode: false
enableRetryPolicy: false
enableSnapshotCacheMode: false
enableWASMStats: true
observability:
enableDebugServer: false
osmLogLevel: info
tracing:
enable: false
sidecar:
configResyncInterval: 0s
enablePrivilegedInitContainer: false
logLevel: error
resources: {}
traffic:
enableEgress: false
enablePermissiveTrafficPolicyMode: true
inboundExternalAuthorization:
enable: false
failureModeAllow: false
statPrefix: inboundExtAuthz
timeout: 1s
inboundPortExclusionList: []
outboundIPRangeExclusionList: []
outboundPortExclusionList: []
kind: List
metadata:
resourceVersion: ""
selfLink: ""
Le tableau suivant répertorie les valeurs de ressource osm-mesh-config
:
Clé | Type | Default value | Exemples de commandes de patch Kubectl |
---|---|---|---|
spec.traffic.enableEgress |
bool | false |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":false}}}' --type=merge |
spec.traffic.enablePermissiveTrafficPolicyMode |
bool | true |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge |
spec.traffic.outboundPortExclusionList |
tableau | [] |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundPortExclusionList":[6379,8080]}}}' --type=merge |
spec.traffic.outboundIPRangeExclusionList |
tableau | [] |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundIPRangeExclusionList":["10.0.0.0/32","1.1.1.1/24"]}}}' --type=merge |
spec.traffic.inboundPortExclusionList |
tableau | [] |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"inboundPortExclusionList":[6379,8080]}}}' --type=merge |
spec.certificate.serviceCertValidityDuration |
string | "24h" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"certificate":{"serviceCertValidityDuration":"24h"}}}' --type=merge |
spec.observability.enableDebugServer |
bool | false |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"enableDebugServer":false}}}' --type=merge |
spec.observability.osmLogLevel |
string | "info" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"osmLogLevel": "info"}}}}' --type=merge |
spec.observability.tracing.enable |
bool | false |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"enable":true}}}}' --type=merge |
spec.sidecar.enablePrivilegedInitContainer |
bool | false |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"enablePrivilegedInitContainer":true}}}' --type=merge |
spec.sidecar.logLevel |
string | "error" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"logLevel":"error"}}}' --type=merge |
spec.featureFlags.enableWASMStats |
bool | "true" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableWASMStats":"true"}}}' --type=merge |
spec.featureFlags.enableEgressPolicy |
bool | "true" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEgressPolicy":"true"}}}' --type=merge |
spec.featureFlags.enableMulticlusterMode |
bool | "false" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableMulticlusterMode":"false"}}}' --type=merge |
spec.featureFlags.enableSnapshotCacheMode |
bool | "false" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableSnapshotCacheMode":"false"}}}' --type=merge |
spec.featureFlags.enableAsyncProxyServiceMapping |
bool | "false" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableAsyncProxyServiceMapping":"false"}}}' --type=merge |
spec.featureFlags.enableIngressBackendPolicy |
bool | "true" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableIngressBackendPolicy":"true"}}}' --type=merge |
spec.featureFlags.enableEnvoyActiveHealthChecks |
bool | "false" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEnvoyActiveHealthChecks":"false"}}}' --type=merge |
Vérifiez les espaces de noms
Remarque
L’espace de noms arc-osm-system
ne participe jamais à un maillage de service et n’est jamais étiqueté ou annoté avec les paires clé/valeur affichées ici.
Vous pouvez utiliser la commande osm namespace add
pour joindre des espaces de noms à un maillage de services donné. Lorsqu’un espace de noms Kubernetes fait partie du maillage, effectuez les étapes suivantes pour vérifier que les exigences sont remplies.
Affichez les annotations de l’espace de noms bookbuyer
:
kubectl get namespace bookbuyer -o json | jq '.metadata.annotations'
L’annotation suivante doit être présente :
{
"openservicemesh.io/sidecar-injection": "enabled"
}
Affichez les étiquettes de l’espace de noms bookbuyer
:
kubectl get namespace bookbuyer -o json | jq '.metadata.labels'
L’étiquette suivante doit être présente :
{
"openservicemesh.io/monitored-by": "osm"
}
Si vous n’utilisez pas l’interface CLI osm
, vous pouvez ajouter manuellement ces annotations à vos espaces de noms. Si un espace de noms n’est pas annoté avec "openservicemesh.io/sidecar-injection": "enabled"
ou n’est pas étiqueté avec "openservicemesh.io/monitored-by": "osm"
, l’injecteur OSM n’ajoute pas de sidecars Envoy.
Remarque
Une fois que osm namespace add
est appelé, seuls les nouveaux pods sont injectés avec un side-car Envoy. Les pods existants doivent être redémarrés à l’aide de la commande kubectl rollout restart deployment
.
Vérifier les CRD SMI
Pour l’interface SMI (Service Mesh Interface) OSM, vérifiez si le cluster dispose des définitions de ressources personnalisées (CRD) requises :
kubectl get crds
Vérifiez que les CRD correspondent aux versions disponibles dans la branche des versions. Pour vérifier les versions CRD utilisées, consultez Versions prises en charge par SMI et sélectionnez votre version dans le menu Versions.
Obtenez les versions des CRD installées avec la commande suivante :
for x in $(kubectl get crds --no-headers | awk '{print $1}' | grep 'smi-spec.io'); do
kubectl get crd $x -o json | jq -r '(.metadata.name, "----" , .spec.versions[].name, "\n")'
done
S’il manque des CRD, utilisez les commandes suivantes pour les installer sur le cluster. Remplacez la version dans ces commandes si nécessaire (par exemple, au lieu de v1.1.0, vous pouvez utiliser release-v1.1).
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_http_route_group.yaml
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_tcp_route.yaml
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_access.yaml
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_split.yaml
Pour voir les différences entre les versions CRD publiées, consultez les notes de publication OSM.
Résoudre les problèmes de gestion des certificats
Vous trouverez des informations sur la façon dont OSM émet et gère les certificats pour les proxies Envoy fonctionnant sur des pods d’application sur le site de documentation d’OSM.
Mettre à niveau Envoy
Lorsqu’un nouveau pod est créé dans un espace de noms surveillé par le module complémentaire, OSM injecte un sidecar de proxy Envoy dans ce pod. Si vous devez mettre à jour la version d’Envoy, suivez les étapes du guide de mise à niveau sur le site de documentation d’OSM.
Contenu connexe
- En savoir plus sur les extensions de cluster .
- Consultez les conseils généraux de résolution des problèmes pour les clusters Kubernetes avec Arc.