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

Compare with Current View Page History

« Previous Version 2 Next »

Introduction

  • JS7 can be set up for use with a Kubernetes cluster. Using the Linux based JS7 images for Docker® containers which ship with a current Alpine base image and OpenJDK.
  • Users can run JS7 components by creating a Kubernetes deployment object, and can describe the deployment in a YAML file.
    • To this purpose users have to first install and set up the Kubernetes Cluster see JS7 - How to install a Kubernetes Cluster.
    • With the Kubernetes Cluster being up and running users can use the deployment YAML files to deploy JS7 components.

Deployment Files

The sample YAML files for use with Kubernetes are attached to the article.

Download the archive file: js7-kubernetes.zip

The folder structure includes the following files:

  • js7-deployment.yaml – This file is the deployment file for JS7 components.

    Example js7-deployment.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: js7joc
      name: js7joc
    spec:
      volumes:
      - name: hibernate-config
        configMap:
            name: hibernate-config
      containers:
      - image: sosberlin/js7:joc-2-5-1
        name: js7joc
        ports:
        - containerPort: 4446
        volumeMounts:
        - name: hibernate-config
          mountPath: /var/sos-berlin.com/js7/joc/resources/joc/
      
        env:
        - name: RUN_JS_JAVA_OPTIONS
          value: "-Xmx256m"
        - name: RUN_JS_USER_ID
          value:  "0:0"
        - name: RUN_JS_ID
          value:  "jobscheduler"
          
      - image: sosberlin/js7:controller-2-5-1
        name: js7con
        ports:
        - containerPort: 4444
        env:
        - name: RUN_JS_JAVA_OPTIONS
          value: "-Xmx256m"
        - name: RUN_JS_USER_ID
          value:  "0:0"
        - name: RUN_JS_ID
          value:  "jobscheduler"
          
      - image: sosberlin/js7:agent-2-5-1
        name: js7agent
        ports:
        - containerPort: 4445
  • js7-service.yaml – This file includes the configuration for port forwarding.

    Example js7-service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      labels:
        run: js7joc
      name: js7joc
    spec:
      ports:
    
      - name: js7joc
        port: 4446
        protocol: TCP
        targetPort: 4446
    
      - name: js7agent
        port: 4445
        protocol: TCP
        targetPort: 4445
    
      - name: js7controller
        port: 4444
        protocol: TCP
        targetPort: 4444
      
      selector:
        run: js7joc
      type: LoadBalancer
    status:
      loadBalancer: {}
  • hibernate.cfg.xml – This file includes the Hibernate configuration for connections to the JS7 - Database. Find the following example for use with a MySQL® database.

    Example js7-service.yaml
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <hibernate-configuration>
     <session-factory>
      <property name="hibernate.connection.driver_class">org.mysql.jdbc.Driver</property>
      <property name="hibernate.connection.password">jobscheduler</property>
      <property name="hibernate.connection.url">jdbc:mysql://mysqlsrv:3306/jobscheduler</property>
      <property name="hibernate.connection.username">jobscheduler</property>
      <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
      <property name="hibernate.show_sql">false</property>
      <property name="hibernate.connection.autocommit">false</property>
      <property name="hibernate.format_sql">true</property>
      <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
      <property name="hibernate.connection.provider_class">org.hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
      <property name="hibernate.hikari.maximumPoolSize">10</property>
     </session-factory>
    </hibernate-configuration>

Step-by-Step Instructions

To operate JOC Cockpit in a Kubernetes cluster with the JS7 database users adjust the hibernate.cfg.xml file that specifies the database connection and holds credentials for database access. Find further examples from the JS7 - Database article.

  1. Download the archive file: js7-kubernetes.zipOpen a console window from the directory where you downloaded the .zip archive and extract the archive.

  2. Execute the below command to create a config map and to pass the hibernate.cfg.xml file to the mount directory of the container.

    kubectl create configmap hibernate-config --from-file=hibernate.cfg.xml
  3. Run the js7-deployment.yaml file to create the deployment for the JS7 configuration.

    kubectl create -f js7-deployment.yaml
  4. Run the js7-service.yaml file to create the service for the JS7 configuration.

    kubectl create -f js7-service.yaml
  5. Once both YAML files are executed successfully users can check the pod's status. The following command displays pods running in the Kubernetes cluster.

    kubectl get pods
  6. Once both YAML files are executed successfully users can check the steps from the YAML file executed to create the pod. The following command displays resources used in Kubernetes. It shows data from a single resource and from a collection of resources.

    kubectl describe pods
  7. The following command can be executed to check the IP address and port of JS7 components.

    kubectl get service


  • No labels