<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Automatic Deployment to Kubernetes Cluster by Applying a New Learning Tool and Learning Processes</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tomáš Golis</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pavle Dakić</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Valentino Vranić</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Faculty of Informatics and Computing, Singidunum University</institution>
          ,
          <addr-line>Danijelova 32, Belgrade</addr-line>
          ,
          <country country="RS">Serbia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institute of Informatics, Information Systems and Software Engineering, Faculty of Informatics and Information Technologies, Slovak University of Technology in Bratislava</institution>
          ,
          <addr-line>Ilkovičova 2, 842 16 Bratislava 4</addr-line>
          ,
          <country country="SK">Slovakia</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>SQAMIA 2023: Workshop on Software Quality Analysis</institution>
          ,
          <addr-line>Monitoring, Improvement, and Applications</addr-line>
        </aff>
      </contrib-group>
      <fpage>174</fpage>
      <lpage>185</lpage>
      <abstract>
        <p>The rapid growth and widespread adoption of containerization technologies, such as Docker, and the increasing popularity of Kubernetes as a container orchestration platform have significantly shaped the landscape of modern software development and deployment. Containers have created a paradigm shift in application packaging, ofering a consistent and portable environment across diverse infrastructure setups. Meanwhile, Kubernetes has emerged as the dominant choice for managing containerized applications at scale, providing features such as automated scaling, load balancing, and fault tolerance. However, despite the numerous advantages containers and Kubernetes ofer, deploying applications to a Kubernetes cluster often poses challenges due to the steep learning curve and complex configuration requirements. To address these challenges, this paper aims to introduce a comprehensive learning tool that automates and simplifies the deployment process on Kubernetes clusters.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Kubernetes</kwd>
        <kwd>Container orchestration</kwd>
        <kwd>Docker image</kwd>
        <kwd>CI/CD</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        The primary objective of this research is to develop an intelligent system that simplifies and
streamlines the deployment workflow, allowing users to provision their applications on
Kubernetes efortlessly. Within this work, theoretical and practical aspects have been considered
with the possibilities of efective application within the academic and professional environment.
The proposed learning tool harnesses machine learning techniques, including natural language
processing and automated reasoning, to provide a user-friendly interface and automate various
deployment tasks. It encompasses a range of advanced features, such as intelligent
application packaging, automatic resource allocation, and configuration optimization, all aimed at
optimizing the deployment process which can be applied in many diferent industries [
        <xref ref-type="bibr" rid="ref1 ref2 ref3 ref4">1, 2, 3, 4</xref>
        ].
      </p>
      <p>
        The evaluation results demonstrate that the learning tool efectively minimizes the time
and efort needed to deploy applications to Kubernetes clusters. By automating repetitive and
error-prone tasks, developers and system administrators [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ] can dedicate more attention to
application development and innovative endeavors. By bridging the divide between developers
and Kubernetes, the learning tool plays a crucial role in promoting the broader adoption of
containerization technologies, ultimately expediting the pace of software delivery.
      </p>
      <p>The learning tool developed in this research aims to provide a seamless and eficient
deployment experience for applications on Kubernetes clusters. One of its key objectives is to automate
the deployment process for any application that includes a Dockerfile in its Git repository. By
leveraging the Dockerfile, the tool can extract the necessary information about the application’s
dependencies and build an appropriate container image. This automation eliminates manual
containerization intervention, saving developers and system administrators valuable time and
efort.</p>
      <p>
        Furthermore, the learning tool generates Helm charts that can be used by the package
