Contents:
Related pages:
System Architecture Overview
Kiuwan On-Premises (KOP) is based on a client-server architecture with the following major server components:
- WildFly application server
- MySQL database
KOP solution is deployed on a centralized server (all the components are installed in the same host) and accessed by users via HTTP website access or by IDE plugins (Eclipse, Visual Studio).
KOP also supports distributed architecture with high-availability and load-balancing. For these scenarios, please contact Kiuwan support.
Server Host Requirements
Kiuwan On-Premises (KOP) solution is deployed on a centralized server host (all the components are installed in the same host) and accessed by users via HTTP or by IDE plugins (Eclipse, Visual Studio).
Server Host Requirements
Linux kernel version 3.10 or higher
CS Docker Engine version 1.10 or higher installed on your server
Connectivity to SMTP Mail Server (i.e. remotely accessible or locally installed)
The first phase of installation process (building the Kiuwan image) requires Internet connectivity
Installation must be executed using any unix user with privileges to execute docker server commands
Server CPU and memory requirements depend on several factors:
- how many lines of code will need to be scanned
- how many analyses will need to be executed in parallel
- how many users will access the web application
It's important to notice that we're assuming the typical use case where code analyses are performed locally through Kiuwan Local Analyzer, and therefore out of server machine (tipically at a user machine or within a build CI system).
Therefore, when we talk about analysis we mean 2nd phase of the analysis (i.e. indicator calculation that is executed within the host server)
Above factors heavily influence host server requirements, but minimum requirements are:
Operating System | RAM | CPUs | Disk | Other SW |
---|---|---|---|---|
Linux kernel version 3.10 or higher | 16 GB | Intel i7 2,5 GHz with 4 cores | 750 GB | CS Docker Engine version 1.10 or higher |
Note: CPU clock speed and disk speed will affect overal response time.
Above configuration is recommended for a system load that requires continuous service for:
- parallel execution of 2 analyses (any additional parallel analysis request will be enqueued, and it will be executed as soon as any of the running analyses finishes), and
- 50 concurrent web-users
Additional system requirements can be met by following next recommendations:
- In case you need a higher number of parallel analyses executions, you should add 1 CPU core and 512 Mb for any additional required parallel analysis
- In case you need to improve response time to web users, conside to add 1Gb for every 50 additional web users.
Installation steps
Before installing KOP, make sure that you understand the System Architecture Overview, that your server host(s) complies with the Server Host Requirements, and that you have properly prepared the Environment as follows:
Installation requirements:
The installation requires CS Docker Engine version 1.10 or higher installed on your server
Be sure you meet Server Host Requirements
The first phase of installation process (building the Kiuwan image) requires Internet connectivity
Installation must be executed using any unix user with privileges to execute docker server commands
Step 1. Unpackage KOP Installation Package
KOP Installation Package consists on a tarball gz file (vX.Y.tar.gz) containing all the kiuwan docker files.
- Copy the distribution tarball to your host server’s installation directory ($KOP_INSTDIR)
- Uncompress the distribution tarball
- tar xvzf vX.Y.tar.gz
This will create a $KOP_INSTDIR/vX.Y directory with all the kiuwan docker files
In $KOP_INSTDIR/vX.Y you will find a file named Dockerfile where you will configure the Kiuwan docker image.
KOP Licenses are distributed through two license distribution zipfiles:
- license.zip
- configq1.zip
To install the licences:
- Copy both zipfiles to "license" directory of you KOP installation directory
- cp license.zip $KOP_INSTDIR/vX.Y/license
- cp configq1.zip $KOP_INSTDIR/vX.Y/license
- Continue configuring and building your KOP image
Step 2. Configure Kiuwan Docker image
After unpackaging, you should configure the docker image to be built.
Configuration of Kiuwan docker image is currently done through below properties.
This configuration can be specified in two ways:
- either directly setting the values editing $KOP_INSTDIR/vX.Y/Dockerfile
- or specifying the values as command line arguments (see below Step3.Build the Kiuwan Docker image )
PropertyName (=default value) | Meaning |
---|---|
SysAdmin configuration | |
KIUWAN_HOST=kiuwan.mydomain.com KIUWAN_PORT=7080 | Hostname (or ip address) and port number to access KOP. These variables will be used to build Kiuwan URL. Example (with default values):
|
KIUWAN_VOL=/kiuwan_vol | Directory of the Container where KOP will be installed. |
KIUWAN_WILDFLY_USER=kiuwan KIUWAN_WILDFLY_GROUP=gkiuwan | System user/group for WildFly's installation and execution |
Advanced config (WildFly, MySQL, Redis, etc) | Please visit Advanced Configuration |
KOP users | |
KIUWAN_MYSQL_USER=kiuwan KIUWAN_MYSQL_USERPWD=kiuwan | Username and password used by KOP to access MySQL database |
SSH_ROOT_PWD=password | Password for root user (SSH) of Kiuwan Container |
KIUWAN_EMAIL_ADMIN_ACCOUNT | Email address of kiuwanadmin user
|
KOP e-mail (SMTP) configuration | |
KIUWAN_SMTP_HOST= | SMTP host and port |
KIUWAN_SMTP_USER_ACCOUNT KIUWAN_SMTP_USER_PASSWORD | SMTP account : username and password |
KIUWAN_EMAIL_USER_ACCOUNT | Sender email address for KOP email notifications |
You can visit Advanced Configuration for additional configuration parameters.
Step 3. Build the Kiuwan Docker image
After configuration, you will build the Kiuwan docker image.
IMPORTANT: Please be sure you have already installed KOP licenses, otherwise the docker image will not be built !!
To build it (configuration done at Dockerfile):
cd $KOP_INSTDIR/vX.Y
docker build -t <image_name:version> .
where image_name can be any string that helps you to identify the image (for example kop:v1.2)
If you prefer to specify the configuration by command line arguments, you can use:
docker build \
--build-arg KIUWAN_HOST=mykiuwan.mydomain.com \
--build-arg KIUWAN_PORT=myPortNumber \
--build-arg ... \
-t <image_name:version> .
This step requires Internet connectivity.
If your installation uses an proxy, you should build it with next command:
docker build \
--build-arg http_proxy=http://user:pass@proxy_host:proxy_port \
-t <image_name:version> .
In case you need to execute the Kiuwan container in a host server without Internet connectivity:
- Build the image in a connected server host
- Save the image, transfer it to the target host server and then load it and execute it (as further described)
After image creation, you will be able to list the images in your docker server and identify your kiuwan image by issuing the next command:
docker images
Step 3.1 (Optional) Moving the image to another server host
After creating the image, if you want to move it to another host server you first must save it to a tarball by executing:
docker save kop:v1.2 > kop_v12_saved_image.tar
docker load --input kop_v12_saved_image.tar
Step 4. Post-build configuration of the Kiuwan Docker image
After building the image, an initial execution of the image it’s need to complete the installation process.
To do it, execute:
docker run --rm --name <my_container_name> \
-h <my_container_host_name> \
-v <server_host_mount_dir:container_mount_dir> \
-e KIUWAN_FIRST_TIME="Y" -it \
<image_name:version>
- IMPORTANT: <container_mount_dir> must match KIUWAN_VOL property of Dokerfile
This step will configure and populate Kiuwan database as well as set up directory structure of Kiuwan image.
This step only should be executed once and previously to run the container.
For example, the next command:
docker run --rm --name kop -h kop.mydomain.com -v /data/kop:/kiuwan_vol -e KIUWAN_FIRST_TIME="Y" -it kop:v1.2
- will assign "kop" as the name of the container
- will assign "kop.mydomin.com" as the hostname of the container
- will install KOP sw in
- /data/kop in server host
- /kiuwan_vol/ in container
Step 5. Executing the Kiuwan Docker container
After the container is built, you can execute (run) the Kiuwan container by issuing the following command:
docker run --rm --name <my_container_name> \
-h <my_container_host_name> \
-v <server_host_mount_dir:container_mount_dir> \
-p <mysql_port_ext>:3306 -p <ssh_port_ext>:22 -p <kiuwan_port_ext>:7080 \
-e START_AND_RUN="Y" -d \
<image_name:version>
- <container_mount_dir> must match KIUWAN_VOL property of Dokerfile
You need to map several ports from the container to the host machine in order to access the container. That’s done by using –p server_port:container_port.
- <mysql_port_ext> : server host port to access container's MySQL (you can leave it to standard 3306 if MySQL is not running in server host)
- <ssh_port_ext> : server host port to access container thorugh SSH (must be different to standard 22 because most probably SHH:22 will be running in server host)
- <kiuwan_port_ext> : external port to access Kiuwan ( IMPORTANT: <kiuwan_port_ext> must match KIUWAN_PORT property of Dokerfile)
You can stop the Kiuwan container by issuing the following command:
docker stop <my_container_name>
Step 6.1 Execution in debug mode (only sshd)
Just in case you are running with problems while executing Kiuwan container, you can run it in debug mode.
This means to apply the configuration but not starting the services, allowing you to access the container through ssh.
After the container is built, you can execute (run) the Kiuwan container in debug mode by issuing the following command:
docker run --rm --name <my_container_name> \
-h <my_container_host_name> \
-v <server_host_mount_dir:container_mount_dir> \
-p <ssh_port_ext>:22 \
-d \
<image_name:version>
Step 6. Accessing Kiuwan On Premise
Once Kiuwan On Premise container is running, you can access it from a browser in the following URL:
http://<$KIUWAN_HOST>:<$KIUWAN_PORT>/saas
where KIUWAN_HOST and KIUWAN_PORT match the values of those properties as configured in Dockerfile
Advanced Configuration
Below table shows available configuration parameters :
Component | PropertyName (=default value) | Meaning |
---|---|---|
TimeZone | KIUWAN_TIMEZONE='UTC' | Timezone to be used by Kiuwan application. |
WildFly | KIUWAN_WILDFLY_JVMMINMEMORY=512M | Max and Min ammount of heap memory to be used by WidlFly. |
KIUWAN_WILDFLY_JVMMINMETASIZE=96M KIUWAN_WILDFLY_JVMMAXMETASIZE=512M | Max and min ammount of perm gen memory to be used by WildFly | |
MySQL | innodb_buffer_pool_size=2G | Default MySQL parameters used to create database instance. (see https://dev.mysql.com/doc/refman/5.6/en/ for reference) redis |
Redis | KIUWAN_REDIS_MAXCLIENTS=100 | Maximum number of Redis clients that could be handled simultaneously (https://redis.io/topics/clients) Max memory limit to be used by Redis server (https://redis.io/topics/config) |