You can deploy the SOAtest and Virtualize server (or SOAVirt server) manually or using a Helm chart.
Table of Contents | ||
---|---|---|
|
Deploying the SOAVirt Server in Kubernetes Manually
To To deploy the SOAVirt server in Kubernetes, follow the process outlined below.toc
Prerequisites
First, create a namespace for the SOAVirt server to run in:
...
Code Block | ||||
---|---|---|---|---|
| ||||
apiVersion: v1
kind: ServiceAccount
metadata:
name: parasoft-account
namespace: parasoft-sv-namespace
automountServiceAccountToken: true
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: parasoft-read
namespace: parasoft-sv-namespace
rules:
- apiGroups:
- "*"
resources:
- "*"
verbs:
- get
- read
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: parasoft-read-bind
namespace: parasoft-sv-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: parasoft-read
subjects:
- kind: ServiceAccount
name: parasoft-account
namespace: parasoft-sv-namespace |
...
Warning: When scaling beyond one replica, the events and statistics services should be disabled.
Note: kind: Deployment
is not supported. Use either kind: Pod
or kind: StatefulSet
, which are supported.
Code Block | ||||
---|---|---|---|---|
| ||||
apiVersion: apps/v1 kind: StatefulSet metadata: name: soavirt namespace: parasoft-sv-namespace labels: tag: soavirt spec: replicas: 1 selector: matchLabels: tag: soavirt serviceName: soavirt template: metadata: labels: tag: soavirt spec: securityContext: runAsNonRoot: true serviceAccountName: parasoft-account automountServiceAccountToken: true 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/healthcheck port: 9080 initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 30 failureThreshold: 3 livenessProbe: httpGet: path: /soavirt/api/v6/healthcheck 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 -Dparasoft.cloudvm=true -Dparasoft.cloudvm.config=Kubernetes" - name: PARASOFT_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: PARASOFT_POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace |
...
Open a shell to the running container:
Code Block kubectl exec --stdin --tty soavirt-0 -n parasoft-sv-namespace -- /bin/bash
Make a curl call to the SOAVirt REST API to retrieve the machine ID:
Code Block curl http://localhost:9080/soavirt/api/v6/status?fields=machineId
- Note the machine ID in the response and provide it to your Parasoft representative, who will send you a license password.
- Once you've received your license password, apply it in the soavirt-config.yaml.
Apply the updated soavirt-config.yaml to the running container:
Code Block kubectl apply -f soavirt-config.yaml
The license will be applied when the pod is restarted automatically. Alternatively, you can delete and recreate the pod for the changes to take effect.
Code Block kubectl delete -f soavirt.yaml kubectl create -f soavirt.yaml
Deploying SOAVirt Server in Kubernetes with a Helm Chart
You can take advantage of Helm charts to simplify the deployment of SOAVirt server. Helm is a client-side package that uses Helm charts to orchestrate Kubernetes deployments. Using a Helm chart lets you group and coordinate your yaml files so they can be created or deleted with a single command. For more information about using Helm, see Helm Documentation.
Anchor HelmPrerequisites HelmPrerequisites
Prerequisites
HelmPrerequisites | |
HelmPrerequisites |
Docker, Kubernetes, and Helm should be installed before you begin.
First, create a namespace for the SOAVirt server to run in:
Code Block |
---|
kubectl create namespace parasoft-sv-namespace |
Warning |
---|
Once the SOAVirt server has been licensed, deleting the namespace or changing the release-name will invalidate machine-locked licenses, even if you recreate the same namespace. |
Next, 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.
Warning: The volume must have permissions for the Parasoft user to be able to read and write to the volume. For example, execute the command chown 1000:1000 <shared_path>
.
Anchor | ||||
---|---|---|---|---|
|
- Download and extract parasoft_soavirt_server_2023.1.1_helm_chart.zip. This zip file contains all the yaml files you will need for this process.
Update the values.yaml found in the
soavirt-server-helm
directory extracted above. At a minimum, thepersistence
value must be changed to match the name of the Persistent Volume claim configured in Prerequisites above.Code Block persistence: name: soavirt-pvc
Other values, such as the
replica count
andnamespace
, can be changed if necessary.Update the config.yaml found in the
soavirt-server-helm/templates
directory extracted above. At the minimum, theparasoft.eula.accepted
value must be updated totrue
to accept the EULA:Code Block parasoft.eula.accepted: false
Other values can be changed if necessary. For example, if you are using a network license, update these fields:
Code Block # === PRODUCT LICENSING === # Enables virtualize functionality #virtualize.license.enabled: true # Enables soatest functionality #soatest.license.enabled: true # === 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, Extension Framework, 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, 100 HPS # Enables network licensing for soatest #soatest.license.use_network: true # Specifies the type of network license for soatest ['server_edition', '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, Message Packs, Advanced Test Generation Desktop, Advanced Test Generation 5 Users, Advanced Test Generation 25 Users, Advanced Test Generation 100 Users, Requirements Traceability, API Security Testing, Extension Framework # === 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: false # Specifies license server URL, e.g., https://host[:port][/context-path] #license.network.url: https\://[License Server Host]\:8443 # 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]
Install a helm chart:
Code Block helm install my-release soavirt-server-helm
Using a Local License: To use a node-lock license, you will need to retrieve the machine ID from the deployed server in order to procure your license from Parasoft and update the config.yaml.
Open a shell to the running container:
Code Block kubectl exec --stdin --tty my-release-soavirt-server-0 -n parasoft-sv-namespace -- /bin/bash
Make a curl call to the SOAVirt REST API to retrieve the machine ID:
Code Block curl http://localhost:9080/soavirt/api/v6/status?fields=machineId
- Note the machine ID in the response and provide it to your Parasoft representative, who will send you a license password.
Once you've received your license password, update the config.yaml found in the
soavirt-server-helm/templates
directory extracted earlier to accept a machine-locked license:Code Block # === NODE-LOCK LICENSE === # Specifies password for virtualize local license #virtualize.license.local.password: [Virtualize License Password] # Specifies password for soatest local license #soatest.license.local.password: [Soatest License Password] # === NETWORK LICENSE === # Enables network licensing for virtualize #virtualize.license.use_network: true # Enables network licensing for soatest #soatest.license.use_network: true
Reinstall the Helm chart for the changes to take effect.
Code Block helm uninstall my-release helm install my-release soavirt-server-helm