You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Deploying in Docker

Parasoft SOAtest and Virtualize as well as Data Repositorycan be deployed to Docker. Parasoft has published official Docker images to Docker Hub for your convenience. Full installation instructions are included in the readme with each image. Follow the links below for the image that best suites your needs:

Deploying in Kubernetes

To deploy the soavirt server in Kubernetes, follow the process outlined below.

Prerequisites

First, a Persistent Volume and a Persistent Volume claim are needed. Create a Persistent Volume that can be shared by multiple nodes. It should be provisioned with 300GB of space and must have the ReadWriteMany access mode. This space will be used for the workspace of the soavirt server and will store configuration settings as well as Virtual Assets.

The default Persistent Volume Claim name is 'soavirt-pvc' and can be customized by updating the yaml definition of the soavirt server. The example shown below is a configuration to set up an NFS Persistent Volume and Persistent Volume Claim. While the example uses NFS, this is not required; use whatever persistent volume type fits your needs.

Warning: For NFS, the exported directory must have the same UID and GID as the Parasoft user that runs the container. For example, execute the command chown 1000:1000 <shared_path>.

soavirt-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 300Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  mountOptions:
     - hard
     - nfsvers=4.1
  nfs:
    path: <path>
    server: <ip address>
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: soavirt-pvc
spec:
  storageClassName: nfs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 300Gi

Use the yaml file to create a Persistent Volume and a Persistent Volume claim:

kubectl create -f soavirt-pv.yaml

SOAVirt setup

Create the service that can be used to access soavirt server in Kubernetes. The example shown below exposes it using a node port, which provides a stable endpoint for applications to access Virtual Assets.

soavirt-service.yaml
kind: Service
apiVersion: v1
metadata:
  name: soavirt-service
spec:
  selector:
    tag: soavirt
  type: NodePort
  ports:
    - name: http
      protocol: TCP
      port: 9080
      targetPort: 9080
      nodePort: 30080
    - name: events
      protocol: TCP
      port: 9617
      targetPort: 9617
      nodePort: 30617
    - name: statistics
      protocol: TCP
      port: 9618
      targetPort: 9618
      nodePort: 30618

Use the yaml file to create service that can be used to access soavirt server in Kubernetes:

kubectl create -f soavirt-service.yaml

Optional for Ingress users: To expose the service with Ingress, the following rule can be used with some modifications based on your Ingress setup. Be aware that Events and Statistics require TCP connections which may not be supported by all Ingress Controllers.

soavirt-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: soavirt-ingress
  namespace: soavirt-server
spec:
  rules:
  - host: soavirt.company.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: soavirt-service
            port:
              number: 9080

Use the yaml file to create the Ingress rule:

kubectl create -f soavirt-ingress.yaml

Once the service is created, you will need to create the configuration map for the soavirt server.

The server EULA must be accepted by setting 'parasoft.eula.accepted=true' in the ConfigMap.

Warning: When connecting to CTP the property 'server.hostname' should be set with the address of the Service.

