Démarrer
Aperçu
Cette section présente comment exécuter rapidement le conteneur WorkflowGen avec une architecture minimale sur Kubernetes.
Kubernetes avec AKS
Cet exemple est conçu pour Azure Kubernetes Service (AKS). Pour commencer avec AKS, consultez l'article Microsoft Créer un conteneur Windows Server sur un cluster Azure Kubernetes Service (AKS) à l’aide d’Azure CLI.
Aperçu de l'architecture
À la fin de cette section, vous aurez cette configuration de cluster :


Chaque conteneur du cluster aura accès à la configuration et aux secrets à l'intérieur de leurs espaces de noms. Plusieurs services Azure seront déployés par Azure Kubernetes Service. Cela ne nécessite aucune étape manuelle autre que l'interaction avec Kubernetes lui-même. L'équilibreur de charge que le service créera répartira les demandes entre les répliques de serveur WorkflowGen.
Prérequis
Vous devez avoir un cluster Kubernetes fonctionnel avec des nœuds Windows Server 2019. Voir la vue des ressources Azure ci-dessus pour une configuration AKS de base. Consultez l'article Microsoft Déployer un conteneur Windows Server sur un cluster Azure Kubernetes Service (AKS) à l’aide d’Azure CLI pour commencer à créer un cluster AKS avec le support des nœuds Windows.
Vous devez avoir installé l'outil de ligne de commande kubectl et il doit être connecté au cluster. Consultez la section Se connecter au cluster de l'article Microsoft Déployer un conteneur Windows Server sur un cluster Azure Kubernetes Service (AKS) à l’aide d’Azure CLI pour obtenir des instructions sur la connexion de kubectl à AKS.
Notez également que vous ne devez pas créer d'autres ressources dans Azure en dehors du cluster et ses nœuds. Toutes les ressources requises pour les conteneurs seront créées automatiquement par Kubernetes. AKS est une plateforme entièrement gérée.
Ajoutez un PersistentVolumeClaim pour le stockage partagé
Maintenant, vous devez ajouter une revendication qui représente le volume de données WorkflowGen qui sera utilisé par votre déploiement. Pour ce faire, appliquez le YAML suivant à votre cluster :
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wfgdata-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: azurefile
  resources:
    requests:
      storage: 50GiEnsuite, appliquez-le au cluster à l'aide de la commande suivante :
kubectl apply -c .\wfgdata-pvc.ymlAjoutez votre fichier de licence WorkflowGen au cluster
Kubernetes vous permet de gérer les secrets et les configurations sous forme de fichiers à l'intérieur du cluster et de les injecter dans des pods. Dans ce cas, vous ajouterez votre fichier de licence en tant que secret et l'injecterez plus tard au module WorkflowGen. Pour ajouter votre licence au cluster, exécutez la commande suivante :
kubectl create secret generic wfgen-license-secret --from-file C:\Path\To\WorkflowGen.licAjoutez des ConfigMap pour les services
Comme mentionné précédemment, il existe un mécanisme dans Kubernetes qui vous permet de gérer les configurations de vos conteneurs. Ici, vous allez en créer un pour WorkflowGen et un autre pour la base de données :
apiVersion: v1
kind: ConfigMap
metadata:
  name: wfgen-config
data:
  WFGEN_APP_SETTING_ApplicationUrl: http://10.0.1.1/wfgen
  WFGEN_DATABASE_CONNECTION_STRING_FILE: C:\secrets\WFGEN_DATABASE_CONNECTION_STRING
  WFGEN_APP_SETTING_ApplicationSerialNumber_FILE: C:\secrets\ApplicationSerialNumber
  WFGEN_APP_SETTING_ApplicationSecurityPasswordSymmetricEncryptionKey_FILE: C:\secrets\ApplicationSecurityPasswordSymmetricEncryptionKey
  WFGEN_MACHINE_KEY_DECRYPTION_KEY_FILE: C:\secrets\WFGEN_MACHINE_KEY_DECRYPTION_KEY
  WFGEN_MACHINE_KEY_VALIDATION_KEY_FILE: C:\secrets\WFGEN_MACHINE_KEY_VALIDATION_KEY
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: database-config
data:
  ACCEPT_EULA: 'Y'
  SA_PASSWORD_FILE: /mnt/secrets/SA_PASSWORD
  WFGEN_DATABASE_USER_USERNAME_FILE: /mnt/secrets/WFGEN_DATABASE_USER_USERNAME
  WFGEN_DATABASE_USER_PASSWORD_FILE: /mnt/secrets/WFGEN_DATABASE_USER_PASSWORD
  WFGEN_ADMIN_PASSWORD_FILE: /mnt/secrets/WFGEN_ADMIN_PASSWORDN'oubliez pas d'appliquer cette configuration :
