1.11. Mise à niveau du maillage de services
Pour accéder aux fonctionnalités les plus récentes de Red Hat OpenShift Service Mesh, mettez à niveau vers la version actuelle, 2.3.3.
1.11.1. Comprendre les versions
Red Hat utilise la version sémantique pour les versions de ses produits. La version sémantique est un numéro à trois composants au format X.Y.Z, où :
- X correspond à une version majeure. Les versions majeures indiquent généralement une sorte de changement radical : changements architecturaux, changements d'API, changements de schéma et autres mises à jour majeures similaires.
- Y correspond à une version mineure. Les versions mineures contiennent de nouvelles caractéristiques et fonctionnalités tout en maintenant la compatibilité ascendante.
- Z correspond à une version de correctif (également connue sous le nom de "z-stream release"). Les versions de correctifs sont utilisées pour remédier aux vulnérabilités et expositions communes (CVE) et pour publier des corrections de bogues. Les nouvelles caractéristiques et fonctionnalités ne sont généralement pas publiées dans le cadre d'une version Patch.
1.11.1.1. Comment les versions affectent les mises à jour de Service Mesh
La procédure de mise à jour varie en fonction de la version de la mise à jour que vous effectuez.
- Patch updates - Les mises à jour des correctifs sont gérées par le gestionnaire du cycle de vie des opérateurs (OLM) ; elles se produisent automatiquement lorsque vous mettez à jour vos opérateurs.
-
Minor upgrades - Les mises à niveau mineures nécessitent à la fois une mise à jour vers la version la plus récente de Red Hat OpenShift Service Mesh Operator et une modification manuelle de la valeur
spec.version
dans vos ressourcesServiceMeshControlPlane
. -
Major upgrades - Les mises à niveau majeures nécessitent à la fois une mise à jour vers la version la plus récente de Red Hat OpenShift Service Mesh Operator et une modification manuelle de la valeur
spec.version
dans vos ressourcesServiceMeshControlPlane
. Étant donné que les mises à niveau majeures peuvent contenir des changements qui ne sont pas rétrocompatibles, des modifications manuelles supplémentaires peuvent être nécessaires.
1.11.1.2. Comprendre les versions de Service Mesh
Afin de comprendre quelle version de Red Hat OpenShift Service Mesh vous avez déployée sur votre système, vous devez comprendre comment chacune des versions des composants est gérée.
Operator version - La version la plus récente de l'opérateur est 2.3.3. Le numéro de version de l'opérateur indique uniquement la version de l'opérateur actuellement installé. Étant donné que l'Opérateur Red Hat OpenShift Service Mesh prend en charge plusieurs versions du plan de contrôle Service Mesh, la version de l'Opérateur ne détermine pas la version de vos ressources
ServiceMeshControlPlane
déployées.ImportantLa mise à niveau vers la dernière version de l'opérateur applique automatiquement les mises à jour des correctifs, mais ne met pas automatiquement à niveau votre plan de contrôle Service Mesh vers la dernière version mineure.
ServiceMeshControlPlane version - La version
ServiceMeshControlPlane
détermine la version de Red Hat OpenShift Service Mesh que vous utilisez. La valeur du champspec.version
dans la ressourceServiceMeshControlPlane
contrôle l'architecture et les paramètres de configuration utilisés pour installer et déployer Red Hat OpenShift Service Mesh. Lorsque vous créez le plan de contrôle Service Mesh, vous pouvez définir la version de deux manières :- Pour configurer la vue formulaire, sélectionnez la version dans le menu Control Plane Version.
-
Pour configurer la vue YAML, définissez la valeur de
spec.version
dans le fichier YAML.
Operator Lifecycle Manager (OLM) ne gère pas les mises à niveau du plan de contrôle de Service Mesh, de sorte que le numéro de version de votre opérateur et de ServiceMeshControlPlane
(SMCP) peut ne pas correspondre, à moins que vous n'ayez mis à niveau manuellement votre SMCP.
1.11.2. Considérations relatives à la mise à niveau
L'étiquette ou l'annotation maistra.io/
ne doit pas être utilisée sur une ressource personnalisée créée par l'utilisateur, car elle indique que la ressource a été générée et doit être gérée par le Red Hat OpenShift Service Mesh Operator.
Pendant la mise à niveau, l'opérateur apporte des modifications, y compris la suppression ou le remplacement de fichiers, aux ressources qui comprennent les étiquettes ou annotations suivantes indiquant que la ressource est gérée par l'opérateur.
Avant de procéder à la mise à niveau, vérifiez si des ressources personnalisées créées par l'utilisateur comportent les étiquettes ou les annotations suivantes :
-
maistra.io/
ET l'étiquetteapp.kubernetes.io/managed-by
définie surmaistra-istio-operator
(Red Hat OpenShift Service Mesh) -
kiali.io/
(Kiali) -
jaegertracing.io/
(Plate-forme de traçage distribuée Red Hat OpenShift) -
logging.openshift.io/
(Red Hat Elasticsearch)
Avant la mise à niveau, vérifiez que les ressources personnalisées créées par l'utilisateur ne comportent pas d'étiquettes ou d'annotations indiquant qu'elles sont gérées par l'opérateur. Supprimez l'étiquette ou l'annotation des ressources personnalisées que vous ne souhaitez pas voir gérées par l'opérateur.
Lors du passage à la version 2.0, l'opérateur ne supprime que les ressources portant ces étiquettes dans le même espace de noms que le SMCP.
Lors du passage à la version 2.1, l'opérateur supprime les ressources portant ces étiquettes dans tous les espaces de noms.
1.11.2.1. Problèmes connus pouvant affecter la mise à jour
Les problèmes connus qui peuvent affecter votre mise à niveau sont les suivants :
-
Red Hat OpenShift Service Mesh ne prend pas en charge l'utilisation de la configuration
EnvoyFilter
, sauf lorsqu'elle est explicitement documentée. Ceci est dû à un couplage étroit avec les API Envoy sous-jacentes, ce qui signifie que la compatibilité ascendante ne peut pas être maintenue. Si vous utilisez des filtres Envoy et que la configuration générée par Istio a changé en raison de la dernière version d'Envoy introduite par la mise à niveau de votreServiceMeshControlPlane
, cela peut potentiellement casser toutEnvoyFilter
que vous avez mis en œuvre. -
OSSM-1505
ServiceMeshExtension
ne fonctionne pas avec OpenShift Container Platform version 4.11. Parce queServiceMeshExtension
a été déprécié dans Red Hat OpenShift Service Mesh 2.2, ce problème connu ne sera pas corrigé et vous devez migrer vos extensions versWasmPluging
-
OSSM-1396 Si une ressource passerelle contient le paramètre
spec.externalIPs
, au lieu d'être recréée lors de la mise à jour deServiceMeshControlPlane
, la passerelle est supprimée et n'est jamais recréée.
OSSM-1052 Lors de la configuration d'un service
ExternalIP
pour l'ingressgateway dans le plan de contrôle Service Mesh, le service n'est pas créé. Le schéma du SMCP ne contient pas le paramètre du service.Solution : Désactiver la création de la passerelle dans la spécification SMCP et gérer le déploiement de la passerelle entièrement manuellement (y compris le service, le rôle et le RoleBinding).
1.11.3. Mise à niveau des opérateurs
Pour que votre Service Mesh bénéficie des derniers correctifs de sécurité, des corrections de bogues et des mises à jour logicielles, vous devez mettre à jour vos opérateurs. Vous lancez les mises à jour des correctifs en mettant à niveau vos opérateurs.
La version de l'opérateur ne not détermine pas la version de votre Service Mesh. La version de votre plan de contrôle Service Mesh déployé détermine votre version de Service Mesh.
not Étant donné que Red Hat OpenShift Service Mesh Operator prend en charge plusieurs versions du plan de contrôle Service Mesh, la mise à jour de Red Hat OpenShift Service Mesh Operator ne met pas à jour la valeur spec.version
de votre ServiceMeshControlPlane
déployé. Notez également que la valeur spec.version
est un nombre à deux chiffres, par exemple 2.2, et que les mises à jour de correctifs, par exemple 2.2.1, ne sont pas reflétées dans la valeur de la version SMCP.
Operator Lifecycle Manager (OLM) contrôle l'installation, la mise à niveau et le contrôle d'accès basé sur les rôles (RBAC) des opérateurs dans un cluster. L'OLM s'exécute par défaut dans OpenShift Container Platform. OLM recherche les opérateurs disponibles ainsi que les mises à niveau des opérateurs installés.
Le fait que vous deviez ou non prendre des mesures pour mettre à jour vos opérateurs dépend des paramètres que vous avez sélectionnés lors de leur installation. Lorsque vous avez installé chacun de vos opérateurs, vous avez sélectionné un Update Channel et un Approval Strategy. La combinaison de ces deux paramètres détermine quand et comment vos opérateurs sont mis à jour.
Canal versionné | \Stabilité ou prévisibilité Chaîne | |
---|---|---|
Automatic | L'opérateur est automatiquement mis à jour pour les versions mineures et les correctifs de cette version uniquement. Ne met pas automatiquement à jour la version majeure suivante (c'est-à-dire de la version 2.0 à la version 3.0). Une modification manuelle de l'abonnement à l'opérateur est nécessaire pour passer à la version majeure suivante. | Mise à jour automatique d'Operator pour toutes les versions majeures, mineures et correctives. |
Manual | Mises à jour manuelles requises pour les versions mineures et les correctifs de la version spécifiée. Une modification manuelle de l'abonnement de l'opérateur est nécessaire pour passer à la version majeure suivante. | Mises à jour manuelles requises pour toutes les versions majeures, mineures et correctives. |
Lorsque vous mettez à jour votre opérateur Red Hat OpenShift Service Mesh, le gestionnaire du cycle de vie de l'opérateur (OLM) supprime l'ancien pod de l'opérateur et démarre un nouveau pod. Une fois que le nouveau pod Operator démarre, le processus de réconciliation vérifie le site ServiceMeshControlPlane
(SMCP), et s'il y a des images de conteneurs mises à jour disponibles pour l'un des composants du plan de contrôle Service Mesh, il remplace ces pods du plan de contrôle Service Mesh par ceux qui utilisent les nouvelles images de conteneurs.
Lorsque vous mettez à niveau les opérateurs de plateforme de traçage distribuée Kiali et Red Hat OpenShift, le processus de réconciliation OLM analyse le cluster et met à niveau les instances gérées vers la version du nouvel opérateur. Par exemple, si vous mettez à jour l'opérateur de plateforme de traçage distribuée Red Hat OpenShift de la version 1.30.2 à la version 1.34.1, l'opérateur recherche les instances en cours d'exécution de la plateforme de traçage distribuée et les met également à niveau vers la version 1.34.1.
Pour rester sur une version de correctif particulière de Red Hat OpenShift Service Mesh, vous devez désactiver les mises à jour automatiques et rester sur cette version spécifique de l'opérateur.
Pour plus d'informations sur la mise à niveau des opérateurs, reportez-vous à la documentation du gestionnaire du cycle de vie des opérateurs.
1.11.4. Mise à niveau du plan de contrôle
Vous devez mettre à jour manuellement le plan de contrôle pour les versions mineures et majeures. Le projet communautaire Istio recommande des mises à niveau canary, Red Hat OpenShift Service Mesh ne prend en charge que les mises à niveau in-place. Red Hat OpenShift Service Mesh exige que vous mettiez à niveau chaque version mineure vers la version mineure suivante dans l'ordre. Par exemple, vous devez mettre à niveau la version 2.0 vers la version 2.1, puis vers la version 2.2. Vous ne pouvez pas mettre à jour Red Hat OpenShift Service Mesh 2.0 vers 2.2 directement.
Lorsque vous mettez à niveau le plan de contrôle du service mesh, toutes les ressources gérées par l'opérateur, par exemple les passerelles, sont également mises à niveau.
Bien que vous puissiez déployer plusieurs versions du plan de contrôle dans le même cluster, Red Hat OpenShift Service Mesh ne prend pas en charge les mises à niveau canari du maillage de services. En d'autres termes, vous pouvez avoir différentes ressources SCMP avec différentes valeurs pour spec.version
, mais elles ne peuvent pas gérer le même maillage.
Pour plus d'informations sur la migration de vos extensions, reportez-vous à la section Migration des ressources ServiceMeshExtension vers WasmPlugin.
1.11.4.1. Changements dans la mise à jour de la version 2.2 à la version 2.3
La mise à niveau du plan de contrôle Service Mesh de la version 2.2 à la version 2.3 introduit les changements de comportement suivants :
-
Cette version nécessite l'utilisation de l'API
WasmPlugin
. La prise en charge de l'APIServiceMeshExtension
, qui était obsolète dans la version 2.2, a été supprimée. Si vous tentez d'effectuer une mise à niveau alors que vous utilisez l'APIServiceMeshExtension
, la mise à niveau échoue.
1.11.4.2. Changements dans la mise à jour de la version 2.1 à la version 2.2
La mise à niveau du plan de contrôle Service Mesh de la version 2.1 à la version 2.2 introduit les changements de comportement suivants :
-
Le DaemonSet
istio-node
est renommé enistio-cni-node
pour correspondre au nom dans Istio en amont. -
Istio 1.10 a mis à jour Envoy pour envoyer le trafic au conteneur d'application en utilisant
eth0
au lieu delo
par défaut. -
Cette version ajoute la prise en charge de l'API
WasmPlugin
et supprime l'APIServiceMeshExtension
.
1.11.4.3. Changements dans la mise à jour de la version 2.0 à la version 2.1
La mise à niveau du plan de contrôle du Service Mesh de la version 2.0 à la version 2.1 introduit les changements architecturaux et comportementaux suivants.
Modifications de l'architecture
Mixer a été complètement supprimé dans Red Hat OpenShift Service Mesh 2.1. La mise à niveau d'une version Red Hat OpenShift Service Mesh 2.0.x vers 2.1 sera bloquée si Mixer est activé.
Si le message suivant apparaît lors de la mise à niveau de la version 2.0 à la version 2.1, mettez à jour le type Mixer
existant en type Istiod
dans la spécification du plan de contrôle existant avant de mettre à jour le champ .spec.version
:
An error occurred admission webhook smcp.validation.maistra.io denied the request: [support for policy.type "Mixer" and policy.Mixer options have been removed in v2.1, please use another alternative, support for telemetry.type "Mixer" and telemetry.Mixer options have been removed in v2.1, please use another alternative]”
Par exemple :
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane spec: policy: type: Istiod telemetry: type: Istiod version: v2.3
Changements de comportement
AuthorizationPolicy
des mises à jour :-
Avec le protocole PROXY, si vous utilisez
ipBlocks
etnotIpBlocks
pour spécifier des adresses IP distantes, mettez à jour la configuration pour utiliserremoteIpBlocks
etnotRemoteIpBlocks
à la place. - Ajout de la prise en charge des réclamations JSON Web Token (JWT) imbriquées.
-
Avec le protocole PROXY, si vous utilisez
EnvoyFilter
changements en cours>-
Doit être utilisé
typed_config
- xDS v2 n'est plus supporté
- Noms de filtres obsolètes
-
Doit être utilisé
- Les anciennes versions des serveurs mandataires peuvent signaler des codes d'état 503 lorsqu'ils reçoivent des codes d'état 1xx ou 204 de la part de serveurs mandataires plus récents.
1.11.4.4. Mise à jour du plan de contrôle du Service Mesh
Pour mettre à niveau Red Hat OpenShift Service Mesh, vous devez mettre à jour le champ de version de la ressource Red Hat OpenShift Service Mesh ServiceMeshControlPlane
v2. Ensuite, une fois qu'elle est configurée et appliquée, redémarrez les pods d'application pour mettre à jour chaque proxy sidecar et sa configuration.
Conditions préalables
- Vous utilisez OpenShift Container Platform 4.9 ou une version ultérieure.
- Vous avez la dernière version de Red Hat OpenShift Service Mesh Operator.
Procédure
Passez au projet qui contient votre ressource
ServiceMeshControlPlane
. Dans cet exemple,istio-system
est le nom du projet de plan de contrôle Service Mesh.$ oc project istio-system
Vérifiez la validité de la configuration de votre ressource v2
ServiceMeshControlPlane
.Exécutez la commande suivante pour afficher votre ressource
ServiceMeshControlPlane
en tant que ressource v2.$ oc get smcp -o yaml
AstuceSauvegardez la configuration du plan de contrôle de Service Mesh.
Mettez à jour le champ
.spec.version
et appliquez la configuration.Par exemple :
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic spec: version: v2.3
Au lieu d'utiliser la ligne de commande, vous pouvez également utiliser la console web pour modifier le plan de contrôle Service Mesh. Dans la console web d'OpenShift Container Platform, cliquez sur Project et sélectionnez le nom du projet que vous venez de saisir.
-
Cliquez sur Operators
Installed Operators. -
Trouvez votre instance
ServiceMeshControlPlane
. - Sélectionnez YAML view et mettez à jour le texte du fichier YAML, comme indiqué dans l'exemple précédent.
- Cliquez sur Save.
-
Cliquez sur Operators
1.11.4.5. Migration de Red Hat OpenShift Service Mesh de la version 1.1 à la version 2.0
La mise à niveau de la version 1.1 à 2.0 nécessite des étapes manuelles qui migrent vos charges de travail et votre application vers une nouvelle instance de Red Hat OpenShift Service Mesh exécutant la nouvelle version.
Conditions préalables
- Vous devez mettre à niveau vers OpenShift Container Platform 4.7. avant de mettre à niveau vers Red Hat OpenShift Service Mesh 2.0.
- Vous devez avoir l'opérateur Red Hat OpenShift Service Mesh version 2.0. Si vous avez sélectionné le chemin de mise à niveau automatic, l'opérateur télécharge automatiquement les dernières informations. Cependant, vous devez suivre certaines étapes pour utiliser les fonctionnalités de Red Hat OpenShift Service Mesh version 2.0.
1.11.4.5.1. Mise à jour de Red Hat OpenShift Service Mesh
Pour mettre à niveau Red Hat OpenShift Service Mesh, vous devez créer une instance de la ressource Red Hat OpenShift Service Mesh ServiceMeshControlPlane
v2 dans un nouvel espace de noms. Ensuite, une fois qu'elle est configurée, déplacez vos applications de microservices et vos charges de travail de votre ancien maillage vers le nouveau maillage de services.
Procédure
Vérifiez que la configuration de votre ressource v1
ServiceMeshControlPlane
est valide.Exécutez la commande suivante pour afficher votre ressource
ServiceMeshControlPlane
en tant que ressource v2.$ oc get smcp -o yaml
-
Consultez le champ
spec.techPreview.errored.message
dans la sortie pour obtenir des informations sur les champs non valides. - Si votre ressource v1 contient des champs non valides, la ressource n'est pas réconciliée et ne peut pas être éditée en tant que ressource v2. Toutes les mises à jour des champs de la v2 seront remplacées par les paramètres originaux de la v1. Pour corriger les champs non valides, vous pouvez remplacer, corriger ou éditer la version v1 de la ressource. Vous pouvez également supprimer la ressource sans la corriger. Une fois la ressource corrigée, elle peut être réconciliée et vous pouvez modifier ou consulter la version v2 de la ressource.
Pour corriger la ressource en modifiant un fichier, utilisez
oc get
pour récupérer la ressource, modifiez le fichier texte localement et remplacez la ressource par le fichier que vous avez modifié.$ oc get smcp.v1.maistra.io <smcp_name> > smcp-resource.yaml #Edit the smcp-resource.yaml file. $ oc replace -f smcp-resource.yaml
Pour corriger la ressource à l'aide d'un correctif, utilisez
oc patch
.$ oc patch smcp.v1.maistra.io <smcp_name> --type json --patch '[{"op" : \N "replace\N", \N "path\N":\N"/spec/path/to/bad/setting\N", \N "value\N":\N "corrected-value\N"]''
Pour corriger la ressource en l'éditant à l'aide d'outils de ligne de commande, utilisez
oc edit
.oc edit smcp.v1.maistra.io <smcp_name>
Sauvegardez votre configuration du plan de contrôle Service Mesh. Passez au projet qui contient votre ressource
ServiceMeshControlPlane
. Dans cet exemple,istio-system
est le nom du projet de plan de contrôle Service Mesh.$ oc project istio-system
Entrez la commande suivante pour récupérer la configuration actuelle. Votre <smcp_name> est spécifié dans les métadonnées de votre ressource
ServiceMeshControlPlane
, par exemplebasic-install
oufull-install
.oc get servicemeshcontrolplanes.v1.maistra.io <smcp_name> -o yaml > <smcp_name>.v1.yaml
Convertissez votre site
ServiceMeshControlPlane
en une version v2 du plan de contrôle qui contient des informations sur votre configuration comme point de départ.$ oc get smcp <smcp_name> -o yaml > <smcp_name>.v2.yaml
Créez un projet. Dans le menu Projet de la console OpenShift Container Platform, cliquez sur
New Project
et entrez un nom pour votre projet,istio-system-upgrade
, par exemple. Vous pouvez également exécuter cette commande à partir de la CLI.$ oc new-project istio-system-upgrade
-
Mettez à jour le champ
metadata.namespace
de votre v2ServiceMeshControlPlane
avec le nouveau nom de votre projet. Dans cet exemple, utilisezistio-system-upgrade
. -
Mettez à jour le champ
version
de 1.1 à 2.0 ou supprimez-le dans votre v2ServiceMeshControlPlane
. Créez un
ServiceMeshControlPlane
dans le nouvel espace de noms. Sur la ligne de commande, exécutez la commande suivante pour déployer le plan de contrôle avec la version v2 duServiceMeshControlPlane
que vous avez récupéré. Dans cet exemple, remplacez `<smcp_name.v2> `par le chemin d'accès à votre fichier.oc create -n istio-system-upgrade -f <smcp_name>.v2.yaml
Vous pouvez également utiliser la console pour créer le plan de contrôle Service Mesh. Dans la console web d'OpenShift Container Platform, cliquez sur Project. Sélectionnez ensuite le nom du projet que vous venez de saisir.
-
Cliquez sur Operators
Installed Operators. - Cliquez sur Create ServiceMeshControlPlane.
-
Sélectionnez YAML view et collez le texte du fichier YAML que vous avez récupéré dans le champ. Vérifiez que le champ
apiVersion
est défini surmaistra.io/v2
et modifiez le champmetadata.namespace
pour utiliser le nouvel espace de noms, par exempleistio-system-upgrade
. - Cliquez sur Create.
-
Cliquez sur Operators
1.11.4.5.2. Configuration du ServiceMeshControlPlane 2.0
La ressource ServiceMeshControlPlane
a été modifiée pour Red Hat OpenShift Service Mesh version 2.0. Après avoir créé une version v2 de la ressource ServiceMeshControlPlane
, modifiez-la pour profiter des nouvelles fonctionnalités et pour l'adapter à votre déploiement. Tenez compte des changements suivants dans la spécification et le comportement de Red Hat OpenShift Service Mesh 2.0 lorsque vous modifiez votre ressource ServiceMeshControlPlane
. Vous pouvez également vous référer à la documentation du produit Red Hat OpenShift Service Mesh 2.0 pour obtenir de nouvelles informations sur les fonctionnalités que vous utilisez. La ressource v2 doit être utilisée pour les installations Red Hat OpenShift Service Mesh 2.0.
1.11.4.5.2.1. Modifications de l'architecture
Les unités architecturales utilisées par les versions précédentes ont été remplacées par Istiod. Dans la version 2.0, les composants du plan de contrôle Service Mesh - Mixer, Pilot, Citadel, Galley - et la fonctionnalité de l'injecteur sidecar ont été combinés en un seul composant, Istiod.
Bien que Mixer ne soit plus supporté en tant que composant du plan de contrôle, les plugins de politique et de télémétrie Mixer sont maintenant supportés par des extensions WASM dans Istiod. Mixer peut être activé pour la politique et la télémétrie si vous avez besoin d'intégrer des plugins Mixer hérités.
Secret Discovery Service (SDS) est utilisé pour distribuer des certificats et des clés aux sidecars directement depuis Istiod. Dans Red Hat OpenShift Service Mesh version 1.1, des secrets ont été générés par Citadel, qui ont été utilisés par les proxys pour récupérer les certificats et les clés de leurs clients.
1.11.4.5.2.2. Modifications des annotations
Les annotations suivantes ne sont plus prises en charge dans la version 2.0. Si vous utilisez l'une de ces annotations, vous devez mettre à jour votre charge de travail avant de la transférer vers un plan de contrôle Service Mesh v2.0.
-
sidecar.maistra.io/proxyCPULimit
a été remplacé parsidecar.istio.io/proxyCPULimit
. Si vous utilisiez les annotationssidecar.maistra.io
dans vos charges de travail, vous devez modifier ces charges de travail pour utiliser les équivalentssidecar.istio.io
à la place. -
sidecar.maistra.io/proxyMemoryLimit
a été remplacé parsidecar.istio.io/proxyMemoryLimit
-
sidecar.istio.io/discoveryAddress
n'est plus pris en charge. En outre, l'adresse de découverte par défaut est passée depilot.<control_plane_namespace>.svc:15010
(ou du port 15011, si mtls est activé) àistiod-<smcp_name>.<control_plane_namespace>.svc:15012
. -
The health status port is no longer configurable and is hard-coded to 15021. * If you were defining a custom status port, for example,
status.sidecar.istio.io/port
, you must remove the override before moving the workload to a v2.0 Service Mesh control plane. Readiness checks can still be disabled by setting the status port to0
. - Les ressources Kubernetes Secret ne sont plus utilisées pour distribuer les certificats clients pour les sidecars. Les certificats sont désormais distribués par le service SDS d'Istiod. Si vous vous appuyiez sur des secrets montés, ils ne sont plus disponibles pour les charges de travail dans les plans de contrôle Service Mesh v2.0.
1.11.4.5.2.3. Changements de comportement
Certaines fonctionnalités de Red Hat OpenShift Service Mesh 2.0 fonctionnent différemment de celles des versions précédentes.
-
Le port de préparation des passerelles est passé de
15020
à15021
. - La visibilité de l'hôte cible inclut les ressources VirtualService et ServiceEntry. Elle inclut toutes les restrictions appliquées par le biais des ressources Sidecar.
- La fonction TLS mutuelle automatique est activée par défaut. La communication de proxy à proxy est automatiquement configurée pour utiliser mTLS, indépendamment des politiques globales de PeerAuthentication en place.
-
Les connexions sécurisées sont toujours utilisées lorsque les proxies communiquent avec le plan de contrôle du Service Mesh, quel que soit le paramètre
spec.security.controlPlane.mtls
. Le paramètrespec.security.controlPlane.mtls
n'est utilisé que lors de la configuration des connexions pour la télémétrie ou la politique de Mixer.
1.11.4.5.2.4. Détails de la migration pour les ressources non prises en charge
Politique (authentication.istio.io/v1alpha1)
Les ressources de politique doivent être migrées vers de nouveaux types de ressources à utiliser avec les plans de contrôle Service Mesh v2.0, PeerAuthentication et RequestAuthentication. En fonction de la configuration spécifique de votre ressource de stratégie, il se peut que vous deviez configurer plusieurs ressources pour obtenir le même effet.
TLS mutuel
L'application mutuelle de TLS est réalisée à l'aide de la ressource security.istio.io/v1beta1
PeerAuthentication. L'ancien champ spec.peers.mtls.mode
correspond directement au champ spec.mtls.mode
de la nouvelle ressource. Les critères de sélection sont passés de la spécification d'un nom de service dans spec.targets[x].name
à un sélecteur d'étiquettes dans spec.selector.matchLabels
. Dans PeerAuthentication, les étiquettes doivent correspondre au sélecteur sur les services nommés dans la liste des cibles. Tout paramètre spécifique à un port devra être mappé dans spec.portLevelMtls
.
Authentification
Les méthodes d'authentification supplémentaires spécifiées dans spec.origins
doivent être mappées dans une ressource security.istio.io/v1beta1
RequestAuthentication. spec.selector.matchLabels
doit être configuré de la même manière que le champ PeerAuthentication. La configuration spécifique aux mandants JWT des éléments spec.origins.jwt
correspond à des champs similaires dans les éléments spec.rules
.
-
spec.origins[x].jwt.triggerRules
spécifié dans la politique doit être mappé dans une ou plusieurs ressourcessecurity.istio.io/v1beta1
AuthorizationPolicy. Toutspec.selector.labels
doit être configuré de manière similaire au même champ sur RequestAuthentication. -
spec.origins[x].jwt.triggerRules.excludedPaths
doit être mappée dans une AuthorizationPolicy dont le spec.action est défini sur ALLOW, avecspec.rules[x].to.operation.path
entrées correspondant aux chemins exclus. -
spec.origins[x].jwt.triggerRules.includedPaths
doit être mappée dans une AuthorizationPolicy distincte dontspec.action
est défini surALLOW
, avec des entréesspec.rules[x].to.operation.path
correspondant aux chemins inclus, et des entréesspec.rules.[x].from.source.requestPrincipals
qui s'alignent surspecified spec.origins[x].jwt.issuer
dans la ressource Policy.
ServiceMeshPolicy (maistra.io/v1)
ServiceMeshPolicy a été configuré automatiquement pour le plan de contrôle Service Mesh via le paramètre spec.istio.global.mtls.enabled
dans la ressource v1 ou spec.security.dataPlane.mtls
dans la ressource v2. Pour les plans de contrôle v2, une ressource PeerAuthentication fonctionnellement équivalente est créée lors de l'installation. Cette fonctionnalité est obsolète dans Red Hat OpenShift Service Mesh version 2.0
RbacConfig, ServiceRole, ServiceRoleBinding (rbac.istio.io/v1alpha1)
Ces ressources ont été remplacées par la ressource security.istio.io/v1beta1
AuthorizationPolicy.
Pour imiter le comportement de RbacConfig, il faut écrire une AuthorizationPolicy par défaut dont les paramètres dépendent du spec.mode spécifié dans RbacConfig.
-
Lorsque
spec.mode
est défini surOFF
, aucune ressource n'est requise car la politique par défaut est ALLOW, à moins qu'une AuthorizationPolicy ne s'applique à la demande. -
Lorsque
spec.mode
est réglé sur ON, réglezspec: {}
. Vous devez créer des politiques AuthorizationPolicy pour tous les services du maillage. -
spec.mode
est défini surON_WITH_INCLUSION
, doit créer une AuthorizationPolicy avecspec: {}
dans chaque espace de noms inclus. L'inclusion de services individuels n'est pas prise en charge par AuthorizationPolicy. Toutefois, dès qu'une AuthorizationPolicy s'appliquant aux charges de travail du service est créée, toutes les autres demandes qui ne sont pas explicitement autorisées sont rejetées. -
Lorsque
spec.mode
est défini surON_WITH_EXCLUSION
, il n'est pas pris en charge par AuthorizationPolicy. Une politique DENY globale peut être créée, mais une AuthorizationPolicy doit être créée pour chaque charge de travail dans le maillage car il n'existe pas de politique allow-all pouvant être appliquée à un espace de noms ou à une charge de travail.
AuthorizationPolicy comprend la configuration à la fois du sélecteur auquel la configuration s'applique, qui est similaire à la fonction ServiceRoleBinding, et des règles qui doivent être appliquées, qui sont similaires à la fonction ServiceRole.
ServiceMeshRbacConfig (maistra.io/v1)
Cette ressource est remplacée par une ressource security.istio.io/v1beta1
AuthorizationPolicy avec un spec.selector vide dans l'espace de noms du plan de contrôle du Service Mesh. Cette politique sera la politique d'autorisation par défaut appliquée à toutes les charges de travail dans le maillage. Pour plus de détails sur la migration, voir RbacConfig ci-dessus.
1.11.4.5.2.5. Plugins de mixage
Les composants Mixer sont désactivés par défaut dans la version 2.0. Si votre charge de travail repose sur des plugins Mixer, vous devez configurer votre version 2.0 ServiceMeshControlPlane
pour inclure les composants Mixer.
Pour activer les composants de la politique Mixer, ajoutez l'extrait suivant à votre site ServiceMeshControlPlane
.
spec: policy: type: Mixer
Pour activer les composants de télémétrie de Mixer, ajoutez l'extrait suivant à votre site ServiceMeshControlPlane
.
spec: telemetry: type: Mixer
Les anciens plugins de mélangeur peuvent également être migrés vers WASM et intégrés à l'aide de la nouvelle ressource personnalisée ServiceMeshExtension (maistra.io/v1alpha1).
Les filtres WASM intégrés inclus dans la distribution Istio en amont ne sont pas disponibles dans Red Hat OpenShift Service Mesh 2.0.
1.11.4.5.2.6. Changements mutuels TLS
Lors de l'utilisation de mTLS avec des stratégies PeerAuthentication spécifiques à la charge de travail, une DestinationRule correspondante est nécessaire pour autoriser le trafic si la stratégie de la charge de travail diffère de la stratégie globale/de l'espace de noms.
La fonction Auto mTLS est activée par défaut, mais peut être désactivée en attribuant la valeur false à spec.security.dataPlane.automtls
dans la ressource ServiceMeshControlPlane
. Lors de la désactivation de mTLS auto, les règles de destination peuvent être nécessaires pour assurer une communication correcte entre les services. Par exemple, le fait de définir PeerAuthentication sur STRICT
pour un espace de noms peut empêcher les services d'autres espaces de noms d'y accéder, à moins qu'une règle de destination ne configure le mode TLS pour les services de l'espace de noms.
Pour plus d'informations sur mTLS, voir Activation de la sécurité mutuelle de la couche transport (mTLS)
1.11.4.5.2.6.1. Autres exemples de mTLS
Pour désactiver le service mTLS For productpage dans l'exemple d'application info, votre ressource Policy a été configurée de la manière suivante pour Red Hat OpenShift Service Mesh v1.1.
Exemple de ressource politique
apiVersion: authentication.istio.io/v1alpha1 kind: Policy metadata: name: productpage-mTLS-disable namespace: <namespace> spec: targets: - name: productpage
Pour désactiver le service mTLS For productpage dans l'application d'exemple info, utilisez l'exemple suivant pour configurer votre ressource PeerAuthentication pour Red Hat OpenShift Service Mesh v2.0.
Exemple de ressource PeerAuthentication
apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication metadata: name: productpage-mTLS-disable namespace: <namespace> spec: mtls: mode: DISABLE selector: matchLabels: # this should match the selector for the "productpage" service app: productpage
Pour activer mTLS avec authentification JWT pour le service productpage
dans l'exemple d'application info, votre ressource Policy a été configurée de la manière suivante pour Red Hat OpenShift Service Mesh v1.1.
Exemple de ressource politique
apiVersion: authentication.istio.io/v1alpha1 kind: Policy metadata: name: productpage-mTLS-with-JWT namespace: <namespace> spec: targets: - name: productpage ports: - number: 9000 peers: - mtls: origins: - jwt: issuer: "https://securetoken.google.com" audiences: - "productpage" jwksUri: "https://www.googleapis.com/oauth2/v1/certs" jwtHeaders: - "x-goog-iap-jwt-assertion" triggerRules: - excludedPaths: - exact: /health_check principalBinding: USE_ORIGIN
Pour activer l'authentification mTLS With JWT pour le service productpage dans l'application d'exemple info, utilisez l'exemple suivant pour configurer votre ressource PeerAuthentication pour Red Hat OpenShift Service Mesh v2.0.
Exemple de ressource PeerAuthentication
#require mtls for productpage:9000 apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication metadata: name: productpage-mTLS-with-JWT namespace: <namespace> spec: selector: matchLabels: # this should match the selector for the "productpage" service app: productpage portLevelMtls: 9000: mode: STRICT --- #JWT authentication for productpage apiVersion: security.istio.io/v1beta1 kind: RequestAuthentication metadata: name: productpage-mTLS-with-JWT namespace: <namespace> spec: selector: matchLabels: # this should match the selector for the "productpage" service app: productpage jwtRules: - issuer: "https://securetoken.google.com" audiences: - "productpage" jwksUri: "https://www.googleapis.com/oauth2/v1/certs" fromHeaders: - name: "x-goog-iap-jwt-assertion" --- #Require JWT token to access product page service from #any client to all paths except /health_check apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: productpage-mTLS-with-JWT namespace: <namespace> spec: action: ALLOW selector: matchLabels: # this should match the selector for the "productpage" service app: productpage rules: - to: # require JWT token to access all other paths - operation: notPaths: - /health_check from: - source: # if using principalBinding: USE_PEER in the Policy, # then use principals, e.g. # principals: # - “*” requestPrincipals: - “*” - to: # no JWT token required to access health_check - operation: paths: - /health_check
1.11.4.5.3. Recettes de configuration
Ces recettes de configuration permettent de configurer les éléments suivants.
1.11.4.5.3.1. TLS mutuel dans un plan de données
TLS mutuel pour la communication du plan de données est configuré via spec.security.dataPlane.mtls
dans la ressource ServiceMeshControlPlane
, qui est false
par défaut.
1.11.4.5.3.2. Clé de signature personnalisée
Istiod gère les certificats clients et les clés privées utilisés par les proxys de services. Par défaut, Istiod utilise un certificat auto-signé pour la signature, mais vous pouvez configurer un certificat et une clé privée personnalisés. Pour plus d'informations sur la configuration des clés de signature, voir Ajout d'une clé et d'un certificat d'autorité de certification externe
1.11.4.5.3.3. Traçage
Le traçage est configuré à l'adresse spec.tracing
. Actuellement, le seul type de traceur pris en charge est Jaeger
. L'échantillonnage est un nombre entier échelonné représentant des incréments de 0,01 %, par exemple, 1 est 0,01 et 10000 est 100 %. La mise en œuvre du traçage et le taux d'échantillonnage peuvent être spécifiés :
spec: tracing: sampling: 100 # 1% type: Jaeger
Jaeger est configuré dans la section addons
de la ressource ServiceMeshControlPlane
.
spec: addons: jaeger: name: jaeger install: storage: type: Memory # or Elasticsearch for production mode memory: maxTraces: 100000 elasticsearch: # the following values only apply if storage:type:=Elasticsearch storage: # specific storageclass configuration for the Jaeger Elasticsearch (optional) size: "100G" storageClassName: "storageclass" nodeCount: 3 redundancyPolicy: SingleRedundancy runtime: components: tracing.jaeger: {} # general Jaeger specific runtime configuration (optional) tracing.jaeger.elasticsearch: #runtime configuration for Jaeger Elasticsearch deployment (optional) container: resources: requests: memory: "1Gi" cpu: "500m" limits: memory: "1Gi"
L'installation de Jaeger peut être personnalisée à l'aide du champ install
. La configuration des conteneurs, comme les limites des ressources, est configurée dans les champs liés à spec.runtime.components.jaeger
. Si une ressource Jaeger correspondant à la valeur de spec.addons.jaeger.name
existe, le plan de contrôle Service Mesh sera configuré pour utiliser l'installation existante. Utilisez une ressource Jaeger existante pour personnaliser entièrement votre installation Jaeger.
1.11.4.5.3.4. Visualisation
Kiali et Grafana sont configurés dans la section addons
de la ressource ServiceMeshControlPlane
.
spec: addons: grafana: enabled: true install: {} # customize install kiali: enabled: true name: kiali install: {} # customize install
Les installations Grafana et Kiali peuvent être personnalisées via leurs champs install
respectifs. La personnalisation des conteneurs, comme les limites de ressources, est configurée dans spec.runtime.components.kiali
et spec.runtime.components.grafana
. Si une ressource Kiali existante correspondant à la valeur du nom existe, le plan de contrôle Service Mesh configure la ressource Kiali pour l'utiliser avec le plan de contrôle. Certains champs de la ressource Kiali sont remplacés, comme la liste accessible_namespaces
, ainsi que les points de terminaison pour Grafana, Prometheus et le traçage. Utilisez une ressource existante pour personnaliser entièrement votre installation Kiali.
1.11.4.5.3.5. Utilisation des ressources et programmation
Les ressources sont configurées sous spec.runtime.<component>
. Les noms de composants suivants sont pris en charge.
Composant | Description | Versions prises en charge |
---|---|---|
sécurité | Conteneur Citadel | v1.0/1.1 |
cuisine | Conteneur de cuisine | v1.0/1.1 |
pilote | Conteneur pilote/instiod | v1.0/1.1/2.0 |
mélangeur | conteneurs istio-télémétrie et istio-politique | v1.0/1.1 |
| conteneur de la politique de l'istio | v2.0 |
| conteneur istio-télémétrique | v2.0 |
| conteneur oauth-proxy utilisé avec divers addons | v1.0/1.1/2.0 |
| sidecar injector webhook container | v1.0/1.1 |
| le conteneur général de Jaeger - tous les paramètres peuvent ne pas être appliqués. La personnalisation complète de l'installation de Jaeger est possible en spécifiant une ressource Jaeger existante dans la configuration du plan de contrôle de Service Mesh. | v1.0/1.1/2.0 |
| paramètres spécifiques à l'agent Jaeger | v1.0/1.1/2.0 |
| paramètres spécifiques à Jaeger allInOne | v1.0/1.1/2.0 |
| paramètres spécifiques au collecteur Jaeger | v1.0/1.1/2.0 |
| paramètres spécifiques au déploiement de Jaeger elasticsearch | v1.0/1.1/2.0 |
| paramètres spécifiques à la requête Jaeger | v1.0/1.1/2.0 |
prometheus | conteneur prométhée | v1.0/1.1/2.0 |
kiali | Conteneur Kiali - la personnalisation complète de l'installation Kiali est possible en spécifiant une ressource Kiali existante dans la configuration du plan de contrôle Service Mesh. | v1.0/1.1/2.0 |
grafana | Conteneur Grafana | v1.0/1.1/2.0 |
3scale | conteneur 3scale | v1.0/1.1/2.0 |
| Conteneur cacheur d'extensions WASM | v2.0 - aperçu technique |
Certains composants prennent en charge la limitation des ressources et la planification. Pour plus d'informations, voir Performances et évolutivité.
1.11.4.5.4. Prochaines étapes de la migration de vos applications et charges de travail
Déplacez la charge de travail de l'application vers le nouveau maillage et supprimez les anciennes instances pour terminer la mise à niveau.
1.11.5. Mise à niveau du plan de données
Votre plan de données fonctionnera toujours après la mise à niveau du plan de contrôle. Mais pour appliquer les mises à jour du proxy Envoy et toute modification de la configuration du proxy, vous devez redémarrer vos pods d'application et vos charges de travail.
1.11.5.1. Mise à jour des applications et des charges de travail
Pour terminer la migration, redémarrez tous les pods d'application dans le maillage pour mettre à niveau les proxies Envoy sidecar et leur configuration.
Pour effectuer une mise à jour continue d'un déploiement, utilisez la commande suivante :
$ oc rollout restart <deployment>
Vous devez effectuer une mise à jour continue pour toutes les applications qui composent le maillage.