Data Repository サーバーを Kubernetes にデプロイするには、以下で説明するプロセスに従ってください。

要件

まず、Persistent Volume と Persistent Volume Claim が必要です。300GB の容量をプロビジョニングし、ReadWriteOnce のアクセス モードを設定する必要があります。この領域は、Data Repository サーバーのデータを格納するために使用されます。

デフォルトの Persistent Volume Claim 名は datarepo-pvc であり、soavirt サーバーの yaml 定義を更新することでカスタマイズできます。以下に示すサンプルは、NFS Persistent Volume と Persistent Volume Claim を設定する構成です。この例では NFS を使用していますが、これは必須ではありません。ニーズに合った Persistent Volume タイプを使用してください。

警告: NFS の場合、エクスポートされたディレクトリには、コンテナを実行する Parasoft ユーザーと同じ UID および GID が必要です。たとえば、コマンド 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 ファイルを使用して、Persistent Volume と Persistent Volume Claim を作成します。

kubectl create -f datarepo-pv.yaml

Data Repository ログイン用のユーザー名とパスワードを含むシークレットを作成します。このようなシークレットを作成する 1 つの方法は、次のコマンドを使用することです。

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

Data Repository サーバーのセットアップ

以下の yaml の例は、Data Repository サーバーのポッドを構成し、ポート 30017 経由で外部に公開します。以前に Persistent Volume Claim にカスタム名を使用した場合は、カスタム名と一致するように 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 ファイルを使用してポッドとサービスを開始します。

kubectl create -f datarepo.yaml

SSL を使用した Data Repository サーバーの再起動

Kubernetes で Data Repository サーバーをセットアップしたら、SSL を使用して再起動できます。まず、既存のポッドとサービスを破棄します。

kubectl delete -f datarepo.yaml

次に、SSL 証明書ファイルを Kubernetes にデプロイします。

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

上記の datarepo.yaml ファイルをファイル中にある指示に従って再構成し、SSL を使用して Data Repository サーバーを起動します。次に、その yaml を使用してポッドとサービスを開始します。

kubectl create -f datarepo.yaml

CTP を使用した Data Repository サーバーの登録

Data Repository サーバーを 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>この Data Repository サーバーを表すために CTP に表示される名前
<NODE>この Data Repository サーバーが実行されている Kubernetes ノード
<PORT>この Data Repository サーバーが公開されるノードのポート番号
<DR_USERNAME>この Data Repository サーバーの初期化に使用されるログイン ユーザー名
<DR_PASSWORD>この Data Repository サーバーの初期化に使用されるログイン パスワード
<USE_SSL>この Data Repository サーバーに SSL が必要かどうか (true または false)
<CTP_USERNAME>CTP ログインのユーザー名
<CTP_PASSWORD>CTP ログインのパスワード
<CTP_URL>https://[CTP Server Host]:[Port] 形式の CTP への URL
  • No labels