要在 Kubernetes 中部署数据资源库服务器,请遵循以下流程。

前提条件

首先,需要一个持久卷和一个持久卷声明。应为其配置 300GB 的空间,并且应具有 ReadWriteOnce 访问模式。该空间将用于存储数据资源库服务器的数据。

默认持久卷声明的名称为 'datarepo-pvc',可通过更新 SOAVirt 服务器的 yaml 定义进行自定义。以下示例展示了设置 NFS 持久卷和持久卷声明的配置。虽然示例中使用的是 NFS,但这并不是必需的;可根据需要使用任何持久卷类型。

警告:对于 NFS,导出目录的 UID 和 GID 必须与运行容器的 Parasoft 用户相同。例如,执行 chown 1000:1000 <SHARED_PATH> 命令。

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

使用 yaml 文件创建持久卷和持久卷声明:

kubectl create -f datarepo-pv.yaml

创建一个 secret,其中包含登录数据资源库的用户名和密码。创建 secret 的一种方法是使用以下命令:

kubectl create secret generic datarepo-login \
 --from-literal=username=<username> \
 --from-literal=password=<password>

数据资源库服务器设置

下面的 yaml 示例为数据资源库服务器配置了一个 pod,并通过 30017 端口将其对外公开。如果之前为持久卷声明使用了自定义名称,请确保更新 'claimName' 字段以匹配自定义名称。如果持久卷使用 NFS,请按照 yaml 文件内注释中的说明配置 'runAsUser' UID。 

datarepo.yaml
apiVersion: v1
kind: Pod
metadata:
  name: datarepo
  labels:
    app: datarepo
spec:
# If using NFS for the persistent volume, uncomment the following lines and run the pod with the UID of the owner of the <shared_path>.
# securityContext:
#   runAsUser: <UID>
  volumes:
  - name: datarepo-volume
    persistentVolumeClaim:
      claimName: datarepo-pvc
# To run the Data Repository server with SSL, uncomment the following lines
#  - name: datarepo-sslcert-file
#    configMap:
#      name: datarepo-sslcert
  containers:
  - name: datarepo
    image: mongo:latest
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: datarepo-volume
      mountPath: /data/db
# To run the Data Repository server with SSL, uncomment the following lines
#    - name: datarepo-sslcert-file
#      mountPath: /etc/sslCert.pem
#      subPath: sslCert.pem
#    command: ["mongod", "--ipv6", "--bind_ip_all", "--sslMode", "requireSSL", "--sslPEMKeyFile", "/etc/sslCert.pem", "--auth"]
    startupProbe:
      exec:
# To run the Data Repository server with SSL or not, choose one of the following lines to uncomment
#        command: ["/bin/sh", "-c" "mongosh --host 127.0.0.1 --port 27017 --ssl --sslAllowInvalidCertificates --quiet test --eval 'quit(0)'"]
        command: ["/bin/sh", "-c" "mongosh --host 127.0.0.1 --port 27017 --quiet test --eval 'quit(0)'"]
      initialDelaySeconds: 30
      periodSeconds: 30
      timeoutSeconds: 10
      failureThreshold: 3
    livenessProbe:
      exec:
# To run the Data Repository server with SSL or not, choose one of the following lines to uncomment
#        command: ["/bin/sh", "-c" "mongosh --host 127.0.0.1 --port 27017 --ssl --sslAllowInvalidCertificates --quiet test --eval 'quit(0)'"]
        command: ["/bin/sh", "-c" "mongosh --host 127.0.0.1 --port 27017 --quiet test --eval 'quit(0)'"]
      initialDelaySeconds: 30
      periodSeconds: 30
      timeoutSeconds: 10
    env:
    - name: MONGO_INITDB_ROOT_USERNAME
      valueFrom:
        secretKeyRef:
          name: datarepo-login
          key: username
          optional: false
    - name: MONGO_INITDB_ROOT_PASSWORD
      valueFrom:
        secretKeyRef:
          name: datarepo-login
          key: password
          optional: false
---
apiVersion: v1
kind: Service
metadata:
  name: datarepo
  labels:
    run: datarepo
spec:
  type: NodePort
  ports:
  - port: 27017
    protocol: TCP
    targetPort: 27017
    nodePort: 30017
  selector:
    app: datarepo

使用 yaml 文件启动 pod 和服务:

kubectl create -f datarepo.yaml

使用 SSL 重启数据资源库服务器

在 Kubernetes 中设置好数据资源库服务器后,就可以使用 SSL 重启。首先,清除现有的 pod 和服务:

kubectl delete -f datarepo.yaml

然后将 SSL 证书文件部署到 Kubernetes:

kubectl create configmap datarepo-sslcert \
 --from-file=sslCert.pem=<path-to-file>

根据上面 datarepo.yaml 文件中的说明重新配置该文件,以使用 SSL 启动数据资源库服务器。然后使用该 yaml 启动 pod 和服务:

kubectl create -f datarepo.yaml

通过 CTP 注册数据资源库服务器

要在 CTP 中使用 Parasoft Test Data 注册数据资源库服务器,请运行以下命令:

curl -H "Content-Type: application/json" -H "Accept: application/json" \
	-d "{\"alias\":\"<ALIAS>\",\"host\":\"<NODE>\",\"port\":<PORT>,\"user\":\"<DR_USERNAME>\",\"password\":\"<DR_PASSWORD>\",\"ssl\":<USE_SSL>}" \
	--user "<CTP_USERNAME>:<CTP_PASSWORD>" "<CTP_URL>/em/tdm/api/v2/servers"

下表介绍了 curl 命令中的变量。将它们替换为适用于您的设置的配置。

变量说明
<ALIAS>CTP 上显示的表示数据资源库服务器的名称
<NODE>运行数据资源库服务器的 Kubernetes 节点
<PORT>公开数据资源库服务器的节点端口号
<DR_USERNAME>用于初始化数据资源库服务器的登录用户名
<DR_PASSWORD>用于初始化数据资源库服务器的登录密码
<USE_SSL>该数据资源库服务器是否要求使用 SSL(true 或 false)
<CTP_USERNAME>CTP 登录用户名
<CTP_PASSWORD>CTP 登录密码
<CTP_URL>CTP 的 URL 格式为 https://[CTP 服务器主机]:[端口]
  • No labels