kubectl apply -f .\config.ymlAjoutez des secrets pour les services
Kubernetes gère également des secrets pour vous. Ils sont stockés en toute sécurité et ne sont remis aux conteneurs que sous forme de fichiers.
Vous avez besoin d'une clé de cryptage pour mettre comme secret :
[guid]::NewGuid().ToString('N')
# fda7a6a81db2428b8885bd1210522755Avant de créer les secrets, vous devez les encoder en base64 :
using namespace System.Text
function ConvertTo-Base64String {
    [CmdletBinding()]
    [OutputType([string])]
    param (
        [Parameter(Mandatory=$true,ValueFromPipeline=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Value
    )
    process {
        return [Convert]::ToBase64String([Encoding]::UTF8.GetBytes($Value))
    }
}
# Database containers
"strong(!)Pass" | ConvertTo-Base64String # c3Ryb25nKCEpUGFzcw==
"WFGEN_USER" | ConvertTo-Base64String # V0ZHRU5fVVNFUg==
# WorkflowGen containers
"<YOUR_WFG_LIC_KEY>" | ConvertTo-Base64String # PFlPVVJfV0ZHX0xJQ19LRVk+
"<YOU_NEW_GUID>" | ConvertTo-Base64String # PFlPVV9ORVdfR1VJRD4=
"Server=database-0.database.default.svc.cluster.local,1433;Database=WFGEN;User ID=WFGEN_USER;Password=strong(!)Pass;" `
    | ConvertTo-Base64String # V0ZHRU5fREFUQUJBU0VfQ09OTkVDVElPTl9TVFJJTkc9RGF0YSBTb3VyY2U9ZGF0YWJhc2UsMTQzMztOZXR3b3JrIExpYnJhcnk9REJNU1NPQ047SW5pdGlhbCBDYXRhbG9nPVdGR0VOO1VzZXIgSUQ9V0ZHRU5fVVNFUjtQYXNzd29yZD1zdHJvbmcoISlQYXNzOw==
"39B3AE9CCCF94AA47D795EC84F7CCB7928F5D59BE2EB2BBA4FE2AC0B3C8D0C85" | ConvertTo-Base64String # MzlCM0FFOUNDQ0Y5NEFBNDdENzk1RUM4NEY3Q0NCNzkyOEY1RDU5QkUyRUIyQkJBNEZFMkFDMEIzQzhEMEM4NQ==
"82F6247A5DBF8666FB60B8EFE6483360436F0EC426CC0351A9569C607B46C1FAD6497406DD8B0B519DD83CAA6764904C89999D742638ECE756E7C0B8799B45E9" `
    | ConvertTo-Base64String # ODJGNjI0N0E1REJGODY2NkZCNjBCOEVGRTY0ODMzNjA0MzZGMEVDNDI2Q0MwMzUxQTk1NjlDNjA3QjQ2QzFGQUQ2NDk3NDA2REQ4QjBCNTE5REQ4M0NBQTY3NjQ5MDRDODk5OTlENzQyNjM4RUNFNzU2RTdDMEI4Nzk5QjQ1RTk=Ces valeurs encodées iront dans la déclaration des secrets. Pour créer les secrets requis pour les services, appliquez le code YAML suivant :
apiVersion: v1
kind: Secret
metadata:
  name: database-sec
type: Opaque
data:
  SA_PASSWORD: c3Ryb25nKCEpUGFzcw==
  WFGEN_DATABASE_USER_PASSWORD: c3Ryb25nKCEpUGFzcw==
  WFGEN_ADMIN_PASSWORD: c3Ryb25nKCEpUGFzcw==
  WFGEN_DATABASE_USER_USERNAME: V0ZHRU5fVVNFUg==
---
apiVersion: v1
kind: Secret
metadata:
  name: wfgen-sec
type: Opaque
data:
  ApplicationSerialNumber: <YOUR_WFG_LIC_KEY_BASE64>
  ApplicationSecurityPasswordSymmetricEncryptionKey: <YOUR_NEW_GUID_BASE64>
  WFGEN_DATABASE_CONNECTION_STRING: V0ZHRU5fREFUQUJBU0VfQ09OTkVDVElPTl9TVFJJTkc9RGF0YSBTb3VyY2U9ZGF0YWJhc2UsMTQzMztOZXR3b3JrIExpYnJhcnk9REJNU1NPQ047SW5pdGlhbCBDYXRhbG9nPVdGR0VOO1VzZXIgSUQ9V0ZHRU5fVVNFUjtQYXNzd29yZD1zdHJvbmcoISlQYXNzOw==
  WFGEN_MACHINE_KEY_DECRYPTION_KEY: MzlCM0FFOUNDQ0Y5NEFBNDdENzk1RUM4NEY3Q0NCNzkyOEY1RDU5QkUyRUIyQkJBNEZFMkFDMEIzQzhEMEM4NQ==
  WFGEN_MACHINE_KEY_VALIDATION_KEY: ODJGNjI0N0E1REJGODY2NkZCNjBCOEVGRTY0ODMzNjA0MzZGMEVDNDI2Q0MwMzUxQTk1NjlDNjA3QjQ2QzFGQUQ2NDk3NDA2REQ4QjBCNTE5REQ4M0NBQTY3NjQ5MDRDODk5OTlENzQyNjM4RUNFNzU2RTdDMEI4Nzk5QjQ1RTk=N'oubliez pas d'appliquer ceci :
kubectl apply -f secrets.ymlDéployez les conteneurs
Vous êtes maintenant prêt à déployer les services. Vous allez créer deux objets Deployment et un objet ReplicaSet. Le déploiement créera des ReplicaSet pour tous les services avec différentes configurations. Ces déploiements peuvent ensuite être configurés pour évoluer automatiquement avec l'utilisation des pods. Le ReplicaSet fournira les services nécessaires au conteneur de base de données afin de fonctionner correctement et d'éviter les pertes de données. N'oubliez pas qu'il ne doit y avoir qu'une seule instance de chaque service Windows WorkflowGen en cours d'exécution à tout moment. Ce modèle de conteneur est appelé Singleton.
Base de données
Cette configuration déploiera la base de données StatefulSet avec un service en mode sans affichage (« headless service »). Cet objet créera également une revendication de volume persistante basée sur le modèle fourni dans la déclaration.
apiVersion: v1
kind: Service
metadata:
  name: database
spec:
  type: ClusterIP
  clusterIP: None
  ports:
    - port: 1433
      targetPort: mssql
      protocol: TCP
      name: mssql
  selector:
    app.kubernetes.io/name: workflowgen
    app.kubernetes.io/component: database
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: database
spec:
  replicas: 1
  serviceName: database
  selector:
    matchLabels:
      app.kubernetes.io/name: workflowgen
      app.kubernetes.io/component: database
  template:
    metadata:
      labels:
        app.kubernetes.io/name: workflowgen
        app.kubernetes.io/component: database
    spec:
      terminationGracePeriodSeconds: 10
      nodeSelector:
        kubernetes.io/os: linux
      containers:
        - name: database
          image: advantys/workflowgen-sql:7.18.3-ubuntu-18.04
          imagePullPolicy: Always
          securityContext:
            runAsUser: 0
            runAsGroup: 0
          resources:
            requests:
              memory: "1Gi"
              cpu: "500m"
            limits:
              memory: "2Gi"
              cpu: "1"
          envFrom:
            - configMapRef:
                name: database-config
          ports:
            - name: mssql
              containerPort: 1433
          livenessProbe:
            initialDelaySeconds: 30
            timeoutSeconds: 5
            exec:
              command:
                - pwsh
                - -NoLogo
                - -NoProfiles
                - /usr/local/bin/healthcheck.ps1
          readinessProbe:
            initialDelaySeconds: 20
            timeoutSeconds: 5
            exec:
              command:
                - pwsh
                - -NoLogo
                - -NoProfiles
                - /usr/local/bin/healthcheck.ps1
          volumeMounts:
            - mountPath: /var/opt/mssql
              name: sqldata
            - mountPath: /mnt/secrets
              readOnly: true
              name: secrets
      volumes:
        - name: secrets
            secret:
              secretName: database-sec
  volumeClaimTemplates:
    - metadata:
        name: sqldata
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: default
        resources:
          requests:
            storage: 100GiAppliquez d'abord la base de données :
kubectl apply -f database.ymlApplications Web WorkflowGen
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wfgen-webapps
spec:
  replicas: 3
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app.kubernetes.io/name: workflowgen
      app.kubernetes.io/component: webapps
  template:
    metadata:
      labels:
        app.kubernetes.io/name: workflowgen
        app.kubernetes.io/component: webapps
    spec:
      nodeSelector:
        kubernetes.io/os: windows
      containers:
        - name: wfgen
          image: advantys/workflowgen:7.18.3-win-ltsc2019
          imagePullPolicy: Always
          resources:
            requests:
              memory: "2Gi"
              cpu: "1"
            limits:
              memory: "2Gi"
              cpu: "1"
          ports:
            - name: http
              containerPort: 80
              protocol: TCP
          envFrom:
            - configMapRef:
                name: wfgen-config
          env:
            - name: WFGEN_START_SERVICE
              value: webapps
          livenessProbe:
            periodSeconds: 30
            timeoutSeconds: 5
            initialDelaySeconds: 60
            exec:
              command:
                - powershell
                - C:\healthcheck.ps1
          livenessProbe:
            timeoutSeconds: 5
            initialDelaySeconds: 60
            exec:
              command:
                - powershell
                - -Command
                - if (Test-Path "C:\iislog\W3SVC\*log") { return 0 } else { return 1 }
          volumeMounts:
            - mountPath: C:\wfgen\data
              name: wfgdata
            - mountPath: C:\wfgen\licenses
              readOnly: true
              name: licenses
            - mountPath: C:\secrets
              readOnly: true
              name: secrets
      volumes:
        - name: wfgdata
          persistentVolumeClaim:
            claimName: wfgdata-pvc
        - name: licenses
          secret:
            secretName: wfgen-license-secret
            items:
              # The following must match the name of the license item in 
              # the license secret, e.g. the name of the license file
              - key: WorkflowGen.lic
                path: WorkflowGen.lic
        - name: secrets
            secret:
              secretName: wfgen-secAppliquez ce contrôleur de réplication :
kubectl apply -f wfgen-webapps.ymlDéploiement des services Windows
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wfgen-winservices
spec:
  replicas: 1 # Singleton pattern
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app.kubernetes.io/name: workflowgen
      app.kubernetes.io/component: winservices
  template:
    metadata:
      labels:
        app.kubernetes.io/name: workflowgen
        app.kubernetes.io/component: winservices
    spec:
      nodeSelector:
        kubernetes.io/os: windows
      containers:
        - name: wfgen-dir-sync
          image: advantys/workflowgen:7.18.3-win-ltsc2019
          resources:
            requests:
              memory: "1Gi"
              cpu: "500m"
            limits:
              memory: "1Gi"
              cpu: "750m"
          envFrom:
            - configMapRef:
                name: wfgen-config
          env:
            - name: WFGEN_START_SERVICE
              value: dir_sync
          livenessProbe:
            periodSeconds: 30
            timeoutSeconds: 5
            initialDelaySeconds: 60
            exec:
              command:
                - powershell
                - C:\healthcheck.ps1
          volumeMounts:
            - mountPath: C:\wfgen\data
              name: wfgdata
            - mountPath: C:\wfgen\licenses
              readOnly: true
              name: licenses
            - mountPath: C:\secrets
              readOnly: true
              name: secrets
        - name: wfgen-engine
          image: advantys/workflowgen:7.18.3-win-ltsc2019
          resources:
            requests:
              memory: "1Gi"
              cpu: "500m"
            limits:
              memory: "1Gi"
              cpu: "750m"
          envFrom:
            - configMapRef:
                name: wfgen-config
          env:
            - name: WFGEN_START_SERVICE
              value: engine
          livenessProbe:
            periodSeconds: 30
            timeoutSeconds: 5
            initialDelaySeconds: 60
            exec:
              command:
                - powershell
                - C:\healthcheck.ps1
          volumeMounts:
            - mountPath: C:\wfgen\data
              name: wfgdata
            - mountPath: C:\wfgen\licenses
              readOnly: true
              name: licenses
            - mountPath: C:\secrets
              readOnly: true
              name: secrets
      volumes:
        - name: wfgdata
          persistentVolumeClaim:
            claimName: wfgdata-pvc
        - name: licenses
          secret:
            secretName: fgen-license-secret
            items:
              # The following must match the name of the license item in 
              # the license secret, e.g. the name of the license file
              - key: WorkflowGen.lic
                path: WorkflowGen.lic
        - name: secrets
            secret:
              secretName: wfgen-secAppliquez les services Windows :
kubectl apply -f wfgen-win-services.ymlAjoutez un équilibreur de charge
Maintenant, vous devez ajouter un équilibreur de charge public pour envoyer des demandes à vos pods. Pour ce faire, exécutez la commande suivante :
kubectl expose deployment wfgen-webapps --type=LoadBalancer --name=wfgen-serviceVous devez maintenant attendre que l'IP soit approvisionné. Exécutez périodiquement la commande suivante jusqu'à obtenir l'adresse IP publique de l'équilibreur de charge :
kubectl get services wfgen-serviceUne fois que la valeur de EXTERNAL-IP est provisionnée, copiez-la et modifiez la configuration de WorkflowGen pour modifier la valeur WFGEN_APP_SETTING_ApplicationUrl :
# wfgen-config.yml
apiVersion: v1
kind: ConfigMap
metadata:
  name: wfgen-config
data:
  WFGEN_APP_SETTING_ApplicationUrl: 'http://<EXTERNAL_IP>/wfgen'
  WFGEN_DATABASE_CONNECTION_STRING_FILE: C:\secrets\WFGEN_DATABASE_CONNECTION_STRING
  WFGEN_APP_SETTING_ApplicationSerialNumber_FILE: C:\secrets\ApplicationSerialNumber
  WFGEN_APP_SETTING_ApplicationSecurityPasswordSymmetricEncryptionKey_FILE: C:\secrets\ApplicationSecurityPasswordSymmetricEncryptionKey
  WFGEN_MACHINE_KEY_DECRYPTION_KEY_FILE: C:\secrets\WFGEN_MACHINE_KEY_DECRYPTION_KEY
  WFGEN_MACHINE_KEY_VALIDATION_KEY_FILE: C:\secrets\WFGEN_MACHINE_KEY_VALIDATION_KEYAppliquez-le :
kubectl apply -f wfgen-config.ymlEnsuite, redémarrez tous les pods du déploiement WorkflowGen pour leur appliquer les modifications. Vous devez également le faire pour les services Windows. Pour ce faire, exécutez les commandes suivantes :
kubctl scale deployment wfgen-webapps --replicas 0 -n wfgen-service
kubctl scale deployment wfgen-winservices --replicas 0 -n wfgen-service
# Wait until the scaling is done and then scale up
kubctl scale deployment wfgen-webapps --replicas 3 -n wfgen-service
kubctl scale deployment wfgen-winservices --replicas 1 -n wfgen-serviceVous devriez maintenant avoir un WorkflowGen fonctionnel avec un équilibreur de charge et une base de données.
Kubernetes avec AKS utilisant Helm
Helm est un outil de type gestionnaire de packages pour Kubernetes. Il gère le partage, le déploiement, les mises à jour et les restaurations des logiciels développés pour Kubernetes. En fonction des valeurs fournies, Helm génère des fichiers de définition pour le cluster avec le moteur de modèle à partir du langage de programmation Go. Pour chaque version, WorkflowGen produit désormais une carte que vous pouvez utiliser avec votre cluster. Pour obtenir les dernières corrections de bogues et fonctionnalités de la carte, assurez-vous de toujours choisir la carte publiée avec la dernière mise à jour de WorkflowGen.
Aperçu de l'architecture
À la fin de cette section, vous aurez cette configuration de cluster :


Chaque conteneur du cluster aura accès à la configuration et aux secrets à l'intérieur de leurs espaces de noms. Plusieurs services Azure seront déployés par Azure Kubernetes Service. Cela ne nécessite aucune étape manuelle autre que l'interaction avec Kubernetes lui-même. L'équilibreur de charge que le service créera répartira les demandes entre les répliques de serveur WorkflowGen.
Prérequis
Vous devez avoir un cluster Kubernetes fonctionnel avec des nœuds Windows Server 2019. Voir la vue des ressources Azure ci-dessus pour une configuration AKS de base. Consultez l'article Microsoft Déployer un conteneur Windows Server sur un cluster Azure Kubernetes Service (AKS) à l’aide d’Azure CLI pour commencer à créer un cluster AKS avec le support des nœuds Windows.
Vous devez avoir installé l'outil de ligne de commande kubectl et il doit être connecté au cluster. Consultez la section Se connecter au cluster de l'article Microsoft Déployer un conteneur Windows Server sur un cluster Azure Kubernetes Service (AKS) à l’aide d’Azure CLI pour obtenir des instructions sur la connexion de kubectl à AKS.
Vous devez avoir installé l'outil de ligne de commande Helm. Consultez la section Installing Helm (disponible en anglais uniquement) sur le site Web de Helm pour savoir comment l'installer. Seules les versions Helm 3.0 et ultérieures sont supportées.
Notez également que vous ne devez pas créer d'autres ressources dans Azure en dehors du cluster et ses nœuds. Toutes les ressources requises pour les conteneurs seront créées automatiquement par Kubernetes. AKS est une plateforme entièrement gérée.
Créez la clé de chiffrement symétrique
Cette valeur doit être générée par vous. Un GUID simple suffira car il a une entropie suffisante pour ne pas être deviné :
[guid]::NewGuid().ToString('N')
# fda7a6a81db2428b8885bd1210522755Ajoutez votre fichier de licence WorkflowGen au cluster
Kubernetes vous permet de gérer les secrets et les configurations sous forme de fichiers à l'intérieur du cluster et de les injecter dans des pods. Dans ce cas, vous ajouterez votre fichier de licence en tant que secret et l'injecterez plus tard au module WorkflowGen. Pour ajouter votre licence au cluster, exécutez la commande suivante :
kubectl create secret generic wfgen-license-secret --from-file C:\Path\To\WorkflowGen.licCréez un fichier avec vos valeurs pour la carte
Afin de générer les modèles adaptés à vos attentes de configuration, vous devez fournir certaines valeurs à la commande helm lorsque vous installez ou mettez à jour une version. Vous pouvez spécifier ces valeurs à l'aide de l'interface de ligne de commande ou avec un fichier. Dans le cas d'une nouvelle installation, ce sera plus facile avec un fichier. Voici les valeurs dont vous aurez besoin :
replicaCount: 3
workflowgen:
  resources:
    limits:
      cpu: '1'
      memory: 2Gi
    requests:
      cpu: '1'
      memory: 2Gi
  config:
    WFGEN_APP_SETTING_ApplicationUrl: http://10.0.1.1/wfgen
    WFGEN_DATABASE_CONNECTION_STRING_FILE: C:\secrets\WFGEN_DATABASE_CONNECTION_STRING
    WFGEN_APP_SETTING_ApplicationSerialNumber_FILE: C:\secrets\ApplicationSerialNumber
    WFGEN_APP_SETTING_ApplicationSecurityPasswordSymmetricEncryptionKey_FILE: C:\secrets\ApplicationSecurityPasswordSymmetricEncryptionKey
    WFGEN_MACHINE_KEY_DECRYPTION_KEY_FILE: C:\secrets\WFGEN_MACHINE_KEY_DECRYPTION_KEY
    WFGEN_MACHINE_KEY_VALIDATION_KEY_FILE: C:\secrets\WFGEN_MACHINE_KEY_VALIDATION_KEY
  secret:
    ApplicationSerialNumber: <YOUR_WFG_LIC_KEY>
    ApplicationSecurityPasswordSymmetricEncryptionKey: <YOUR_NEW_GUID>
    WFGEN_DATABASE_CONNECTION_STRING: 'Server=wfgen-database-0.wfgen-database.default.svc.cluster.local,1433;Database=WFGEN;User ID=WFGEN_USER;Password=strong(!)Pass;'
    WFGEN_MACHINE_KEY_DECRYPTION_KEY: '39B3AE9CCCF94AA47D795EC84F7CCB7928F5D59BE2EB2BBA4FE2AC0B3C8D0C85'
    WFGEN_MACHINE_KEY_VALIDATION_KEY: '82F6247A5DBF8666FB60B8EFE6483360436F0EC426CC0351A9569C607B46C1FAD6497406DD8B0B519DD83CAA6764904C89999D742638ECE756E7C0B8799B45E9'
  license:
    secretName: wfgen-license-secret
    items:
      - key: WorkflowGen.lic
        path: WorkflowGen.lic
  dataPvcSpec:
    accessModes:
      - ReadWriteMany
    storageClassName: azurefile
    resources:
      requests:
        storage: 50Gi
  service:
    type: LoadBalancer
winServices:
  dirSync:
    resources:
      limits:
        cpu: '1'
        memory: 1Gi
      requests:
        cpu: '500M'
        memory: 1Gi
  engine:
    resources:
      limits:
        cpu: '1'
        memory: 1Gi
      requests:
        cpu: '500M'
        memory: 1Gi
database:
  fullnameOverride: wfgen-database
  nodeSelector:
    kubernetes.io/os: linux
  securityContext:
    runAsUser: 0
    runAsGroup: 0
  resources:
    limits:
      cpu: '1'
      memory: 2Gi
    requests:
      cpu: '500m'
      memory: 1Gi
  config:
    ACCEPT_EULA: 'Y'
    SA_PASSWORD_FILE: /mnt/secrets/SA_PASSWORD
    WFGEN_DATABASE_USER_USERNAME_FILE: /mnt/secrets/WFGEN_DATABASE_USER_USERNAME
    WFGEN_DATABASE_USER_PASSWORD_FILE: /mnt/secrets/WFGEN_DATABASE_USER_PASSWORD
    WFGEN_ADMIN_PASSWORD_FILE: /mnt/secrets/WFGEN_ADMIN_PASSWORD
  secret:
    SA_PASSWORD: 'strong(!)Pass'
    WFGEN_DATABASE_USER_PASSWORD: 'strong(!)Pass'
    WFGEN_ADMIN_PASSWORD: 'strong(!)Pass'
    WFGEN_DATABASE_USER_USERNAME: WFGEN_USER
  volumeClaimTemplateSpec:
    accessModes:
      - ReadWriteOnce
    storageClassName: default
    resources:
      requests:
        storage: 100Gi
ingress:
  enabled: false
Vous pouvez enregistrer ce fichier sous values.yaml. Le nom n'est pas important.
Installez la carte WorkflowGen
Vous devez maintenant installer la carte avec ces valeurs. Pour ce faire, exécutez la commande suivante :
helm install -f .\values.yaml wfg https://github.com/advantys/workflowgen-releases/releases/download/7.18.3/workflowgen-0.0.3.tgzHelm va générer des fichiers de déploiement Kubernetes pour vous et les installer sur le cluster.
Mettez à jour l'URL de l'application
Cette configuration créera un équilibreur de charge devant les conteneurs WorkflowGen. Vous devrez l'attendre pour obtenir une adresse IP publique. Exécutez périodiquement la commande suivante jusqu'à obtenir l'adresse IP publique de l'équilibreur de charge :
kubectl get services wfgen-serviceUne fois la valeur de EXTERNAL-IP approvisionnée, copiez-la et modifiez la configuration de WorkflowGen pour modifier la valeur WFGEN_APP_SETTING_ApplicationUrl. Pour ce faire, vous devez d'abord obtenir le nom du ConfigMap associé au déploiement de WorkflowGen. La commande suivante vous donnera tous les objets ConfigMap dans l'espace de noms par défaut :
kubectl get configmapCopiez le nom de WorkflowGen ConfigMap et remplacez <WFG_CONFIG_MAP> par la valeur dans la commande suivante :
kubectl edit configmap "<WFGEN_CONFIG_MAP>"Cela fera apparaître un éditeur afin que vous puissiez remplacer la valeur WFGEN_APP_SETTING_ApplicationUrl par l'adresse IP correcte du service d'équilibrage de charge. Enregistrez le fichier et quittez l'éditeur. Pour appliquer les modifications apportées à l'objet ConfigMap, redémarrez tous les pods du déploiement WorkflowGen. Vous devez également le faire pour les services Windows. Obtenez le nom des déploiements avec la commande suivante :
kubectl get deploymentRemplacez <WEB_APPS_DEPLOYMENT_NAME>  et <WIN_SERVICES_DEPLOYMENT_NAME> dans le script suivant par les noms de déploiement corrects pour redémarrer tous les conteneurs :
kubctl scale deployment "<WEB_APPS_DEPLOYMENT_NAME>" --replicas 0 -n wfgen-service
kubctl scale deployment "<WIN_SERVICES_DEPLOYMENT NAME>" --replicas 0 -n wfgen-service
# Wait until the scaling is done and then scale up
kubctl scale deployment "<WEB_APPS_DEPLOYMENT_NAME>" --replicas 3 -n wfgen-service
kubctl scale deployment "<WIN_SERVICES_DEPLOYMENT NAME>" --replicas 1 -n wfgen-serviceVous devriez maintenant avoir un WorkflowGen fonctionnel avec un équilibreur de charge et une base de données.
Mis à jour