soavirt-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: soavirt-config
data:
  config.properties: |
    # Configuration properties for soavirt server

    # === END USER LICENSE AGREEMENT ===
    # Set to true to accept the end user license agreement
    # Please review the EULA.txt file included in the distribution zip for soavirt.war
    parasoft.eula.accepted=false

    # === WORKING DIRECTORY ===
    # Specifies workspace location
    #working.dir=

    # === LOGGING CONFIGURATION ===
    # Specifies configuration file for logging
    logging.config.file=/WEB-INF/default.logging.xml
    # Replace with the following line to enable debug information
    #logging.config.file=/WEB-INF/debug.logging.xml



    # === CTP SERVER ===
    # Specifies CTP server endpoint
    #env.manager.server=http\://[CTP Server Host]\:8080

    # Specifies the server name that will be displayed in CTP
    #env.manager.server.name=[Server Name]

    # Specifies username for CTP authentication
    #env.manager.username=[CTP Server Username]

    # Specifies password for CTP authentication
    #env.manager.password=[CTP Server Password]

    # Enables notifications to CTP for deployments
    #env.manager.notify=true


    # === SERVLET CONTAINER PORTS ===
    # Modify ports to match your servlet container settings
    # Specifies port for http
    server.port.http=9080

    # Specifies port for https
    #server.port.https=8443


    # === PRODUCT LICENSING ===
    # Enables virtualize functionality
    virtualize.license.enabled=true

    # Enables soatest functionality
     soatest.license.enabled=true


    # === NODE-LOCK LICENSE ===
    # Specifies password for virtualize local license
    #virtualize.license.local.password=

    # Specifies password for soatest local license
    #soatest.license.local.password=


    # === NETWORK LICENSE ===
    # Enables network licensing for virtualize
    virtualize.license.use_network=true

    # Specifies the type of network license for virtualize ['performance_server_edition','runtime_server_edition','custom_edition']
    virtualize.license.network.edition=custom_edition

    # Specifies features for virtualize 'custom_edition' license
    virtualize.license.custom_edition_features=Service Enabled, Performance, Extension Pack, Validate, Message Packs, Developer Sandbox 1000 Hits/Day, 10000 Hits/Day, 25000 Hits/Day, 50000 Hits/Day, 100000 Hits/Day, 500000 Hits/Day, 1 Million Hits/Day, Unlimited Hits/Day, 30 HPS

    # Enables network licensing for soatest
    soatest.license.use_network=true

    # Specifies the type of network license for soatest ['server_edition', 'server_edition_2011','custom_edition']
    soatest.license.network.edition=custom_edition

    # Specifies features for soatest 'custom_edition' license
    soatest.license.custom_edition_features=RuleWizard, Command Line, SOA, Web, Server API Enabled, Jtest Connect, Stub Desktop, Stub Server, Message Packs, Advanced Test Generation Desktop, Advanced Test Generation 5 Users, Advanced Test Generation 25 Users, Advanced Test Generation 100 Users


    # === LICENSE SERVER ===
    # Enables using a specific license server
    # If true, the license network properties below will be used to retrieve a license
    # If false, the DTP server properties will be used to retrieve a license
    license.network.use.specified.server=true

    # Specifies license server host
    license.network.host=snake.parasoft.com

    # Specifies the connection type to the license server ['http','tcp']
    license.network.connection.type=tcp

    # Specifies license server port
    # Common ports for http and tcp are [8443,2002]
    license.network.port=2002

    # Enables http authentication for the license server
    license.network.auth.enabled=false

    # Specifies username for license server authentication
    #license.network.user=[License Server Username]

    # Specifies password for license server authentication
    #license.network.password=[License Server Password]


    # === DTP SERVER ===
    # Specifies DTP server host
    #dtp.server=[DTP Server Host]

    # Specifies DTP server port
    #dtp.port=8443

    # Specifies username for DTP authentication
    #dtp.user=[DTP Server Username]

    # Specifies password for DTP authentication
    #dtp.password=[DTP Server Password]


    # === MISC ===
    # Specifies scripting timeout in minutes
    #scripting.timeout.minutes=10


    # === REPORTS ===
    # Specifies a tag that represents a unique identifier for each run
    # e.g., ${config_name}-${project_module}-${scontrol_branch}-${exec_env}
    #session.tag=${config_name}

    # Specifies a build identifier used to label results
    #build.id=${dtp_project}-yyyy-MM-dd

    # Specifies data that should be included in the report
    #report.developer_errors=true
    #report.developer_reports=true
    #report.authors_details=true
    #report.testcases_details=false
    #report.test_suites_only=true
    #report.failed_tests_only=false
    #report.associations=false
    #report.assoc.url.pr=
    #report.assoc.url.fr=
    #report.assoc.url.task=
    #report.assoc.url.req=
    #report.assoc.url.test=

Use the yaml file to create the configuration map for the soavirt server:

kubectl create -f soavirt-config.yaml

The following creates the soavirt server. If a custom Persistent Volume Claim name was used in previous steps make sure to update the 'claimName' field to match the custom name.

Warning: When scaling beyond one replica, the events and statistics services should be disabled.

soavirt.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: soavirt
  labels:
    tag: soavirt
spec:
  replicas: 1
  selector:
    matchLabels:
      tag: soavirt
  serviceName: soavirt
  template:
    metadata:
      labels:
        tag: soavirt
    spec:
      volumes:
      - name: soavirt-pv
        persistentVolumeClaim:
          claimName: soavirt-pvc
      - name: soavirt-config
        configMap:
          name: soavirt-config
      containers:
      - name: soavirt
        image: parasoft/soavirt-server
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: soavirt-pv
          mountPath: /usr/local/parasoft/soavirt/webapps/ROOT/workspace
        - name: soavirt-config
          mountPath: /usr/local/parasoft/soavirt/webapps/config.properties
          subPath: config.properties
        ports:
        - name: http
          containerPort: 9080
        - name: events
          containerPort: 9617
        - name: statistics
          containerPort: 9618
        startupProbe:
          httpGet:
            path: /soavirt/api/v6/status?fields=machineId
            port: 9080
          initialDelaySeconds: 30
          periodSeconds: 30
          timeoutSeconds: 30
          failureThreshold: 3
        livenessProbe:
          httpGet:
            path: /soavirt/api/v6/status?fields=machineId
            port: 9080
          initialDelaySeconds: 30
          periodSeconds: 30
          timeoutSeconds: 30
        readinessProbe:
          httpGet:
            path: /soavirt/api/v6/virtualAssets?fields=id
            port: 9080
          initialDelaySeconds: 30
          periodSeconds: 30
          timeoutSeconds: 30
        env:
        - name: CATALINA_OPTS
          value: "-Dparasoft.auto.deploy.new=false
                   -Dparasoft.event.monitoring.broker.port=9617
                   -Dparasoft.server.statistics.broker.port=9618"

Use the yaml file to create the soavirt server:

kubectl create -f soavirt.yaml
  • No labels