Exemple : déploiement d'un connecteur pour CI/CD
Pour déployer des personnalisations de connecteur à utiliser dans un pipeline Continuous Integration/Continuous Delivery (CI/CD), regroupez vos modifications à l'aide d'une structure de données normalisée.
{
"name": "auth.xfields",
"description": "This is the connector used for the custom fields to ingest",
"pipes": [
{
"name": "_Template-DatabasePagingETL",
"properties": [
{
"name": "Database Driver Location(s)",
"value": "${AUTH_JDBC_DRIVER_LOCATION}",
"scope": {
"name": "Database Connection Pool",
"type": "CONTROLLER_SERVICE"
}
},
{
"name": "Database Driver Class Name ",
"value": "${AUTH_JDBC_DRIVER_CLASSNAME}",
"scope": {
"name": "Database Connection Pool",
"type": "CONTROLLER_SERVICE"
}
},
{
"name": "Database Connection URL",
"value": "${AUTH_JDBC_URL}",
"scope": {
"name": "Database Connection Pool",
"type": "CONTROLLER_SERVICE"
}
},
{
"name": "Database User",
"value": "${AUTH_JDBC_USER_NAME}",
"scope": {
"name": "Database Connection Pool",
"type": "CONTROLLER_SERVICE"
}
},
{
"name": "Password",
"value": "${AUTH_JDBC_USER_PASSWORD}",
"scope": {
"name": "Database Connection Pool",
"type": "CONTROLLER_SERVICE"
}
}
]
},
{
"name": "Terminal",
"label": "Terminal"
}
]
}Nouveaux fichiers
Une fois le canal créé, effectuez deux mises à jour des propriétés dans le pipeline. Cette opération est effectuée avec les fichiers pipes/updates/1_auth.xfields et pipes/updates/2_auth.xfields.
- 1_auth.xfields :
{ "name": "auth.xfields", "pipes": [ { "name": "SCROLL SQL", "properties": [ { "name": "properties.ingest.database.sql", "value": " SELECT field1, field2, catgroup_id FROM catgroup ${paging.prefix} ${param.offset} ${paging.link} ${param.pageSize} ${paging.suffix} ", "scope": { "name": "SCROLL SQL.Define custom SQL", "type": "PROCESSOR" } } ] } ] } - 2_auth.xfields :
{ "name": "auth.xfields", "pipes": [ { "name": "Map Index Fields From Database", "properties": [ { "name": "FIELD1", "value": "custom.x_field1.raw, custom.x_field1.normalized", "scope": { "name": "SCROLL SQL.Transform Document - Map Index Fields From Database", "type": "PROCESSOR" } "name": "FIELD2", "value": "custom.x_field2.raw, custom.x_field2.normalized", "scope": { "name": "SCROLL SQL.Transform Document - Map Index Fields From Database", "type": "PROCESSOR" } } ] } ] }
Vos nouveaux fichiers sont conservés dans un référentiel de fichiers approprié, tel que Git. Dans ce cas, la structure est une hiérarchie simple sous les canaux du répertoire racine.
pipes
│
├───new
│ auth.xfields.json
│
└───updates
1_auth.xfields
2_auth.xfields
Pour plus d'informations sur ces fichiers, voir Configuration du connecteur/pipeline dans NiFi.
Génération
Lors de l'étape de génération, extrayez toutes les ressources requises de votre référentiel de fichiers et regroupez les fichiers dans une archive, à l'aide de l'approche décrite dans Exemple de structure de fichier .sra pour l'automatisation CI/CD. La structure du fichier .sra peut refléter directement celle de votre référentiel, ou non. Là où l'objectif de la structure de référentiel était d'organiser vos fichiers pour le développement de logiciels, celui de la structure de l'archive est de rendre les ressources requises aussi portables que possible. Dans cet exemple, nous incluons un répertoire META-INF contenant des informations supplémentaires sur le contenu de l'archive.
Ingest-pipeline.sra
├───META-INF
├───pipes
├───new
│ auth.xfield.json
└───updates
1_auth.xfield.json
2_auth.xfield.json
Après avoir rassemblé les fichiers dans le fichier .sra, copiez le fichier dans le répertoire dans lequel il sera inclus dans le déploiement. A partir de cet emplacement, vous allez générer un conteneur, déployer les ressources, puis pousser le conteneur personnalisé vers un registre de conteneurs.
Générer une image personnalisée
Vous êtes maintenant prêt à générer une image Ingest avec votre code personnalisé.
- Copiez le fichier Ingest-pipeline.sra dans un répertoire de travail de votre environnement de production.
- éxtrayez le fichier Ingest-pipeline.sra.
- Copiez les fichiers sous /new
profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/commerce - Copiez les fichiers sous /updates
/profile/apps/search-ingest.ear/search-ingest.war/WEB-INF/classes/deployments/customization - Générer votre conteneur personnalisé.
- Une fois le conteneur généré, poussez-le vers le registre et déployez-le.