manager for Kubernetes, enabling the easy installation, upgrading, and deletion of applications
on a Kubernetes cluster. The Helm charts generated by the tool encapsulate the application,
its configuration, and any required dependencies, providing a reproducible and standardized
deployment process [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. This ensures consistency and simplifies the management of applications
across diferent environments and Kubernetes clusters.
      </p>
      <p>
        In addition to creating Helm charts, the learning tool integrates with a Continuous
Integration/Continuous Deployment (CI/CD) pipeline [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. This integration automates applications’
building, testing, and deployment, providing a streamlined workflow from development to
production. The tool sets up the necessary pipeline configurations, incorporating steps for
building the container image, running tests, and deploying the application to the Kubernetes
cluster using a popular CI / CD system, while theoretical analysis was discussed and defended
in our previous publications [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ].
      </p>
      <p>
        Applying an operation automation approach can be very useful for a pragmatic engineer who
wants to learn as soon as possible and be efective in his work without the limitations that arise
during learning and finding the appropriate directly applicable instructions. The application of
this tool helps to solve errors during cluster setup and provides a process that can be repeated
very little and monitored through diferent control panels and dashboards [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>The work is organized in the following way using sections: Materials and Methods, Results
and Conclusions.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Materials and Methods</title>
      <p>Within this research work, we try to apply practical methods with partial processing of numerical
data collected inside the cluster itself. The material was created on the basis of the research
carried out together with the cloud cluster and the connection of obtained information within
the laboratory environment. the cluster itself. The material was created on the basis of the
research carried out together with the cloud cluster and the connection of obtained information
within the laboratory environment. The main contribution refers to the presentation of the
obtained results and tests carried out within the specified environment. Basic statistical methods
were used to display the results in the form of relevant graphs and data presentation through a
tabular display.</p>
      <sec id="sec-2-1">
        <title>2.1. Motivation</title>
        <p>The underlying motivation driving this paper is to empower students and developers by
providing them with a platform to enhance their understanding of the deployment process. By
engaging with this platform, they can actively participate in the deployment of their applications
while also gaining valuable experience in customizing the deployment process to meet the
unique requirements of their applications. This hands-on approach encourages learning through
practical implementation and fosters a deeper understanding of the intricacies involved in
deploying applications efectively. Ultimately, our goal is to equip students and developers with
the knowledge and skills to navigate the deployment landscape confidently and proficiently.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Selection Criteria, Keywords, and Databases</title>
        <p>During our exploration of container orchestration technology and the examination of diferent
principles for automatic deployment, we identified specific keywords to guide our literature
search:
• Kubernetes in the cloud
• Learning CI/CD with Kubernetes
• Using Docker image for cloud computing in clusters
• Container Orchestration in Public and Hybrid Cloud</p>
        <p>The resources used in this research paper were sourced from public scientific research
databases, as well as technology-related websites, focusing on the specified keywords. These
materials were collected within the time frame of 2018 to 2023 for the purpose of writing this
article.</p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Literature Review</title>
        <p>
          To better realize the process of creating tools for learning the DevOps field and other related
technologies, related works that deal with the problem of learning and transferring knowledge
to users were reviewed. By incorporating these authoritative sources, this research builds on
the existing body of knowledge in the field, ensuring a solid foundation and contributing to the
academic discourse surrounding the topic. The research was carried out based on the findings
and insights of two notable publications [
          <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
          ]. These findings have been referenced in the
Introduction, highlighting their relevance to the research topic. In paper [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], the authors
dive into specific aspects of the subject matter, providing valuable analysis and observations.
Similarly, the authors [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] ofer a comprehensive exploration of related concepts, shedding light
on key considerations and potential solutions [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. The authors of the [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] study employ a
methodology that helps developers tackle the Fog Service Placement Problem. This problem
involves finding the best possible mapping between IoT applications and computational resources.
On the other hand, the authors [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] propose a deterministic variant of Local Interpretable
Model-Agnostic Explanations (LIME), a popular technique used to enhance the interpretability
and explainability of black-box Machine Learning (ML) algorithms. Naturally, this requires
a robust algorithm capable of accurately reconstructing road networks from satellite images,
which can then be utilized as training samples.
        </p>
        <p>
          Understanding the complexity of resource distribution and hardware load also means looking
at systems from the field of Wireless Sensor Networks (WSNs) for later direct physical use. In
this connection, we also considered systematic studies of diferent fuzzy and hybrid fuzzy-based
approaches for handling clustering [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. Data-driven scientific applications can benefit from
these frameworks with the ability to trigger scalable computation in response to incoming
ifles processing workloads [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. In some of the collected research [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] authors introduce an
open-source framework to achieve on-premises serverless computing for event-driven data
processing applications that features: i) the automated provisioning of an elastic Kubernetes
cluster that can grow and shrink, in terms of the number of nodes, on multi-Clouds; ii) the
automated deployment of a FaaS framework together with a data storage back-end that triggers
events upon file uploads; iii) a service that provides a REST API to orchestrate the creation of
such functions; and iv) a graphical user interface that provides a unified entry point to interact
with the aforementioned services.
        </p>
        <p>
          The authors [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] integrate DBSCAN and an Artificial Neural Network capable of automatic
route design of ships based on massive AIS data between certain ports. The main objective
of [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] is to recognize the key regions by applying the DBSCAN algorithm and then connect
these regions automatically by measuring the similarity of the cluster. A fully automatic
machine learning platform is designed, which manages server resources uniformly, and users
describe the required resources through configuration files. Authors in [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] propose a Cloud
infrastructure for the automatic deployment of applications using the services of Kubernetes,
Docker, Ansible, and Slurm. Based on multiple node types with a preloaded image (VM or
Docker) [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] propose an improved automatic scaling scheme that combines the advantages of
diferent types of nodes in the scaling process to conduct experiments with an actual cluster
on the IBM Cloud platform [
          <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
          ]. They are trying to use a delivery cloud platform based on
microservices with dedicated services for autonomous driving in order to deploy information
to the delivery robot. The authors of the study [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] describe the design and implementation of
an ML-based detection system of anomalous pods in a Kubernetes cluster by monitoring Linux
kernel system calls (syscalls). Some of the solutions are proposed using a framework based
on Markov Decision Process (MDP) and Q-learning to automatically generate optimal defense
solutions for networked system states [
          <xref ref-type="bibr" rid="ref23 ref24">23, 24</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Results</title>
      <p>Following the distribution of the tool among our colleagues, we conducted an external
evaluation to assess its performance and efectiveness among experienced and inexperienced students.
Through this evaluation process, we arrived at the conclusive finding that the tool functions
as intended, successfully facilitating the deployment of user applications to the cluster.
Additionally, we observe that the tool enables users to personalize and customize their deployments
according to their specific requirements. This conclusion was reached through rigorous testing
and feedback from our colleagues who utilized the tool. They reported positive outcomes,
highlighting the tool’s capability to seamlessly handle the deployment process and enabling
users to make necessary adjustments based on their application’s unique needs.</p>
      <p>These findings validate the eficacy of the tool in achieving its primary objectives and reinforce
its value as a reliable solution for deploying applications to a cluster. The positive feedback
received from our colleagues further strengthens our confidence in the tool’s functionality. It
confirms its potential as a valuable asset for developers and users seeking to streamline and
customize their application deployments 1.</p>
      <sec id="sec-3-1">
        <title>3.1. Implementation Environment</title>
        <p>Since the Kubernetes cluster needs to be available and reachable to users at all times, as an
implementation environment, we chose a Google Cloud Provider Virtual Machine with Ubuntu
22.04.2 LTS, 4 virtual CPUs, and 16GB of RAM memory. We configured the egress and ingress to
allow HTTP and HTTPS communication on ports 22,443,80,8080, and for the user’s applications,
we opened ports from 31930 to 32000.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Kubernetes Configuration</title>
        <p>We provisioned a Kubernetes cluster of version v1.27.0 through the kubeadm init command.
The cluster configuration included utilizing the cri-dockerd network adapter, enabling seamless
integration between Kubernetes and the Docker engine. Facilitating external communication
with the Kubernetes cluster from beyond the virtual machine (VM), I enhanced an image named
dtzar/helm-kubectl:3.11.2. This enhancement involved the integration of the requisite SSH key
to facilitate direct retrieval of the Kube config from the VM. This specialized image finds its
principal application within CI/CD pipelines, specifically during deployment.
Ensuring the availability of the Kubernetes control plane was paramount during the setup
process. This involved ensuring that the control plane could be accessed from outside the virtual
machine, allowing GitLab/GitHub runners to utilize Kubectl for access. To achieve this, we
needed to set up an Nginx configuration to expose the control plane on port 6443.</p>
        <p>Listing 1: Dockerfile for xgolis/deployimage
FROM dtzar/helm-kubectl:3.11.2
COPY ./id_rsa ~/.ssh
RUN dos2unix ~/.ssh/id_rsa
3.2.1. MetalLB
MetalLB is a necessary addition to Kubernetes in bare-metal environments as it lacks a built-in
Load Balancer implementation to expose services outside the virtual machine (VM). MetalLB
ofers a crucial capability in load-balancing Kubernetes services without relying on external
hardware. Instead, it leverages the available network resources within the Kubernetes cluster to
create a virtual network load balancer, enabling the distribution of trafic to the appropriate pods.
This flexibility allows MetalLB to be employed in various environments, including on-premises
data centers and public cloud platforms.</p>
        <p>By configuring MetalLB version 8.2, services created within the cluster will receive external
IP addresses, enabling accessibility outside the VM through a specific port defined in a generated
Helm chart. The port value is specified in the Helm chart’s values for microservices to obtain
an external IP address.yaml file must match the port on which the application runs within the
container.</p>
        <p>Listing 2: MetalLB yaml configuration. Source: author’s contribution
--apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 10.132.0.0/20</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Initial Deployment Process</title>
        <p>The initial deployment is for users to be able to deploy their application and generate Helm
charts and CI/CD pipelines for GitHub and GitLab. The first step involves utilizing a
frontend microservice for the initial deployment process. Users are required to provide specific
information, such as a Git repository URL, username, application name, Git token, and the
port on which the application operates. This information is then used to send a request to an
ImageBuilder microservice. We have created four microservices in order to simplify the initial
deployment process.</p>
        <sec id="sec-3-3-1">
          <title>3.3.1. WebApp Microservices</title>
          <p>The main objective of the Web interface is to allow users to deploy their applications with
minimal efort. Once users have filled out the necessary information and clicked the "Deploy"
button, the application initiates a request to an ImageBuilder. Once the image is built, another
request is sent to a Kubemanager, instructing it to create a namespace using the user’s name and
deploy the application within it. Subsequently, the web application provides the user with the
URL to access their deployed application and allows the user to download GitHub/GitLab CI/CD
pipelines for his application. Additionally, the application ofers a URL to access the Kubernetes
cluster dashboard, which can be reached at http://&lt;IP_OF_VM&gt;:32407/. This dashboard gives
users additional information and controls over their applications deployed within the Kubernetes
environment.</p>
        </sec>
        <sec id="sec-3-3-2">
          <title>3.3.2. ImageBuilder Microservices</title>
          <p>When a request is made to the ImageBuilder microservice, it responds to several tasks. First,
it utilizes the provided Git token to pull the specified Git repository. The microservice then
takes the pulled files and creates a tar archive. Next, ImageBuilder builds a Docker image,
using the previously created tar archive as the context. This Docker image encapsulates all the
dependencies and configurations required to run the application successfully. Once the Docker
image is constructed, the ImageBuilder microservice pushes it to the Docker Hub repository.
The Docker image is prefixed with xgolis/ to ensure proper identification and organization. This
prefix helps to distinguish and categorize the image within the Docker Hub repository.</p>
        </sec>
        <sec id="sec-3-3-3">
          <title>3.3.3. HelmCICDGenerator Microservice</title>
          <p>HelmCICDGenerator microservice generates and modifies Helm charts and CI/CD pipelines for
the user’s application. Automated CI/CD pipelines are generated by modifying environmental
variables in template pipelines. These templates are designed to work seamlessly with both
the GitHub and GitLab pipelines. To enable users to utilize these pipelines efectively, they
need to insert their docker username (as DOCKERHUB_USERNAME) and docker token (as
DOCKERHUB_TOKEN) into the respective GitHub or GitLab variables. Generated Github
CICD 3 consists of 2 jobs: docker (lines 10-32) and deploy (lines 34-59).</p>
        </sec>
      </sec>
      <sec id="sec-3-4">
        <title>3.4. Docker Job</title>
        <p>Docker job runs on image ubuntu:latest and is used to build and push an image to a Docker hub.</p>
        <p>The pipeline performs the following actions:
• Checkout: It retrieves a Git repository onto a Git runner, which serves as the environment
for executing the pipeline
• Set up Docker Build: It configures the Docker engine to utilize Docker Build
• Login to Docker Hub: It authenticates with Docker Hub using the provided credentials.</p>
        <p>Users need to set up these credentials in GitHub Actions variables for the pipeline to log
in to Docker Hub successfully
• Build and push: It constructs an image using the specified context and proceeds to push
it to the user’s Docker Hub repository. The image is prefixed with the user’s Docker Hub
name, and latest is assigned as the tag.</p>
      </sec>
      <sec id="sec-3-5">
        <title>3.5. Deploy Job</title>
        <p>The deploy jobs rely on the xgolis/deployimage 1 image to establish connectivity with a virtual
machine (VM) hosting the Kubernetes cluster. These jobs are responsible for deploying a user’s
application to the cluster.</p>
        <p>The steps involved in the deployment process are as follows:
• Checkout code: It retrieves the code from a Git repository onto a Git runner, where the
pipeline is executed.
• Deployment: This step executes a series of bash commands, including:
1. Line 46: Modifies the permissions of the SSH key.
2. Line 47: Adds the VM to the list of known hosts.
3. Line 48: Creates a .kube directory.
4. Line 49: Downloads the Kube config from the VM, including the necessary
certificates.
5. Line 50: Sets the appropriate cluster IP in the Kube config.
6. Line 51: Configures the Kube config to skip TLS verification.
7. Line 52: Displays the deployed pods within the user’s namespace.
8. Lines 54-59: Utilizes helm upgrade to apply all the Helm charts to the cluster while
specifying values from the values.yaml chart.</p>
        <p>These steps collectively ensure the successful deployment of the user’s application to the
Kubernetes cluster.</p>
        <p>Listing 3: Github CI/CD pipeline generated by HelmCICDGenerator service. Source: author’s
contribution
1 name: CI
2
3 env:
4 NAMESPACE: exampleUser
5 APPNAME: exampleApp
6
7 on: [push]
8
9 jobs:
10 docker:
11 runs-on: ubuntu-latest
12 steps:
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
name: Deployment
run: |
chmod 400 /root/.ssh/id_rsa
ssh-keyscan &lt;IP\_OF\_VM&gt; &gt;&gt; /root/.ssh/known_hosts
mkdir ~/.kube
scp -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa xgolis@&lt;IP\_OF\
_VM&gt;:/home/xgolis/.kube/config ~/.kube
kubectl config set-cluster kubernetes --server=https://&lt;IP\_OF\_VM
&gt;:6443
kubectl config set-cluster kubernetes --insecure-skip-tls-verify
kubectl get pods --namespace=${{env.NAMESPACE}}
helm upgrade ${{env.APPNAME}} ./${{env.APPNAME}} \
--install -n ${{env.NAMESPACE}} \
--set "image.fullImage=${{ secrets.DOCKERHUB_USERNAME }}/${{env.</p>
        <p>APPNAME}}:latest" \
--set "app.namespace=${{env.NAMESPACE}}" \
--set "app.examplePass=${{env.examplePass}}" \
--set "app.examplePassword=pass"</p>
        <sec id="sec-3-5-1">
          <title>3.5.1. KubeManger Microservices</title>
          <p>Once ImageBuilder generates and publishes an image to the Docker Hub, WebApp triggers
a request to the KubeManager microservice. The role of KubeManager is to guarantee a
successful deployment by first checking if a namespace with the user’s name exists. If it does not,
KubeManager creates the namespace. Then, it obtains a Helm chart from HelmCICDGenerator
and utilizes it to generate a deployment and service. This results in the creation of a pod with
an external IP.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Conclusions</title>
      <p>In summary, we have explored the domain of automatic deployment to Kubernetes clusters
by using an innovative learning tool and applying novel learning processes. Valuable insights
were obtained through a thorough examination of container orchestration technology and an
exploration of various automatic deployment principles. The study efectively identified crucial
keywords, facilitating an extensive literature search and ensuring a comprehensive grasp of the
subject matter. The research findings shed light on the potential of harnessing advanced learning
techniques to streamline and optimize the deployment process within Kubernetes clusters.
This investigation significantly contributes to the field by ofering valuable recommendations
and guidelines for practitioners aiming to enhance their deployment practices in Kubernetes
environments. By integrating the new learning tool and learning processes, organizations
can reap the benefits of improved eficiency, reliability, and scalability in their deployment
workflows, ultimately leading to enhanced software delivery and operational excellence.</p>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgments</title>
      <p>The work reported here received funding from the European Union’s Horizon 2020 research and
innovation program under grant agreement No. 101004887 (rurAllure) and from the Operational
Programme Integrated Infrastructure for the project: Support of Research Activities of Excellence
Laboratories STU in Bratislava (ITMS code: 313021BXZ1), co-funded by the European Regional
Development Fund (ERDF).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>P.</given-names>
            <surname>Dakić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Živković</surname>
          </string-name>
          ,
          <article-title>An overview of the challenges for developing software within the ifeld of autonomous vehicles</article-title>
          ,
          <source>in: 7th Conference on the Engineering of Computer Based Systems, ECBS</source>
          <year>2021</year>
          ,
          <article-title>Association for Computing Machinery</article-title>
          , New York, NY, USA,
          <year>2021</year>
          . URL: https://doi.org/10.1145/3459960.3459972. doi:
          <volume>10</volume>
          .1145/3459960.3459972.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>L.</given-names>
            <surname>Benova</surname>
          </string-name>
          , L. Hudec,
          <article-title>Detecting anomalous user behavior from NGINX web server logs</article-title>
          ,
          <source>in: 2022 IEEE Zooming Innovation in Consumer Technologies Conference (ZINC)</source>
          , IEEE,
          <year>2022</year>
          . doi:
          <volume>10</volume>
          .1109/zinc55034.
          <year>2022</year>
          .
          <volume>9840589</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>I.</given-names>
            <surname>Stupavský</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Dakić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vranić</surname>
          </string-name>
          ,
          <article-title>The impact of fake news on traveling and antisocial behavior in online communities: Overview</article-title>
          ,
          <source>Applied Sciences</source>
          <volume>13</volume>
          (
          <year>2023</year>
          )
          <article-title>11719</article-title>
          . doi:
          <volume>10</volume>
          . 3390/app132111719.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>I.</given-names>
            <surname>Stupavský</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Dakić</surname>
          </string-name>
          ,
          <source>Antisocial Behavior and the Dopamine Loop on Diferent Technological Platforms and Industries: An Overview</source>
          , Springer Nature Singapore,
          <year>2023</year>
          , pp.
          <fpage>471</fpage>
          -
          <lpage>481</lpage>
          . doi:
          <volume>10</volume>
          .1007/
          <fpage>978</fpage>
          -981-99-3236-8_
          <fpage>37</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P.</given-names>
            <surname>Dakić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Todorović</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Petrović</surname>
          </string-name>
          ,
          <article-title>Investment reasons for using standards compliance in autonomous vehicles</article-title>
          ,
          <source>ESD Conference, Belgrade 75th International Scientific Conference on Economic and Social Development Development</source>
          , ESD Conference Belgrade,
          <fpage>02</fpage>
          -
          <lpage>03</lpage>
          December, 2021 MB University, Teodora Drajzera
          <volume>27</volume>
          , 11000 Belgrade, Serbia; (
          <year>2021</year>
          ). URL: https://www.shorturl.at/diMRS.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>L.</given-names>
            <surname>Benova</surname>
          </string-name>
          , L. Hudec,
          <article-title>Web server load prediction and anomaly detection from hypertext transfer protocol logs</article-title>
          ,
          <source>International Journal of Electrical and Computer</source>
          Engineering (IJECE)
          <volume>13</volume>
          (
          <year>2023</year>
          )
          <article-title>5165</article-title>
          . doi:
          <volume>10</volume>
          .11591/ijece.v13i5.
          <fpage>pp5165</fpage>
          -
          <lpage>5178</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>P.</given-names>
            <surname>Dakić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Todorović</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vranić</surname>
          </string-name>
          ,
          <article-title>Financial sustainability of automotive software compliance and industry quality standards</article-title>
          ,
          <source>in: Proceedings of Eighth International Congress on Information and Communication Technology</source>
          , Springer Nature Singapore,
          <year>2023</year>
          , pp.
          <fpage>477</fpage>
          -
          <lpage>487</lpage>
          . doi:
          <volume>10</volume>
          .1007/
          <fpage>978</fpage>
          -981-99-3091-3_
          <fpage>39</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>N.</given-names>
            <surname>Hroncova</surname>
          </string-name>
          , P. Dakic,
          <article-title>Research study on the use of CI/CD among slovak students</article-title>
          ,
          <source>in: 2022 12th International Conference on Advanced Computer Information Technologies (ACIT)</source>
          , IEEE,
          <year>2022</year>
          . doi:
          <volume>10</volume>
          .1109/acit54803.
          <year>2022</year>
          .
          <volume>9913113</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>T.</given-names>
            <surname>Golis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Dakić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vranić</surname>
          </string-name>
          ,
          <article-title>Creating microservices and using infrastructure as code within the CI/CD for dynamic container creation</article-title>
          ,
          <source>in: 2022 IEEE 16th International Scientific Conference on Informatics (Informatics)</source>
          , IEEE,
          <year>2022</year>
          . doi:
          <volume>10</volume>
          .1109/informatics57926.
          <year>2022</year>
          .
          <volume>10083442</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>P.</given-names>
            <surname>Dakić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Todorović</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vranić</surname>
          </string-name>
          ,
          <article-title>Financial justification for using ci/cd and code analysis for software quality improvement in the automotive industry</article-title>
          ,
          <source>in: 2022 IEEE Zooming Innovation in Consumer Technologies Conference (ZINC)</source>
          ,
          <year>2022</year>
          , pp.
          <fpage>149</fpage>
          -
          <lpage>154</lpage>
          . doi:
          <volume>10</volume>
          . 1109/ZINC55034.
          <year>2022</year>
          .
          <volume>9840702</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>V.</given-names>
            <surname>Todorović</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Dakić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Aleksić</surname>
          </string-name>
          ,
          <article-title>Company management using managerial dashboards and analytical software</article-title>
          ,
          <source>ESD Conference, Belgrade 75th International Scientific Conference on Economic and Social Development Development</source>
          , ESD Conference Belgrade,
          <fpage>02</fpage>
          -
          <lpage>03</lpage>
          December, 2021 MB University, Teodora Drajzera
          <volume>27</volume>
          , 11000 Belgrade, Serbia; (
          <year>2021</year>
          ). URL: https://shorturl.at/diMRS.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Chalás</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Stupavský</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vranić</surname>
          </string-name>
          ,
          <article-title>Discussion manipulation, language and domain dependent models: An overview</article-title>
          ,
          <source>in: 2023 Zooming Innovation in Consumer Technologies Conference (ZINC)</source>
          , IEEE,
          <year>2023</year>
          . doi:
          <volume>10</volume>
          .1109/zinc58345.
          <year>2023</year>
          .
          <volume>10174128</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>S.</given-names>
            <surname>Venticinque</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Amato</surname>
          </string-name>
          ,
          <article-title>A methodology for deployment of IoT application in fog</article-title>
          ,
          <source>Journal of Ambient Intelligence and Humanized Computing</source>
          <volume>10</volume>
          (
          <year>2018</year>
          )
          <fpage>1955</fpage>
          -
          <lpage>1976</lpage>
          . doi:
          <volume>10</volume>
          .1007/ s12652-018-0785-4.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Zafar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. M.</given-names>
            <surname>Khan</surname>
          </string-name>
          ,
          <article-title>Dlime: A deterministic local interpretable model-agnostic explanations approach for computer-aided diagnosis systems</article-title>
          ,
          <year>2019</year>
          . doi:
          <volume>10</volume>
          .48550/ARXIV.
          <year>1906</year>
          .
          <volume>10263</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>R.</given-names>
            <surname>Sharma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vashisht</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Singh</surname>
          </string-name>
          ,
          <article-title>Node clustering in wireless sensor networks using fuzzy logic: Survey</article-title>
          , in: 2018
          <source>International Conference on System Modeling &amp; Advancement in Research Trends (SMART)</source>
          , IEEE,
          <year>2018</year>
          . doi:
          <volume>10</volume>
          .1109/sysmart.
          <year>2018</year>
          .
          <volume>8746977</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Perez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Risco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Naranjo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Caballer</surname>
          </string-name>
          , G. Molto,
          <article-title>On-premises serverless computing for event-driven data processing applications</article-title>
          ,
          <source>in: 2019 IEEE 12th International Conference on Cloud Computing (CLOUD)</source>
          , IEEE,
          <year>2019</year>
          . doi:
          <volume>10</volume>
          .1109/cloud.
          <year>2019</year>
          .
          <volume>00073</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Wen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Sui</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Xiao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Chen</surname>
          </string-name>
          , D. Han,
          <string-name>
            <surname>Y. Zhang,</surname>
          </string-name>
          <article-title>Automatic ship route design between two ports: A data-driven method</article-title>
          ,
          <source>Applied Ocean Research</source>
          <volume>96</volume>
          (
          <year>2020</year>
          )
          <article-title>102049</article-title>
          . doi:
          <volume>10</volume>
          .1016/j.apor.
          <year>2019</year>
          .
          <volume>102049</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>R.</given-names>
            <surname>Doukha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Mahmoudi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zbakh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Manneback</surname>
          </string-name>
          ,
          <article-title>Deployment of containerized deep learning applications in the cloud</article-title>
          ,
          <source>in: 2020 5th International Conference on Cloud Computing and Artificial Intelligence: Technologies and Applications (CloudTech)</source>
          , IEEE,
          <year>2020</year>
          . doi:
          <volume>10</volume>
          .1109/cloudtech49835.
          <year>2020</year>
          .
          <volume>9365868</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Wu</surname>
          </string-name>
          ,
          <article-title>A cluster autoscaler based on multiple node types in kubernetes</article-title>
          ,
          <source>in: 2020 IEEE 4th Information Technology, Networking, Electronic and Automation Control Conference (ITNEC)</source>
          , IEEE,
          <year>2020</year>
          . doi:
          <volume>10</volume>
          .1109/itnec48623.
          <year>2020</year>
          .
          <volume>9084706</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>S.</given-names>
            <surname>Choochotkaew</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Chiba</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Trent</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Amaral</surname>
          </string-name>
          ,
          <article-title>Run wild: Resource management system with generalized modeling for microservices on cloud</article-title>
          ,
          <source>in: 2021 IEEE 14th International Conference on Cloud Computing (CLOUD)</source>
          , IEEE,
          <year>2021</year>
          . doi:
          <volume>10</volume>
          .1109/cloud53861.
          <year>2021</year>
          .
          <volume>00079</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Yin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <article-title>A delivery robot cloud platform based on microservice</article-title>
          ,
          <source>Journal of Robotics</source>
          <year>2021</year>
          (
          <year>2021</year>
          )
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          . doi:
          <volume>10</volume>
          .1155/
          <year>2021</year>
          /6656912.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>R. R.</given-names>
            <surname>Karn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kudva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Suneja</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. M.</given-names>
            <surname>Elfadel</surname>
          </string-name>
          ,
          <article-title>Cryptomining detection in container clouds using system calls and explainable machine learning</article-title>
          ,
          <source>IEEE Transactions on Parallel and Distributed Systems</source>
          <volume>32</volume>
          (
          <year>2021</year>
          )
          <fpage>674</fpage>
          -
          <lpage>691</lpage>
          . doi:
          <volume>10</volume>
          .1109/tpds.
          <year>2020</year>
          .
          <volume>3029088</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>T.</given-names>
            <surname>Smolen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Benova</surname>
          </string-name>
          ,
          <article-title>Comparing autoencoder and isolation forest in network anomaly detection</article-title>
          ,
          <source>in: 2023 33rd Conference of Open Innovations Association (FRUCT)</source>
          , IEEE,
          <year>2023</year>
          . doi:
          <volume>10</volume>
          .23919/fruct58615.
          <year>2023</year>
          .
          <volume>10143005</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. Y.</given-names>
            <surname>Enoch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kim</surname>
          </string-name>
          ,
          <article-title>Markov decision process for automatic cyber defense</article-title>
          ,
          <year>2022</year>
          . doi:
          <volume>10</volume>
          .48550/ARXIV.2207.05436.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>