Le plug-in frontend-gray permet les déploiements canaris pour les utilisateurs frontaux. Il prend en charge les tests A/B Test et garantit la stabilité des versions grâce à des stratégies de déploiement progressif (grayscale), de monitoring et de rollback.
Attributs d'exécution
Phase d'exécution du plug-in : Authentication phase. Priorité d'exécution du plug-in : 1000.
Champs
|
Nom |
Type de données |
Exigences |
Valeur par défaut |
Description |
|
|
string |
Facultatif |
- |
L'identifiant unique d'un utilisateur, extrait d'un cookie ou d'un en-tête de requête (par exemple, |
|
|
boolean |
Facultatif |
|
Indique s'il faut utiliser un fichier manifeste comme point d'entrée de l'application. Définissez cette valeur sur |
|
|
string |
Facultatif |
- |
L'identifiant utilisateur unique issu de |
|
|
string |
Facultatif |
- |
Les informations d'identité utilisateur peuvent être au format JSON. Par exemple, |
|
|
int |
Facultatif |
|
La durée maximale de stockage du cookie défini par la passerelle, en secondes. La valeur par défaut est d'un an. |
|
|
string |
Facultatif |
- |
Le domaine du cookie. Utilisez ce paramètre pour partager les cookies entre sous-domaines. Par exemple, « .example.com ». |
|
|
array of strings |
Facultatif |
- |
Chemins toujours traités par le plug-in. Les motifs |
|
|
array of strings |
Facultatif |
- |
Chemins à exclure du traitement par ce plug-in. Les motifs |
|
|
map of string to string |
Facultatif |
- |
Exclut les requêtes du traitement en fonction des valeurs des en-têtes. |
|
|
array of object |
Obligatoire |
- |
Règles de déploiement canari qui associent les utilisateurs aux versions de déploiement. |
|
|
object |
Facultatif |
- |
La configuration de réécriture, généralement utilisée pour les interfaces Object Storage Service (OSS) et CDN. |
|
|
object |
Facultatif |
- |
La configuration de la règle de référence. |
|
|
array of object |
Facultatif |
- |
Règles d'activation et versions cibles pour les déploiements canaris. |
|
|
string |
Facultatif |
|
Le tag pour la version de déploiement canari backend. S'il est configuré, un cookie est défini avec la valeur |
|
|
string |
Facultatif |
|
Lorsque le déploiement canari basé sur un pourcentage est activé, la passerelle génère un identifiant unique et le stocke dans un |
|
|
object |
Facultatif |
- |
Injecte des informations globales dans le code HTML de la page d'accueil. Par exemple, |
Le tableau suivant décrit les champs contenus dans rules.
|
Nom |
Type de données |
Exigences |
Valeur par défaut |
Description |
|
|
string |
Obligatoire |
- |
Un nom unique pour la règle. Ce champ est associé à |
|
|
array of string |
Facultatif |
- |
Une liste d'autorisation d'ID utilisateur pour cette règle. |
|
|
string |
Facultatif |
- |
La clé de tag utilisée pour catégoriser les utilisateurs, extraite des cookies. |
|
|
array of string |
Facultatif |
- |
La valeur de tag utilisée pour catégoriser les utilisateurs, extraite des cookies. |
Le tableau suivant décrit les champs contenus dans rewrite.
indexRouting (réécriture de la page d'accueil) et fileRouting (réécriture de fichier) utilisent tous deux la mise en correspondance par préfixe. Par exemple, /app1: /mfe/app1/{version}/index.html signifie que les requêtes avec le préfixe /app1 sont acheminées vers /mfe/app1/{version}/index.html. {version} est un espace réservé remplacé dynamiquement par baseDeployment.version ou grayDeployments[].version lors de l'exécution.
{version} est un mot réservé remplacé dynamiquement par la version frontale issue de baseDeployment.version ou grayDeployments[].version.
|
Nom |
Type de données |
Exigences |
Valeur par défaut |
Description |
|
|
string |
Facultatif |
- |
L'adresse hôte. Pour OSS, utilisez un endpoint VPC. |
|
|
map of string to string |
Facultatif |
- |
Définit la règle de routage pour réécrire la page d'accueil. Chaque clé correspond à un chemin d'accès de la page d'accueil et la valeur au fichier cible de la redirection. Par exemple, la clé |
|
|
map of string to string |
Facultatif |
- |
Définit la règle de routage pour réécrire les fichiers de ressources. Chaque clé correspond à un chemin d'accès d'une ressource et la valeur au fichier cible de la redirection. Par exemple, la clé |
Le tableau suivant décrit les champs contenus dans baseDeployment.
|
Nom |
Type de données |
Exigences |
Valeur par défaut |
Description |
|
|
string |
Obligatoire |
- |
La version de référence. |
|
|
string |
Facultatif |
- |
La version de déploiement canari backend, qui est écrite dans un cookie avec la |
|
|
string |
Facultatif |
- |
Similaire à |
Le tableau suivant décrit les champs contenus dans grayDeployments.
|
Nom |
Type de données |
Exigences |
Valeur par défaut |
Description |
|
|
string |
Obligatoire |
- |
Le numéro de version du déploiement canari. Cette version est utilisée lorsque la règle de déploiement canari correspond. Pour les déploiements hors CDN, l'en-tête |
|
|
string |
Facultatif |
- |
Similaire à |
|
|
string |
Facultatif |
- |
La version de déploiement canari backend. L'en-tête |
|
|
string |
Obligatoire |
- |
Le nom de la règle. Ce champ est associé à |
|
|
boolean |
Facultatif |
- |
Indique s'il faut activer cette règle. |
|
|
int |
Facultatif |
- |
Le pourcentage de trafic acheminé vers la version de déploiement canari. Par exemple, 50. |
Exemples de configuration
Configuration de base (déploiement canari par utilisateur)
grayKey: userid
rules:
- name: inner-user
grayKeyValue:
- '00000001'
- '00000005'
- name: beta-user
grayKeyValue:
- '00000002'
- '00000003'
grayTagKey: level
grayTagValue:
- level3
- level5
baseDeployment:
version: base
grayDeployments:
- name: beta-user
version: gray
enabled: true
L'identifiant utilisateur unique dans le cookie est userid. La règle de déploiement canari actuelle est nommée beta-user.
Si les conditions suivantes sont remplies, la version version: gray est utilisée. Sinon, la version version: base est utilisée.
Le
useriddans le cookie est00000002ou00000003.Le
leveldans le cookie estlevel3oulevel5.
Déploiement progressif par pourcentage
grayKey: userid
rules:
- name: inner-user
grayKeyValue:
- '00000001'
- '00000005'
baseDeployment:
version: base
grayDeployments:
- name: inner-user
version: gray
enabled: true
weight: 80
Le poids total de toutes les règles de déploiement canari est de 100 %. Dans cet exemple, la version de déploiement canari a un poids de 80 % et la version de référence a un poids de 20 %.
Stockage des informations utilisateur au format JSON
grayKey: appInfo
graySubKey: userId
rules:
- name: inner-user
grayKeyValue:
- '00000001'
- '00000005'
- name: beta-user
grayKeyValue:
- '00000002'
- '00000003'
grayTagKey: level
grayTagValue:
- level3
- level5
baseDeployment:
version: base
grayDeployments:
- name: beta-user
version: gray
enabled: true
Le cookie contient des données appInfo au format JSON. Le champ userId est l'identifiant unique. La règle de déploiement canari actuelle est nommée beta-user. Si les conditions suivantes sont remplies, la version version: gray est utilisée. Sinon, la version version: base est utilisée.
Le
useriddans le cookie est00000002ou00000003.Le
leveldans le cookie estlevel3oulevel5.
Informations utilisateur dans LocalStorage
Le plug-in de passerelle nécessite un identifiant utilisateur unique. Étant donné que HTTP ne peut transférer ces informations que dans un en-tête, si les informations utilisateur sont stockées dans LocalStorage, injectez un script dans la page d'accueil pour les copier dans un cookie.
(function() {
var grayKey = '@@X_GRAY_KEY';
var cookies = document.cookie.split('; ').filter(function(row) {
return row.indexOf(grayKey + '=') === 0;
});
try {
if (typeof localStorage !== 'undefined' && localStorage !== null) {
var storageValue = localStorage.getItem(grayKey);
var cookieValue = cookies.length > 0 ? decodeURIComponent(cookies[0].split('=')[1]) : null;
if (storageValue && storageValue.indexOf('=') < 0 && cookieValue !== storageValue) {
document.cookie = grayKey + '=' + encodeURIComponent(storageValue) + '; path=/;';
window.location.reload();
}
}
} catch (error) {
//
}
})();
Configuration de réécriture
Cette configuration est généralement utilisée dans les scénarios de déploiement CDN. {version} est remplacé dynamiquement par la version réelle lors de l'exécution.
grayKey: userid
rules:
- name: inner-user
grayKeyValue:
- '00000001'
- '00000005'
- name: beta-user
grayKeyValue:
- '00000002'
- '00000003'
grayTagKey: level
grayTagValue:
- level3
- level5
rewrite:
host: frontend-gray.oss-cn-shanghai-internal.aliyuncs.com
notFoundUri: /mfe/app1/dev/404.html
indexRouting:
/app1: '/mfe/app1/{version}/index.html'
/: '/mfe/app1/{version}/index.html',
fileRouting:
/: '/mfe/app1/{version}'
/app1/: '/mfe/app1/{version}'
baseDeployment:
version: base
grayDeployments:
- name: beta-user
version: gray
enabled: true
indexRouting : réécriture de la page d'accueil
Les requêtes vers /app1, /app123, /app1/index.html, /app1/xxx et /xxxx sont toutes acheminées vers /mfe/app1/{version}/index.html.
fileRouting : configuration du routage des fichiers
Les mappages de fichiers suivants sont actifs.
/js/a.js=>/mfe/app1/v1.0.0/js/a.js/js/template/a.js=>/mfe/app1/v1.0.0/js/template/a.js/app1/js/a.js=>/mfe/app1/v1.0.0/js/a.js/app1/js/template/a.js=>/mfe/app1/v1.0.0/js/template/a.js
Injection de code dans la page d'accueil HTML
grayKey: userid
rules:
- name: inner-user
grayKeyValue:
- '00000001'
- '00000005'
baseDeployment:
version: base
grayDeployments:
- name: beta-user
version: gray
enabled: true
injection:
head:
- <script>console.log('Header')</script>
body:
first:
- <script>console.log('hello world before')</script>
- <script>console.log('hello world before1')</script>
last:
- <script>console.log('hello world after')</script>
- <script>console.log('hello world after2')</script>
Le champ injection injecte du code dans la page d'accueil HTML : dans la balise head, ou aux positions first et last au sein de la balise body.