add factory docs
@@ -22,15 +22,22 @@
|
||||
identifier = "enterprise"
|
||||
url = "/enterprise/"
|
||||
|
||||
|
||||
[[factory]]
|
||||
name = "Factory"
|
||||
weight = 14
|
||||
identifier = "factory"
|
||||
url = "/factory/"
|
||||
|
||||
[[vault]]
|
||||
name = "Vault"
|
||||
weight = 14
|
||||
weight = 15
|
||||
identifier = "vault"
|
||||
url = "/vault/"
|
||||
|
||||
[[hub]]
|
||||
name = "Hub"
|
||||
weight = 15
|
||||
weight = 16
|
||||
identifier = "hub"
|
||||
url = "/hub/"
|
||||
|
||||
|
||||
591
content/enterprise/first-things-first/hub-with-vault.svg
Normal file
|
After Width: | Height: | Size: 118 KiB |
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: "First things first"
|
||||
description: "A revolutionary design to scale your video analytics and video surveillance landscape."
|
||||
lead: "A revolutionary design to scale your video analytics and video surveillance landscape."
|
||||
description: "Kerberos Enterprise Suite - A revolutionary design to scale your video landscape."
|
||||
lead: "Kerberos Enterprise Suite - A revolutionary design to scale your video landscape."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
@@ -13,44 +13,62 @@ weight: 300
|
||||
toc: true
|
||||
---
|
||||
|
||||
Over the years Kerberos evolved into a mature and stable solution. Lots of people and companies started to adopt the system, and requested enhancements. Despite the fact that Kerberos Open Source is stable and feature rich, every
|
||||
solution has its limitations, especially if you aim to scale it.
|
||||
Kerberos Enterprise Suite is a consequence of supporting enterprises and customers for more than 7 years in the video analytics and video streaming industry. Kerberos Enterprise Suite is a collection of best practices supporting the ever-growing needs of enterprises rolling out huge amounts of video streams, requiring extreme flexibility in terms of deployment and customization, and putting strong focus on video analytics and more specific machine learning and AI.
|
||||
|
||||
That being said, Kerberos Open Source is perfect when monitoring a limited set of surveillance cameras, but it doesn't scale well if you plan to monitor dozens or hundreds of surveillance cameras. Although Kerberos Open Source ships
|
||||
as a Docker image, it has no high availability or fail over functionality.
|
||||
As a result to the developments of the Kerberos Agent, previously called Kerberos Open Source, the Kerberos Enterprise Suite is here to enable more flexibility through concepts such as Bring Your Own Cloud, Bring Your Own Storage and Bring Your Own Technology.
|
||||
|
||||
Independently we've seen many vendors developing their own custom VMS solutions, usually tightly coupled to there proprietary surveillance hardware, which are delivered to enterprise customers as closed software solutions with limited API's and/or messaging capabilities.
|
||||
Kerberos Enterprise Suite is taking the Kerberos Agent to another level, by building additional tools on top such as [Kerberos Vault](/vault/first-things-first) and [Kerberos Hub](/vault/first-things-first). It scales your Kerberos Agents through the concept of [Kerberos Factory](/factory/first-things-first) which helps to deploy your Kerberos Agents in bulk.
|
||||
|
||||
Due to these reasons we have developed Kerberos Enterprise, Kerberos Storage and Kerberos Cloud, which is an open scalable solution stack, suitable for your ever growing video surveillance landscape, but having extensibility and integration built-in from the ground up.
|
||||
## Kubernetes: flexible and scale
|
||||
|
||||
The major key differentiators compared to to other solutions are:
|
||||
Kubernetes is a proven, and a widely spread technology which is gaining more momentum every single day. Although many enterprises still have to adopt and embrace Kubernetes, many already do. It's just a matter of time.
|
||||
|
||||
- Scalability with Kubernetes,
|
||||
- Open API's with well documented Swagger API's,
|
||||
- Host anywhere, in the cloud or on premise,
|
||||
- Integration and extension, allowing to build custom apps, ML services and more.
|
||||
{{< figure src="kubernetes-enterprise.svg" alt="" caption="" class="stretch">}}
|
||||
|
||||
{{< vimeo id="405037695" class="responsive-video ratio-16by10" title="Kerberos Enterprise introduction" >}}
|
||||
Kubernetes sits at the center of the Kerberos Enterprise Suite. Every solution within the suite is build on top of Kubernetes, so it allows you to bring your own cloud, bring your own storage and bring your own technology.
|
||||
|
||||
### Bring your own cloud
|
||||
|
||||
## Kubernetes
|
||||
By using Kubernetes as a basis for [Kerberos Factory](/factory/first-things-first), [Kerberos Vault](/vault/first-things-first) and [Kerberos Hub](/vault/first-things-first), all solutions can be deployed where your Kubernetes cluster can be deployed. This means you can deploy at the edge, in a private or public cloud. As the solutions are modular build, you can also have hybrid deployments. For example processing at the edge and visualisation in a cloud environment, or storage at the edge and limited storage in a cloud environment.
|
||||
|
||||
To provide our customer with the high availability and fail over requirements they have, Kerberos Enterprise was built on top of Kubernetes (k8s). This container orchestrator allows us to scale a video surveillance landscape horizontally, and deliver a never-seen high available video surveillance system.
|
||||
### Bring your own storage
|
||||
|
||||
{{< figure src="../../prologue/deployments/onpremise-more-then-5.svg" alt="When you start having bigger deployments it's recommended to go with a Kubernetes approach." caption="When you start having bigger deployments it's recommended to go with a Kubernetes approach." class="stretch">}}
|
||||
One thing you don't want, is to store your most precious data on someone else storage. We believe you should be the one and only owner of your data, and therefore we have build [Kerberos Vault](/vault/first-things-first), in such a way that you bring you own storage. Bringing your own storage is great, but actually you want to bring multiple storage providers, for example edge storage and cloud storage. The concept of keeping a vast amount of storage at the edge, and [forward only the most important data](/vault/forwarding/) to a cloud environment, is a core feature of [Kerberos Vault](/vault/first-things-first).
|
||||
|
||||
Kerberos Enterprise is installed inside a Kubernetes cluster. It will create pods/deployments for every surveillance camera you want to monitor. Kubernetes will scale and distrubute these pods across your nodes (VM's/Baremetal machines).
|
||||
### Bring your own technology
|
||||
|
||||
Nodes inside your cluster can fail or crash, Kubernetes will make sure the Kerberos pods running on the failed nodes will be deployed to healthy node. This, to make sure the monitoring of your video surveillance cameras continues seamlessly.
|
||||
Kubernetes brings a lot of advantages in terms of deployment, scalability, resilience, and also high availability, but there is more. Due to the nature of Kubernetes, enterprises and administrators can bring any tool, service, solution or application inside their cluster. As the Kubernetes Enterprise Suite has specific dependencies, there is no need to install already existing tools, but you can reuse the ones you already have.
|
||||
|
||||
By having the power to add nodes to your cluster, you can anticipate to the ever growing need of your surveillance cameras. With the Kubernetes tools you can monitor your cluster and get into the details.
|
||||
Next to that, all solutions within the Kerberos Enterprise Suite ships Swagger APIs by default. This allows you to extend or integrate your own solutions or extend them with the technology you already master or prefer within your organisation.
|
||||
|
||||
## Cloud or on premise
|
||||
## The solution stack
|
||||
|
||||
You install Kerberos Enterprise inside a Kubernetes cluster, but there are no limitations where this cluster will be actually running. This means that whatever security policy you have within your company, you can run it where you want: on-premise, public cloud, private cloud, etc.
|
||||
The Kerberos Enterprise Suite is a collection of modular solutions that can be deployed wherever you want. It contains three crucial parts.
|
||||
|
||||
{{< figure src="../../prologue/deployments/cloud-more-then-5.svg" alt="As previous mentioned you could process them in a Kubernetes cluster in the cloud." caption="As previous mentioned you could process them in a Kubernetes cluster in the cloud." class="stretch">}}
|
||||
- Kerberos Agents and Kerberos Factory
|
||||
- Kerberos Vault
|
||||
- Kerberos Hub
|
||||
|
||||
## Licensing
|
||||
### Kerberos Agents and Kerberos Factory
|
||||
|
||||
Kerberos Enterprise is publicly available and **does not** require a license key to operate correctly. Everyone can install the Kerberos Enterprise component free of charge.
|
||||
An agent is deployed for each video stream. An agent is responsible for a specific video stream: recording, livestreaming and alerting. Kerberos Factory is used to scale and deploy the Kerberos Agents in your Kubernetes clusters by providing a UI.
|
||||
|
||||
{{< figure src="kerberos-enterprise-suite.svg" alt="Kerberos Enterprise Suite contains Kerberos Agent, Kerberos Factory, Kerberos Vault and Kerberos Hub." caption="Kerberos Enterprise Suite contains Kerberos Agent, Kerberos Factory, Kerberos Vault and Kerberos Hub." class="stretch">}}
|
||||
|
||||
### Kerberos Vault
|
||||
|
||||
Kerberos Agents are persisting their recordings at a central place, which we call Kerberos Vault. Within Kerberos Vault you set up multiple edge or cloud storage providers, to persist your data at the edge or in the cloud.
|
||||
|
||||
{{< figure src="vault-edge-cloud-storage.svg" alt="Bring your own storage using Vault" caption="Bring your own storage using Kerberos Vault" class="stretch">}}
|
||||
|
||||
Events and messages [are sent through integrations](/vault/integrations/) to initiate custom processes and applications; for example [a machine learning model](/vault/machine-learning/). Edge and cloud storage are combined and can be enabled in forwarding mode, so only a subset of recordings is persisted in cloud storage.
|
||||
|
||||
{{< figure src="vault-forwarding-chaining.svg" alt="Synchronise recordings between multiple Kerberos Vaults." caption="Synchronise recordings between multiple Kerberos Vaults." class="stretch">}}
|
||||
|
||||
### Kerberos Hub
|
||||
|
||||
[Kerberos Hub](/vault/first-things-first) is a scale UI that consolidates the entire Kerberos ecosystem. It shows livestreams/alerts from your Kerberos Agents and recordings stored in Kerberos Vault through a single pane of glass.
|
||||
|
||||
[Kerberos Hub](/vault/first-things-first) is build out of modular and scalable microservices which you can install and scale independently, wherever you want.
|
||||
|
||||
{{< figure src="hub-with-vault.svg" alt="Kerberos Vault connected to Kerberos Hub." caption="Kerberos Vault connected to Kerberos Hub." class="stretch">}}
|
||||
|
||||
|
After Width: | Height: | Size: 90 KiB |
239
content/enterprise/first-things-first/kubernetes-enterprise.svg
Normal file
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 131 KiB |
|
After Width: | Height: | Size: 471 KiB |
@@ -1,166 +0,0 @@
|
||||
---
|
||||
title: "Getting Started"
|
||||
description: "What to expect from the Kerberos Enterprise agent."
|
||||
lead: "What to expect from the Kerberos Enterprise agent."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
enterprise:
|
||||
parent: "enterprise"
|
||||
weight: 301
|
||||
toc: true
|
||||
---
|
||||
|
||||
|
||||
Once you've installed Kerberos Enterprise, you will have the Kerberos Enterprise Factory webapp running inside your cluster. This web application allows you to administrate your Kerberos Enterprise agents as deployments/pods. It comes a bunch of other features as well, read on.
|
||||
|
||||
Important to note is that this web app is relying on the Golang Kubernetes SDK, so that means from an administration point of view, you could simply use the well known `kubectl` command. The webapp just add (a lot of) functionalities on top of the Kubernetes API, which are specific to Kerberos Enterprise agents.
|
||||
|
||||
{{< vimeo id="405039357" class="responsive-video ratio-16by10" title="Kerberos Enterprise - Getting started" >}}
|
||||
|
||||
## Login page
|
||||
|
||||
Once you open a browser, and navigate to the Factory web application (see installation for the url), you will land on the login page.
|
||||
|
||||
{{< figure src="login.gif" alt="Login into the Kerberos Enterprise agent interface." caption="Login into the Kerberos Enterprise agent interface." class="stretch">}}
|
||||
|
||||
|
||||
The default username password of the Factory web applications is:
|
||||
|
||||
- username: **root**
|
||||
- password: **kerberos**
|
||||
|
||||
> The username and password [can be changed in the `deployment.yaml` file](https://github.com/kerberos-io/enterprise/blob/master/yaml/factory/deployment.yaml#L54).
|
||||
|
||||
## Overview
|
||||
|
||||
On the overview page you will find an intuitive overview of the different pages and functionalities. On the left menu you will see two sections: **Docker** and **Kubernetes**. Kerberos Enterprise can both run in Docker (single-host) and Kubernetes (cluster) mode, however the recommended way is of course Kubernetes.
|
||||
|
||||
When working with Kubernetes, Kerberos Enterprise agents are deployed as a deployment. When working with Docker, Kerberos Enterprise agents are deployed as traditional Docker containers.
|
||||
|
||||
{{< figure src="overview.gif" alt="Review your Docker or Kubernetes agents." caption="Review your Docker or Kubernetes agents." class="stretch">}}
|
||||
|
||||
|
||||
## Kubernetes
|
||||
|
||||
On the left menu you will find the Kubernetes section. In this section 3 sub menu's are available:
|
||||
|
||||
- Nodes: a list of all the nodes in your cluster.
|
||||
- Deployments: a list of all the Kerberos Enterprise agents running in your cluster.
|
||||
- Pods: all the pods running in your cluster.
|
||||
|
||||
## Nodes
|
||||
|
||||
The nodes section lists all the available nodes inside your Kubernetes cluster. It shows a limited amount of information such as the version, the number of Docker images installed on the node, and some basic hardware information.
|
||||
|
||||
{{< figure src="nodes.png" alt="Get an entire list of nodes which are connected to your Kubernetes cluster." caption="Get an entire list of nodes which are connected to your Kubernetes cluster." class="stretch">}}
|
||||
|
||||
## Deployments
|
||||
|
||||
The deployments section will list all the Kerberos Enterprise agents (running as deployments) that you have deployed inside your cluster. This page gives you access to deploy new Kerberos Enterprise agents one by one or in bulk. Next to that you can easily upgrade Kerberos Enterprise agents to a newer version, reboot them, view logging and update the configuration options of the Kerberos Enterprise agent.
|
||||
|
||||
{{< figure src="deployments.png" alt="Get a list of all your Kerberos Enterprise agents." caption="Get a list of all your Kerberos Enterprise agents." class="stretch">}}
|
||||
|
||||
### Adding a new deployment
|
||||
|
||||
There are two options to add a new deployment, single deployments and bulk deployment.
|
||||
|
||||
{{< figure src="single-bulk-deployment.gif" alt="Get a list of all your Kerberos Enterprise agents." caption="Get a list of all your Kerberos Enterprise agents." class="stretch">}}
|
||||
|
||||
- single deployment
|
||||
|
||||
By specifying a name for your deployment, and it's corresponding RTSP url, a new deployment will be created for you, and deployed to one of your installed nodes.
|
||||
|
||||
- in bulk deployment.
|
||||
|
||||
By importing an Excel file, deployments can be created in bulk.
|
||||
|
||||
By specifying the name and corresponding RTSP url in multiple rows, you can deploy your deployments in bulk.
|
||||
|
||||
{{< figure src="add-bulk-deployment-excel.png" alt="Add a Kerberos Enterprise agent through a deployment." caption="Add a Kerberos Enterprise agent through a deployment." class="stretch">}}
|
||||
|
||||
### Configuring a deployment
|
||||
|
||||
Once you have a running deployment, you should see a green circle next to the deployment, indicating that it is succesfully running. At any time you can configure your deployments by clicking on the <SettingsIcon className="pointer"/> icon. This will open a popup, allowing you to change some settings.
|
||||
|
||||
{{< figure src="deployment-configuration.gif" alt="Once you created the Kerberos Enterprise agent, you can configure the agent." caption="Once you created the Kerberos Enterprise agent, you can configure the agent." class="stretch">}}
|
||||
|
||||
Following settings can be changed:
|
||||
|
||||
- One or more regions of interest,
|
||||
- Time based conditions,
|
||||
- Pre- and postrecording
|
||||
- Continious recording
|
||||
- Linking to [Kerberos Hub](/hub/first-things-first) or [Kerberos Vault](/vault/first-things-first)
|
||||
|
||||
### Global configuration
|
||||
|
||||
Configuration can be specified on a Kerberos Enterprise agent level, this means that you update the configuration of a specific deployment. However can also be specified at a higher level. This higher level is what we call the global configuration.
|
||||
|
||||
By specifying configurations at a higher level, any Kerberos Enterprise agents will inherit from that configuration, improving the overall maintenance and management of your Kerberos Enterprise agents.
|
||||
|
||||
{{< figure src="global-configuration.gif" alt="You can specify the configurations on a global level, so all agents will inherit from that." caption="You can specify the configurations on a global level, so all agents will inherit from that." class="stretch">}}
|
||||
|
||||
### Upgrade or reboot a Kerberos Enterprise agent
|
||||
|
||||
At Kerberos.io we have fast development cycles, which means that new versions will be released every day, week or month. To make sure you can upgrade or downgrade your Kerberos Enterprise agent easily, an upgrade feature is built-in. When pressing the upgrade button, you will be able to select the version to which you would like to upgrade or downgrade. Once submitted, **a zero downtime upgrade will take place**. Kubernetes will download the new release, create a new pod, and destroy the old one.
|
||||
|
||||
At any moment you can reboot your Kerberos Enterprise agent. When pressing the reboot button, next to your deployment, Kubernetes will destroy the pod of your deployment, and schedule a new one. This comes in handy, when you noticed one of your Kerberos Enterprise agents is in a stale state.
|
||||
|
||||
{{< figure src="upgrade-reboot.gif" alt="You can specify the configurations on a global level, so all agents will inherit from that." caption="You can specify the configurations on a global level, so all agents will inherit from that." class="stretch">}}
|
||||
|
||||
## Pods
|
||||
|
||||
When creating a Kerberos Enterprise agent, Kubernetes will create a deployment and schedule a pod. This pod will be managed by your deployment, and deployed as a Docker container to one of your available nodes. Once a pod dies/ crashes, or whatever unexpected scenario, the deployment will make sure it is deployed again to a different (or the same) node. This makes sure the Kerberos Enterprise agent is in a healthy state at all times.
|
||||
|
||||
{{< figure src="pods.png" alt="When creating a deployment, a Kubernetes pod has created and assigned to a node." caption="When creating a deployment, a Kubernetes pod has created and assigned to a node." class="stretch">}}
|
||||
|
||||
## Storage and video management
|
||||
|
||||
Kerberos Enterprise allows you to scale your video landscape horizontally, using the concept of Kubernetes, and brings a strong backbone for stability and performance. It allows you to avoid reinventing the wheel, and get stuck in the numerious challenges of making an intelligent VMS yourself (we worked on this for 2 years with experienced engineers).
|
||||
|
||||
Kerberos Enterprise stores its recordings locally for a short amount of time. This means that long-term storage is not included in the solution. On top of that it also **does not** have a visual component, which allows you te review dashboards or recordings. To overcome these two challenges, long-term storage with extensibility/integration capabilities and visualisation features, following solutions were developed [Kerberos Vault](/storage/introduction) and [Kerberos Hub](/cloud).
|
||||
|
||||
### Kerberos Vault
|
||||
|
||||
[Kerberos Vault](/vault/first-things-first) is a solution which makes it able to store recordings from Kerberos Enterprise agents (accross different clusters) at a central place, on the storage provider you want. You can store your recordings in the cloud (AWS S3, Google Cloud Storage, Azure Blob storage) or on premise (Minio).
|
||||
|
||||
On the other hand it's an open platform, as it allows you build extensions and integrations (web apps, mobile apps, machine learning services much more). Kerberos Vault ships with the ability of real-time messaging (Kafka) and a REST API (documented as Swaggger).
|
||||
|
||||
{{< figure src="../../prologue/deployments/deployment-hub-vault.svg" alt="Kerberos Vault allows you to centralise your recordings and build integrations." caption="Kerberos Vault allows you to centralise your recordings and build integrations." class="stretch">}}
|
||||
|
||||
To connect one or more Kerberos Enterprise agents to your Kerberos Vault instance, you should open the configuration option and navigate to the `cloud` tab. When selected you need to fill-in the credentials from your Kerberos Vault account.
|
||||
|
||||
- Storage URI: this is the API endpoint of your Kerberos Vault instance. Usually this is in the following format: `http(s)://api.yourdomain.com/storage`. Where `api.yourdomain.com` should match your Kerberos Vault API endpoint.
|
||||
|
||||
- Provider: the name of the provider, which you created on the Kerberos Vault providers page, to which you want to send your recordings to.
|
||||
|
||||
- Directory: this is the subdirectory in which your files will be stored. At the time of writing this should also equal your Kerberos Hub username, if you plan to upload to Kerberos Hub.
|
||||
|
||||
- Access Key: this should match the access key of one of your Kerberos Vault accounts.
|
||||
|
||||
- Secret Access Key: this should match the secret access key of one of your Kerberos Vault accounts.
|
||||
|
||||
{{< figure src="storage-setup.gif" alt="Using Kerberos Vault you can bring your own storage, and store the recordings of your agents in your own storage provider." caption="Using Kerberos Vault you can bring your own storage, and store the recordings of your agents in your own storage provider." class="stretch">}}
|
||||
|
||||
### Kerberos Hub
|
||||
|
||||
For the visualisation part Kerberos Hub comes into the picture. Kerberos Hub is a web app, backed up with a number of microservices, that shows dashboards, live streams, filter recordings and much more. Learn more [about the features and functions here](/cloud).
|
||||
|
||||
You have two choices when using Kerberos Hub, either you send your recordings from your Kerberos Enterprise agents directly to Kerberos Hub, or you send your recordings to Kerberos Vault, and connect Kerberos Vault to Kerberos Hub. About the latter more is explained on the [Kerberos Vault page](/storage/get-started).
|
||||
|
||||
Select the Kerberos Hub option, and copy-paste the credentials from your Kerberos Hub subscription.
|
||||
|
||||
{{< figure src="enterprise-to-hub.gif" alt="By linking your Enterprise agent to Kerberos Hub, your recordings and livestreams will become available online." caption="By linking your Enterprise agent to Kerberos Hub, your recordings and livestreams will become available online." class="stretch">}}
|
||||
|
||||
- Region: this is the region where your recordings will be stored. Only `eu-west-1` for now (will change, on the roadmap).
|
||||
|
||||
- Bucket: the name of the Kerberos Hub bucket. Only `kerberosaccept` for now (will change, on the roadmap).
|
||||
|
||||
- Directory: this is your personal directory, and matches your Kerberos Hub username.
|
||||
|
||||
- Public Key: this should match the public key of your Kerberos Hub subscription.
|
||||
|
||||
- Secret Access Key: this should match the private key of your Kerberos Hub subscription.
|
||||
@@ -1,175 +0,0 @@
|
||||
---
|
||||
title: "Cloud Installation"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
enterprise:
|
||||
parent: "enterprise"
|
||||
weight: 303
|
||||
toc: true
|
||||
---
|
||||
|
||||
Start by installing a Kubernetes cluster. This can be done on one of the hyperscalers (**AWS**, **GCP** or **Azure**),
|
||||
cloud providers (Digital Ocean, Scaleway, etc) or on-premise in your own private network.
|
||||
|
||||
{{< vimeo id="404813147" class="responsive-video ratio-16by10" title="Running a Kubernetes cluster in the cloud?" >}}
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
Before setting up Kerberos Enterprise, some configuration needs to happen. First thing that we need to do is setting up the RBAC permissions (Role Based Access Control). We need to enable this to be able to query specific endpoints from the Kubernetes API. By default these endpoints are locked, so we need to unlock them.
|
||||
|
||||
{{< vimeo id="404767375" class="responsive-video ratio-16by10" title="Install Kerberos Enterprise in your cluster" >}}
|
||||
|
||||
First clone the configrations from our Github repo.
|
||||
|
||||
git clone https://github.com/kerberos-io/enterprise
|
||||
|
||||
A best practice is to create a separate namespace for your enterprise deployment.
|
||||
|
||||
kubectl create namespace kerberos
|
||||
|
||||
Next go into the directory and execute the first Kubernetes configuration file `clusterrole.yaml`.
|
||||
|
||||
kubectl create -n kerberos -f ./enterprise/yaml/factory/clusterrole.yaml
|
||||
|
||||
This will make several actions inside your cluster available. We need this to be able to create deployments from the factory web app.
|
||||
|
||||
### Helm
|
||||
|
||||
Next we will install a couple of dependencies which are required for Kerberos Enterprise. [**Helm**](https://helm.sh/) is a package manager for Kubernetes, it helps you setting up services more easily (this could be a MQTT broker, a database, etc).
|
||||
Instead of writing yaml files for every service we need, we use so called **Charts** (libraries), that you can reuse and configure the,
|
||||
with the appropriate settings.
|
||||
|
||||
Use one of the preferred OS package managers to install the Helm client:
|
||||
|
||||
brew install helm
|
||||
|
||||
choco install kubernetes-helm
|
||||
|
||||
scoop install helm
|
||||
|
||||
gofish install helm
|
||||
|
||||
### Traefik
|
||||
|
||||
[**Traefik**](https://containo.us/traefik/) is a reverse proxy and load balancer which allows you to expose your deployments more easily. Kerberos uses Traefik to expose it's APIs more easily.
|
||||
|
||||
By executing following helm command, we will install traefik and link it to a specific DNS name. Open the traefik values file, `./enterprise/yaml/traefik/values.yaml`, and update the DNS name to your own domain.
|
||||
|
||||
dashboard:
|
||||
enabled: true
|
||||
--> domain: traefik.domain.com
|
||||
serviceType: NodePort
|
||||
rbac:
|
||||
enabled: true
|
||||
|
||||
Add Helm repository and install traefik.
|
||||
|
||||
helm repo add stable https://charts.helm.sh/stable
|
||||
helm install traefik -n kerberos -f ./enterprise/yaml/traefik/values.yaml stable/traefik
|
||||
|
||||
After installation you should have an IP attached to traefik service, look for it by executing the `get service` command. You will see the ip address in the `EXTERNAL-IP` attribute.
|
||||
|
||||
kubectl get svc
|
||||
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 36h
|
||||
--> traefik LoadBalancer 10.0.27.93 40.114.168.96 443:31623/TCP,80:31804/TCP 35h
|
||||
traefik-dashboard NodePort 10.0.252.6 <none> 80:31146/TCP 35h
|
||||
|
||||
Go to your DNS provider and link the domain you've configured in the first step `traefik.domain.com` to the IP address of the `EXTERNAL-IP` attribute. When browsing to `traefik.domain.com`, you should see the traefik dashboard showing up.
|
||||
|
||||
### Ingress-Nginx (alternative for Traefik)
|
||||
|
||||
If you don't like `Traefik` but you prefer `Ingress Nginx`, that works as well.
|
||||
|
||||
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
|
||||
helm repo update
|
||||
helm install ingress-nginx -n kerberos ingress-nginx/ingress-nginx
|
||||
|
||||
### MongoDB
|
||||
|
||||
When using Kerberos Enterprise, it will generate configurations for every surveillance camera deployed. These configuration files are stored centrally in a MongoDB database. Therefore we use `helm `to install a MongoDB instance inside your cluster.
|
||||
|
||||
Have a look into the `yaml/mongodb/values.yaml` file, you will find plenty of configurations for your MongoDB instance. You will also find the attribute where you can change the root password of mongodb.
|
||||
|
||||
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||
helm install mongodb -n kerberos bitnami/mongodb --values ./enterprise/yaml/mongodb/values.yaml
|
||||
|
||||
Once installed succesfully the MongoDB instance, we should copy the password of the MongoDB instance. Once revealed copy the password, as we will need in the next steps.
|
||||
|
||||
export MONGODB_ROOT_PASSWORD=$(kubectl get secret -n kerberos mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 --decode)
|
||||
echo $MONGODB_ROOT_PASSWORD
|
||||
|
||||
### Kerberos Enterprise Web App - The Factory
|
||||
|
||||
The last step is to install the Kerberos Enterprise application. Kerberos Enterprise is managed through an application which we call the `Factory`. It is responsible for initiating the deployments inside your cluster. These deployments is what we also call (similar to the Open Source version) the machinery.
|
||||
|
||||
The Factory is shipped as a web app (React) which provides you with a tool to update your deployments (agents) easily, monitor them, etc. The Factory is the central portal for managing Kerberos Enterprise inside your cluster. However at any point you can fine-tune or take-over using the `kubectl` command.
|
||||
|
||||
Before installing the Factory web app, open the `./enterprise/yaml/factory/deployment.yaml` configuration file. At the of the bottom file you will find two endpoints, similar to the Ingres file bewlwo. Update the hostnames to your own perferred domain, and add these to your DNS server or `/etc/hosts` file (pointing to the same IP as the Traefik/Ingress nginx EXTERNAL-IP).
|
||||
|
||||
spec:
|
||||
rules:
|
||||
--> - host: factory.domain.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
backend:
|
||||
serviceName: factory
|
||||
servicePort: 80
|
||||
--> - host: api.factory.domain.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
backend:
|
||||
serviceName: factory
|
||||
servicePort: 8081
|
||||
|
||||
If you are using Ingress Nginx, do not forgot to comment `Traefik` and uncomment `Ingress Nginx`.
|
||||
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: factory
|
||||
annotations:
|
||||
#kubernetes.io/ingress.class: traefik
|
||||
kubernetes.io/ingress.class: nginx
|
||||
|
||||
Modify the MongoDB credentials, and make sure they match the credentials of your MongoDB instance.
|
||||
|
||||
- name: MONGODB_USERNAME
|
||||
value: "root"
|
||||
- name: MONGODB_PASSWORD
|
||||
--> value: "xxxxxxxxxx"
|
||||
|
||||
Once you have corrected the DNS names (or internal /etc/hosts file), install the Factory web app inside your cluster.
|
||||
|
||||
kubectl apply -n kerberos -f ./enterprise/yaml/factory/deployment.yaml
|
||||
|
||||
## Test out configuration
|
||||
|
||||
If everything worked out as expected, you should now have following services in your cluster:
|
||||
|
||||
- MongoDB
|
||||
- Traefik
|
||||
- Factory
|
||||
|
||||
It should look like this.
|
||||
|
||||
$ kubectl get pods -n kerberos
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
factory-6f5c877d7c-hf77p 1/1 Running 0 2d11h
|
||||
mongodb-758d5c5ddd-qsfq9 1/1 Running 0 5m31s
|
||||
traefik-7d566ccc47-mwslb 1/1 Running 0 4d12h
|
||||
|
||||
## Access the system
|
||||
|
||||
Once everything is configured correctly your cluster and DNS, you should be able to setup the Factory application. By navigating to the Factory domain `factory.domain.com` in your browser you will see the Factory login page showing up.
|
||||
|
||||
{{< figure src="login.png" alt="Once successfully installed Kerberos Enterprise, it will show you the login page." caption="Once successfully installed Kerberos Enterprise, it will show you the login page." class="stretch">}}
|
||||
@@ -1,40 +0,0 @@
|
||||
---
|
||||
title: "Installation"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
enterprise:
|
||||
parent: "enterprise"
|
||||
weight: 302
|
||||
toc: true
|
||||
---
|
||||
|
||||
Kerberos Enterprise can be installed where Kubernetes can be installed. This means that it can run at the Edge - Baremetal -, in the cloud - VMs - or at Kubernetes service providers - SAAS - such as GCP, Azure, AWS, DigitalOcean, and the list goes on.
|
||||
|
||||
Although you might except Kubernetes at the Edge or Kubernetes in the cloud, there are no differences, well sorry to say there are. As Kubernetes service providers implemented features such as LoadBalancers, Persistent Volumes, and others, they have automated and integrated a huge portion of the Kubernetes stack with their related PAAS services. To be more concrete if you are running a Kubernetes Cluster on GCP, you will use the LoadBalancing and Storage services from GCP.
|
||||
|
||||
{{< figure src="deployment-models.svg" alt="Kerberos Enterprise can be installed everywhere your Kubernetes cluster can be installed." caption="Kerberos Enterprise can be installed everywhere your Kubernetes cluster can be installed." class="stretch">}}
|
||||
|
||||
Compared to Kubernetes at the Edge, there are no predefined LoadBalancers, Storage capabilities, and more. This means more administration work for you, but - with great power comes great responsibility - so no worries. In the end there are alternative functionalties available, for features which you find out-of-the-box at the Kubernetes service providers, you just have to spend more time on configuring and installing those services/pods/deployments yourself.
|
||||
|
||||
## Installation on a Kubernetes Service Provider
|
||||
|
||||
Installing Kerberos Enterprise on a Kubernetes Service Provider (Azure, GCP, AWS) is straight forward, as you can create a Kubernetes cluster in a few clicks, get access to public Load Balancers, storage and more. Running Kerberos Enterprise in such a cluster is just a matter of copy-pasting some configuration (yaml) files, and executing some `kubectl apply` commands.
|
||||
|
||||
{{< figure src="../../prologue/deployments/cloud-more-then-5.svg" alt="As previous mentioned you could process them in a Kubernetes cluster in the cloud." caption="As previous mentioned you could process them in a Kubernetes cluster in the cloud." class="stretch">}}
|
||||
|
||||
Install Kerberos Enterprise on a Kubernetes Service Provider by [following this step-by-step installation guide](/enterprise/installation-cloud).
|
||||
|
||||
## Installation in Private Cloud or Baremetal
|
||||
|
||||
No need to install Kerberos Enterprise on a Kubernetes Service Provider, you could install it on your own Kubernetes cluster in your private cloud, or even better inside your own premise. The closer you bring Kerberos Enterprise to your surveillance infrastructure, the more benefits you will experience (low latency, low bandwidth, etc).
|
||||
|
||||
{{< figure src="../../prologue/deployments/onpremise-more-then-5.svg" alt="When you start having bigger deployments it's recommended to go with a Kubernetes approach." caption="When you start having bigger deployments it's recommended to go with a Kubernetes approach." class="stretch">}}
|
||||
|
||||
In contradiction to the Kubernetes Service Provider, you will have some work todo. Setting up Kubernetes Cluster, play with MetalLB, Persistent Volumes and claims. Don't be scared, it's pretty ssttraight forward as well. You can't simple expect a: click, click, 💥 approach.
|
||||
|
||||
Install Kerberos Enterprise on a Private cloud or Baremetal by [following this step-by-step installation guide](/enterprise/installation-edge).
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
title: "Releases"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
enterprise:
|
||||
parent: "enterprise"
|
||||
weight: 305
|
||||
toc: true
|
||||
---
|
||||
|
||||
|
||||
### 1.0.0
|
||||
|
||||
#### Factory
|
||||
|
||||
* React application using the Kubernetes and Docker Golang SDK.
|
||||
* Possibility to add deployments one by one or in bulk (Excel).
|
||||
* Configure machinery deployments: select a region of interest, specify recording time (pre, andd post recording), specify time interval.
|
||||
* Global configuration page, where you specify your cloud credentials at a single place.
|
||||
16
content/enterprise/usecases/index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: "Usecases"
|
||||
description: "Customers using the Kerberos Enterprise Suite."
|
||||
lead: "Customers using the Kerberos Enterprise Suite."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
enterprise:
|
||||
parent: "enterprise"
|
||||
weight: 300
|
||||
toc: true
|
||||
---
|
||||
|
||||
-> Sorry, to be written. We have a couple of customer stories available.
|
||||
9
content/factory/_index.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Enterprise"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:15+00:00
|
||||
lastmod: 2020-10-06T08:49:15+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
32
content/factory/first-things-first/index.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "First things first"
|
||||
description: "A revolutionary design to scale your video analytics and video surveillance landscape."
|
||||
lead: "A revolutionary design to scale your video analytics and video surveillance landscape."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
factory:
|
||||
parent: "factory"
|
||||
weight: 300
|
||||
toc: true
|
||||
---
|
||||
|
||||
Kerberos Factory brings the Kerberos Agent to another level. The Kerberos Agent can be deployed anywhere you want, it can run as a binary, Docker container and inside a Kubernetes cluster. The latter is where Kerberos Factory shines, it is a UI that allows you to deploy and configure your Kerberos Agents into your Kubernetes cluster more easily.
|
||||
|
||||
{{< figure src="kerberos-enterprise-suite.svg" alt="Kerberos Enterprise Suite contains Kerberos Agent, Kerberos Factory, Kerberos Vault and Kerberos Hub." caption="Kerberos Enterprise Suite contains Kerberos Agent, Kerberos Factory, Kerberos Vault and Kerberos Hub." class="stretch">}}
|
||||
|
||||
## Kerberos Factory in a nutshell
|
||||
|
||||
Kerberos Factory is a front-end that consumes and interacts with the Kubernetes API. It schedules Kerberos Agents as Kubernetes resource, and more specific `deployments`. For every camera stream a Kerberos Agent is created as a Kubernetes deployment.
|
||||
|
||||
Through the front-end an administrator can configure or add more Kerberos Agents to the cluster. The administrator has the ability to interact with the Kerberos Agent through one or more configuration screens, to tune and optimize the Kerberos Agent.
|
||||
|
||||
### ONVIF discovery
|
||||
|
||||
Kerberos Factory allows you to scan the local network and create Kerberos Agents for every discovered camera. Once discovered, Kerberos Factory will create a Kubernetes deployment for every Kerberos Agent.
|
||||
|
||||
### Global settings
|
||||
|
||||
Instead of tuning all your Kerberos Agent, Kerberos Factory allows you to set up global settings which are inherited by all your Kerberos Agents.
|
||||
379
content/factory/first-things-first/kerberos-enterprise-suite.svg
Normal file
|
After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 726 KiB After Width: | Height: | Size: 726 KiB |
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 712 KiB After Width: | Height: | Size: 712 KiB |
164
content/factory/getting-started/index.md
Normal file
@@ -0,0 +1,164 @@
|
||||
---
|
||||
title: "Getting Started"
|
||||
description: "What to expect from the Kerberos Factory."
|
||||
lead: "What to expect from the Kerberos Factory."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
factory:
|
||||
parent: "factory"
|
||||
weight: 301
|
||||
toc: true
|
||||
---
|
||||
|
||||
|
||||
Once you've installed Kerberos Factory, you will have the web application running inside your cluster. This web application allows you to administrate and automate the creation of your Kerberos Agents through the concept of [Kubernetes deployments](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) and pods.
|
||||
|
||||
Important to note is that this web application is relying [on the official Golang Kubernetes API](https://github.com/kubernetes/client-go), so that means from an administration point of view, you could simply use the well known `kubectl` command instead. The web application adds some functionalities on top of the Kubernetes API, which are specific to a Kerberos Agent; for example region of interests, livestreaming settings, etc.
|
||||
|
||||
## Login page
|
||||
|
||||
Once you open a browser, and navigate to the web application (see installation for the url), you will land on the login page.
|
||||
|
||||
{{< figure src="login.gif" alt="Login into the Kerberos Factory interface." caption="Login into the Kerberos Factory interface." class="stretch">}}
|
||||
|
||||
The default username password, specified in the [`deployment.yaml`](https://github.com/kerberos-io/enterprise/blob/master/yaml/factory/deployment.yaml#L54) is:
|
||||
|
||||
- username: **root**
|
||||
- password: **kerberos**
|
||||
|
||||
> The username and password [can be changed in the `deployment.yaml` file](https://github.com/kerberos-io/enterprise/blob/master/yaml/factory/deployment.yaml#L54).
|
||||
|
||||
## Overview
|
||||
|
||||
On the overview page you will find an intuitive overview of the different pages and functionalities. On the left menu you will see two sections: **Docker** and **Kubernetes**. Kerberos Factory can run in Docker (single-host) and Kubernetes (cluster) mode, however the recommended way is of course Kubernetes.
|
||||
|
||||
When working with Kubernetes, Kerberos Agents are deployed as a deployment. When working with Docker, Kerberos Agents are deployed as traditional Docker containers.
|
||||
|
||||
{{< figure src="overview.gif" alt="Review your Docker or Kubernetes agents." caption="Review your Docker or Kubernetes agents." class="stretch">}}
|
||||
|
||||
|
||||
## Kubernetes
|
||||
|
||||
On the left menu you will find the Kubernetes section. In this section 3 pages are available:
|
||||
|
||||
- Nodes: a list of all the nodes in your cluster.
|
||||
- Deployments: a list of all the Kerberos Agents running in your cluster.
|
||||
- Pods: all the pods running in your cluster.
|
||||
|
||||
## Nodes
|
||||
|
||||
The nodes section lists all the available nodes inside your Kubernetes cluster. It shows a limited amount of information such as the version, the number of Docker images installed on the node, and some basic hardware information.
|
||||
|
||||
{{< figure src="nodes.png" alt="Get an entire list of nodes which are connected to your Kubernetes cluster." caption="Get an entire list of nodes which are connected to your Kubernetes cluster." class="stretch">}}
|
||||
|
||||
## Deployments
|
||||
|
||||
The deployments section will list all the Kerberos Agents (running as deployments) that you have deployed inside your cluster. This page gives you access to deploy new Kerberos Agents one by one or in bulk. Next to that you can easily upgrade Kerberos Agents to a newer version, reboot them, view logging and update the configuration options of the Kerberos Agent.
|
||||
|
||||
{{< figure src="deployments.png" alt="Get a list of all your Kerberos Agents." caption="Get a list of all your Kerberos Agents." class="stretch">}}
|
||||
|
||||
### Adding a new deployment
|
||||
|
||||
There are two options to add a new deployment, single deployments and bulk deployment.
|
||||
|
||||
{{< figure src="single-bulk-deployment.gif" alt="Deploy a single Kerberos Agent or in bulk." caption="Deploy a single Kerberos Agent or in bulk." class="stretch">}}
|
||||
|
||||
- single deployment
|
||||
|
||||
By specifying a name for your Kerberos Agent, and it's corresponding RTSP url, a new Kubernetes deployment will be created for you, and a Kuebrnetes pod will be deployed to one of your installed nodes.
|
||||
|
||||
- in bulk deployment.
|
||||
|
||||
By importing an Excel file, deployments can be created in bulk.
|
||||
|
||||
By specifying the name and corresponding RTSP url in multiple rows, you can deploy your deployments in bulk.
|
||||
|
||||
{{< figure src="add-bulk-deployment-excel.png" alt="Add a Kerberos Agent through a deployment." caption="Add a Kerberos Agent through a deployment." class="stretch">}}
|
||||
|
||||
### Configuring a deployment
|
||||
|
||||
Once you have a running Kerberos Agent, you should see a green circle next to the deployment, indicating that it is successfully running. At any time you can configure your Kerberos Agent by clicking on the <SettingsIcon className="pointer"/> icon. This will open a popup, allowing you to change some settings.
|
||||
|
||||
{{< figure src="deployment-configuration.gif" alt="Once you created the Kerberos Agent, you can configure the agent." caption="Once you created the Kerberos Agent, you can configure the agent." class="stretch">}}
|
||||
|
||||
Following settings can be changed:
|
||||
|
||||
- One or more regions of interest,
|
||||
- Time based conditions,
|
||||
- Pre- and post recording
|
||||
- Continuous recording
|
||||
- Linking to [Kerberos Hub Saas](/hub/first-things-first) or [Kerberos Vault](/vault/first-things-first)
|
||||
|
||||
### Global configuration
|
||||
|
||||
Configuration can be specified in a Kerberos Agent, this means that you update the configuration of a specific Kubernetes deployment. However, this can also be specified at a higher level. This higher level is what we call the global configuration.
|
||||
|
||||
By specifying configurations at a higher level, any Kerberos Agents will inherit from that configuration. This is improving the overall maintenance and management of your Kerberos Agents.
|
||||
|
||||
{{< figure src="global-configuration.gif" alt="You can specify the configurations on a global level, so all Kerberos Agents will inherit from that." caption="You can specify the configurations on a global level, so all Kerberos Agents will inherit from that." class="stretch">}}
|
||||
|
||||
### Upgrade or reboot a Kerberos Agent
|
||||
|
||||
At Kerberos, we have agile development cycles, which means that new versions will be released every day, week or month. To make sure you can upgrade or downgrade these Kerberos Agent easily, an upgrade feature is built-in. When pressing the upgrade button, you will be able to select the version to which you would like to upgrade or downgrade. Once submitted, **a zero downtime upgrade will take place**. Kubernetes will download the new release, create a new pod, and destroy the old one.
|
||||
|
||||
At any moment you can reboot one of your Kerberos Agents. When pressing the reboot button, next to your deployment, Kubernetes will destroy the pod of your deployment, and schedule a new one.
|
||||
|
||||
{{< figure src="upgrade-reboot.gif" alt="You can specify the configurations on a global level, so all agents will inherit from that." caption="You can specify the configurations on a global level, so all agents will inherit from that." class="stretch">}}
|
||||
|
||||
## Pods
|
||||
|
||||
When creating a Kerberos Agent, Kubernetes will create a Kubernetes deployment and schedule a pod. The pod will be managed by your deployment, and deployed as a container to one of your available nodes. Once a pod dies/ crashes, or whatever unexpected scenario, the deployment will make sure it is deployed again to a different (or the same) node. This makes sure the Kerberos Agent is in a healthy state at all times.
|
||||
|
||||
{{< figure src="pods.png" alt="When creating a deployment, a Kubernetes pod has created and assigned to a node." caption="When creating a deployment, a Kubernetes pod has created and assigned to a node." class="stretch">}}
|
||||
|
||||
## Storage and video management
|
||||
|
||||
Kerberos Factory allows you to scale your video landscape horizontally, using the concept of Kubernetes, and brings a strong backbone for stability and performance. It allows you to avoid reinventing the wheel, and get stuck in the numerous challenges of developing a scalable video platform.
|
||||
|
||||
Kerberos Agents store their recordings locally for a short period. This means that long-term storage is not included in the solution. On top of that it also does not have a visual component, which allows you te review dashboards or recordings. To overcome these two challenges, long-term storage with extensibility/integration capabilities and visualisation features, following solutions were developed [Kerberos Vault](/storage/introduction) and [Kerberos Hub](/cloud).
|
||||
|
||||
### Kerberos Vault
|
||||
|
||||
[Kerberos Vault](/vault/first-things-first) is a solution which makes it possible to store recordings from Kerberos Agents (across different clusters) at a central place, on the storage provider you want. You can store your recordings in the cloud (AWS S3, Google Cloud Storage, Azure Blob storage) or at the edge (Minio, Ceph).
|
||||
|
||||
On the other hand it's an open platform, as it allows you build extensions and integrations (web apps, mobile apps, machine learning services much more). Kerberos Vault ships with the ability of real-time messaging (Kafka), and a REST API (documented as Swagger).
|
||||
|
||||
{{< figure src="vault-cloud-storage.svg" alt="Kerberos Vault allows you to centralise your recordings and build integrations." caption="Kerberos Vault allows you to centralise your recordings and build integrations." class="stretch">}}
|
||||
|
||||
To connect one or more Kerberos Agents to your Kerberos Vault instance, you should open the configuration option and navigate to the `cloud` tab. After selected you need to fill-in the credentials from your Kerberos Vault account.
|
||||
To connect one or more Kerberos Agents to your Kerberos Vault instance, you should open the configuration option and navigate to the `cloud` tab. After selected you need to fill-in the credentials from your Kerberos Vault account.
|
||||
|
||||
- Storage URI: this is the API endpoint of your Kerberos Vault instance. Usually this is in the following format: `http(s)://api.yourdomain.com/storage`. Where `api.yourdomain.com` should match your Kerberos Vault API endpoint.
|
||||
|
||||
- Provider: the name of the provider, which you created on the Kerberos Vault providers page, to which you want to send your recordings to.
|
||||
|
||||
- Directory: this is the subdirectory in which your files will be stored. At the time of writing this should also equal your Kerberos Hub username, if you plan to upload to Kerberos Hub.
|
||||
|
||||
- Access Key: this should match the access key of one of your Kerberos Vault accounts.
|
||||
|
||||
- Secret Access Key: this should match the secret access key of one of your Kerberos Vault accounts.
|
||||
|
||||
{{< figure src="storage-setup.gif" alt="Using Kerberos Vault you can bring your own storage, and store the recordings of your agents in your own storage provider." caption="Using Kerberos Vault you can bring your own storage, and store the recordings of your agents in your own storage provider." class="stretch">}}
|
||||
|
||||
### Kerberos Hub
|
||||
|
||||
For the visualisation part Kerberos Hub comes into the picture. Kerberos Hub is a web app, backed up with a number of microservices, that shows dashboards, live streams, filter recordings and much more. Learn more [about the features and functions here](/cloud).
|
||||
|
||||
You have two choices when using Kerberos Hub, either you send your recordings from your Kerberos Agents directly to Kerberos Hub, or you send your recordings to Kerberos Vault, and connect Kerberos Vault to Kerberos Hub. About the latter more is explained on the [Kerberos Vault page](/storage/get-started).
|
||||
|
||||
Select the Kerberos Hub option, and copy-paste the credentials from your Kerberos Hub subscription.
|
||||
|
||||
{{< figure src="enterprise-to-hub.gif" alt="By linking your Enterprise agent to Kerberos Hub, your recordings and livestreams will become available online." caption="By linking your Enterprise agent to Kerberos Hub, your recordings and livestreams will become available online." class="stretch">}}
|
||||
|
||||
- Region: this is the region where your recordings will be stored. Only `eu-west-1` for now (will change, on the roadmap).
|
||||
|
||||
- Bucket: the name of the Kerberos Hub bucket. Only `kerberosaccept` for now (will change, on the roadmap).
|
||||
|
||||
- Directory: this is your personal directory, and matches your Kerberos Hub username.
|
||||
|
||||
- Public Key: this should match the public key of your Kerberos Hub subscription.
|
||||
|
||||
- Secret Access Key: this should match the private key of your Kerberos Hub subscription.
|
||||
|
Before Width: | Height: | Size: 811 KiB After Width: | Height: | Size: 811 KiB |
|
Before Width: | Height: | Size: 196 KiB After Width: | Height: | Size: 196 KiB |
|
Before Width: | Height: | Size: 304 KiB After Width: | Height: | Size: 304 KiB |
|
Before Width: | Height: | Size: 245 KiB After Width: | Height: | Size: 245 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 2.8 MiB After Width: | Height: | Size: 2.8 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
568
content/factory/getting-started/vault-cloud-storage.svg
Normal file
|
After Width: | Height: | Size: 109 KiB |
315
content/factory/installation-cloud/factory-cloud.svg
Normal file
|
After Width: | Height: | Size: 70 KiB |
176
content/factory/installation-cloud/index.md
Normal file
@@ -0,0 +1,176 @@
|
||||
---
|
||||
title: "Cloud Installation"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
factory:
|
||||
parent: "factory"
|
||||
weight: 303
|
||||
toc: true
|
||||
---
|
||||
|
||||
If not already the case, start by creating a Kubernetes cluster. This can be done though one of the hyperscalers (AWS, GCP, Azure), cloud providers (Digital Ocean, Scaleway, etc) or inside your private cloud; for the latter it is advised [to follow the edge installation](/factory/installation-edge).
|
||||
|
||||
{{< figure src="factory-cloud.svg" alt="Process your video streams in the cloud." caption="Process your video streams in the cloud" class="stretch">}}
|
||||
|
||||
## Installation
|
||||
|
||||
Before setting up Kerberos Factory, the first thing that we need to do is enabling RBAC permissions (Role Based Access Control). This needs to be enabled to query specific endpoints from the Kubernetes API. By default, these endpoints are blocked, so we need to unlock them.
|
||||
|
||||
First clone the configurations from the GitHub repository [kerberos-io/factory]( https://github.com/kerberos-io/factory).
|
||||
|
||||
git clone https://github.com/kerberos-io/factory
|
||||
|
||||
A best practice is to create a separate namespace for your Kerberos Factory and Kerberos Agent deployments.
|
||||
|
||||
kubectl create namespace kerberos-factory
|
||||
|
||||
Next go into the directory and execute the first Kubernetes configuration file `clusterrole.yaml`.
|
||||
|
||||
kubectl create -n kerberos-factory -f ./factory/yaml/factory/clusterrole.yaml
|
||||
|
||||
This will make several APIs inside your Kubernetes cluster available. We need this to be able to create deployments from the factory web app through the Kubernetes Golang SDK.
|
||||
|
||||
### Helm
|
||||
|
||||
Next we will install a couple of dependencies which are required for Kerberos Factory. [**Helm**](https://helm.sh/) is a package manager for Kubernetes, it helps you to set up services more easily (this could be a MQTT broker, a database, etc).
|
||||
Instead of writing yaml files for every service we need, we use so-called Charts (libraries), that you can reuse and configure the, with the appropriate settings.
|
||||
|
||||
Use one of the preferred OS package managers to install the Helm client:
|
||||
|
||||
brew install helm
|
||||
|
||||
choco install kubernetes-helm
|
||||
|
||||
scoop install helm
|
||||
|
||||
gofish install helm
|
||||
|
||||
### Traefik
|
||||
|
||||
[**Traefik**](https://containo.us/traefik/) is a reverse proxy and load balancer which allows you to expose your deployments more easily. Kerberos uses Traefik to expose its APIs more easily.
|
||||
|
||||
By executing following helm command, we will install Traefik and link it to a specific DNS name. Open the Traefik values file, `./factory/yaml/traefik/values.yaml`, and update the DNS name to your own domain.
|
||||
|
||||
dashboard:
|
||||
enabled: true
|
||||
--> domain: traefik.domain.com
|
||||
serviceType: NodePort
|
||||
rbac:
|
||||
enabled: true
|
||||
|
||||
Add Helm repository and install traefik.
|
||||
|
||||
kubectl create namespace traefik
|
||||
helm repo add stable https://charts.helm.sh/stable
|
||||
helm install traefik -n traefik -f ./factory/yaml/traefik/values.yaml stable/traefik
|
||||
|
||||
After installation, you should have an IP attached to Traefik service, look for it by executing the `get service` command. You will see the ip address in the `EXTERNAL-IP` attribute.
|
||||
|
||||
kubectl get svc
|
||||
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 36h
|
||||
--> traefik LoadBalancer 10.0.27.93 40.114.168.96 443:31623/TCP,80:31804/TCP 35h
|
||||
traefik-dashboard NodePort 10.0.252.6 <none> 80:31146/TCP 35h
|
||||
|
||||
Go to your DNS provider and link the domain you've configured in the first step `traefik.domain.com` to the IP address of thT `EXTERNAL-IP` attribute. When browsing to `traefik.domain.com`, you should see the traefik dashboard showing up.
|
||||
|
||||
### Ingress-Nginx (alternative for Traefik)
|
||||
|
||||
If you don't like `Traefik` but you prefer `Ingress Nginx`, that works as well.
|
||||
|
||||
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
|
||||
helm repo update
|
||||
kubectl create namespace ingress-nginx
|
||||
helm install ingress-nginx -n kerberos ingress-nginx/ingress-nginx
|
||||
|
||||
### MongoDB
|
||||
|
||||
When using Kerberos Factory, it will generate configurations for every video stream deployed. These configuration files are persisted in a MongoDB database. As used before, we are using `helm` to install MongoDB in our Kubernetes cluster.
|
||||
|
||||
Have a look into the `./factory/yaml/mongodb/values.yaml` file, you will find plenty of configurations for the MongoDB helm chart. To change the username and password of the MongoDB instance, go ahead and [find the attribute where](https://github.com/kerberos-io/factory/blob/master/yaml/mongodb/values.yaml#L75) you can change the root password.
|
||||
|
||||
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||
helm install mongodb -n mongodb bitnami/mongodb --values ./factory/yaml/mongodb/values.yaml
|
||||
|
||||
Once installed successfully, we should verify if the password has been set correctly. Print out the password using `echo $MONGODB_ROOT_PASSWORD` and confirm the password is what you've specified in the `values.yaml` file.
|
||||
|
||||
export MONGODB_ROOT_PASSWORD=$(kubectl get secret -n kerberos mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 --decode)
|
||||
echo $MONGODB_ROOT_PASSWORD
|
||||
|
||||
### Kerberos Factory
|
||||
|
||||
The last step is to install the Kerberos Factory application. Kerberos Factory is responsible for installing and creating the kubernetes deployments inside your Kubernetes cluster.
|
||||
|
||||
Before installing Kerberos Factory, open the `./factory/yaml/factory/deployment.yaml` configuration file. At the of the bottom file you will find two endpoints, similar to the Ingres file below. Update the hostnames to your own preferred domain, and add these to your DNS server or `/etc/hosts` file (pointing to the same IP as the Traefik/Ingress-nginx EXTERNAL-IP).
|
||||
|
||||
spec:
|
||||
rules:
|
||||
--> - host: factory.domain.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
backend:
|
||||
serviceName: factory
|
||||
servicePort: 80
|
||||
--> - host: api.factory.domain.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
backend:
|
||||
serviceName: factory
|
||||
servicePort: 8081
|
||||
|
||||
If you are using Ingress Nginx, do not forgot to comment `Traefik` and uncomment `Ingress Nginx`.
|
||||
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: factory
|
||||
annotations:
|
||||
#kubernetes.io/ingress.class: traefik
|
||||
kubernetes.io/ingress.class: nginx
|
||||
|
||||
Modify the MongoDB credentials, and make sure they match the credentials of your MongoDB instance.
|
||||
|
||||
- name: MONGODB_USERNAME
|
||||
value: "root"
|
||||
- name: MONGODB_PASSWORD
|
||||
--> value: "xxxxxxxxxx"
|
||||
|
||||
Once you have corrected the DNS names (or internal /etc/hosts file), install the Factory web app inside your cluster.
|
||||
|
||||
kubectl apply -n kerberos-factory -f ./factory/yaml/factory/deployment.yaml
|
||||
|
||||
## Test out configuration
|
||||
|
||||
If everything worked out as expected, you should now have following services in your cluster across different namespaces:
|
||||
|
||||
- MongoDB
|
||||
- Traefik
|
||||
- Factory
|
||||
|
||||
It should look like this.
|
||||
|
||||
$ kubectl get pods -n kerberos-factory
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
factory-6f5c877d7c-hf77p 1/1 Running 0 2d11h
|
||||
|
||||
$ kubectl get pods -n mongodb
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
mongodb-758d5c5ddd-qsfq9 1/1 Running 0 5m31s
|
||||
|
||||
$ kubectl get pods -n traefik
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
traefik-7d566ccc47-mwslb 1/1 Running 0 4d12h
|
||||
|
||||
## Access the system
|
||||
|
||||
Once everything is configured correctly your cluster and DNS, you should be able to set up the Factory application. By navigating to the domain `factory.domain.com` in your browser you will see the login page showing up.
|
||||
|
||||
{{< figure src="login.png" alt="Once successfully installed Kerberos Factory, it will show you the login page." caption="Once successfully installed Kerberos Factory, it will show you the login page." class="stretch">}}
|
||||
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
340
content/factory/installation-edge/factory-edge.svg
Normal file
|
After Width: | Height: | Size: 90 KiB |
@@ -7,17 +7,15 @@ lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
enterprise:
|
||||
parent: "enterprise"
|
||||
factory:
|
||||
parent: "factory"
|
||||
weight: 304
|
||||
toc: true
|
||||
---
|
||||
|
||||
Welcome to the Kerberos Enterprise Edge installation. This is the way to go if you want to install Kerberos Enterprise on your Baremetal infrastructure or inside your Private Cloud.
|
||||
This is the way to go if you want to install Kerberos Factory on your Kubernetes cluster at the edge or inside a private cloud. Before installing the different deployments in our cluster, we need to make sure we have one available.
|
||||
|
||||
{{< figure src="../../prologue/deployments/onpremise-more-then-5.svg" alt="When you start having bigger deployments it's recommended to go with a Kubernetes approach." caption="When you start having bigger deployments it's recommended to go with a Kubernetes approach." class="stretch">}}
|
||||
|
||||
Before we can actual start installing the different deployments in our cluster, we need to make sure we have one available.
|
||||
{{< figure src="factory-edge.svg" alt="Process your video streams at the edge. " caption="Process your video streams at the edge." class="stretch">}}
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -94,19 +92,23 @@ Calico is an open source networking and network security solution for containers
|
||||
curl https://docs.projectcalico.org/manifests/calico.yaml -O
|
||||
kubectl apply -f calico.yaml
|
||||
|
||||
### Kerberos Enterprise
|
||||
### Permissions and namespace
|
||||
|
||||
Before setting up Kerberos Enterprise, some configuration needs to happen. First thing that we need to do is setting up the RBAC permissions (Role Based Access Control). We need to enable this to be able to query specific endpoints from the Kubernetes API. By default these endpoints are locked, so we need to unlock them.
|
||||
Before setting up Kerberos Factory, the first thing that we need to do is enabling RBAC permissions (Role Based Access Control). This needs to be enabled to query specific endpoints from the Kubernetes API. By default, these endpoints are blocked, so we need to unlock them.
|
||||
|
||||
git clone https://github.com/kerberos-io/enterprise
|
||||
First clone the configurations from the GitHub repository [kerberos-io/factory]( https://github.com/kerberos-io/factory).
|
||||
|
||||
A best practice is to create a separate namespace for your enterprise deployment.
|
||||
git clone https://github.com/kerberos-io/factory
|
||||
|
||||
kubectl create namespace kerberos
|
||||
A best practice is to create a separate namespace for your Kerberos Factory and Kerberos Agent deployments.
|
||||
|
||||
kubectl create -n kerberos -f ./enterprise/yaml/factory/clusterrole.yaml
|
||||
kubectl create namespace kerberos-factory
|
||||
|
||||
This will make several actions, permissions, inside your cluster available. We need this to be able to create deployments from the Kerberos Enterprise web app.
|
||||
Next go into the directory and execute the first Kubernetes configuration file `clusterrole.yaml`.
|
||||
|
||||
kubectl create -n kerberos-factory -f ./factory/yaml/factory/clusterrole.yaml
|
||||
|
||||
This will make several APIs inside your Kubernetes cluster available. We need this to be able to create deployments from the factory web app through the Kubernetes Golang SDK.
|
||||
|
||||
### MetalLB
|
||||
|
||||
@@ -131,9 +133,9 @@ After installing the different MetalLB components, we need to create a `configma
|
||||
addresses:
|
||||
--> - 192.168.1.200-192.168.1.210
|
||||
|
||||
You can change the IP range above to match your needs. MetalLB will use this range as a referance to assign IP addresses to your LoadBalancers. Once ready you can apply the configration map.
|
||||
You can change the IP range above to match your needs. MetalLB will use this range as a reference to assign IP addresses to your LoadBalancers. Once ready you can apply the configuration map.
|
||||
|
||||
kubectl apply -f ./enterprise/yaml/metallb/configmap.yaml
|
||||
kubectl apply -f ./factory/yaml/metallb/configmap.yaml
|
||||
|
||||
### Helm
|
||||
|
||||
@@ -152,19 +154,28 @@ To access the Kerberos Enterprise web application, we will create a service in t
|
||||
The idea is that Traefik, will have a dedicated IP address assigned from MetalLB, and will resolve the Ingress of our Kerberos Enterprise web app. Let's go ahead with installing Traefik.
|
||||
|
||||
helm repo add stable https://charts.helm.sh/stable
|
||||
helm install -n kerberos traefik -f ./enterprise/yaml/traefik/values.yaml stable/traefik
|
||||
helm install -n traefik traefik -f ./enterprise/yaml/traefik/values.yaml stable/traefik
|
||||
|
||||
### Ingress-Nginx (alternative for Traefik)
|
||||
|
||||
If you don't like `Traefik` but you prefer `Ingress Nginx`, that works as well.
|
||||
|
||||
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
|
||||
helm repo update
|
||||
kubectl create namespace ingress-nginx
|
||||
helm install ingress-nginx -n kerberos ingress-nginx/ingress-nginx
|
||||
|
||||
### MongoDB
|
||||
|
||||
When using Kerberos Enterprise, it will generate configurations for every surveillance camera deployed. These configuration files are stored centrally in a MongoDB database. Therefore we use `helm` to install a MongoDB instance inside your cluster.
|
||||
The last step is to install the Kerberos Factory application. Kerberos Factory is responsible for installing and creating the kubernetes deployments inside your Kubernetes cluster.
|
||||
|
||||
Before we can move into the installation of MongoDB, in contrary with the cloud installation, we will need to create a Persistent Volume (PV). For simplicity we will use `local-storage`, and make sure the volume is assigned to a specific node (hostname).
|
||||
Before we can move into the installation of MongoDB, we will need to create a Persistent Volume (PV). The reason for that is that we do not have a volume provisioning tool at the edge, which we do have with a cloud provider. For simplicity, we will use `local-storage`, and make sure the volume is assigned to a specific node (hostname). Please note that you could perfectly use your Ceph cluster as well.
|
||||
|
||||
Create a folder on the node (VM), where you want to persist the data of MongoDB.
|
||||
|
||||
mkdir /home/mongodb/
|
||||
|
||||
Once done open the `./enterprise/yaml/mongodb/volume.yaml` file and make sure to change capacity, local path (if changed) and the hostname attribute (VM/machine, on which the directory is made available).
|
||||
Once done open the `./factory/yaml/mongodb/volume.yaml` file and make sure to change capacity, local path (if changed), and the hostname attribute (VM/machine, on which the directory is made available).
|
||||
|
||||
spec:
|
||||
capacity:
|
||||
@@ -184,27 +195,25 @@ Once done open the `./enterprise/yaml/mongodb/volume.yaml` file and make sure to
|
||||
values:
|
||||
--> - hostname
|
||||
|
||||
After modified properly you can go ahead with creating the PV.
|
||||
Once completed you can go ahead with creating the PV.
|
||||
|
||||
kubectl create -n kerberos -f ./enterprise/yaml/mongodb/volume.yaml
|
||||
kubectl create -n mongodb -f ./factory/yaml/mongodb/volume.yaml
|
||||
|
||||
Have a look into the `./enterprise/yaml/mongodb/values.yaml` file, you will find plenty of configurations for your MongoDB instance. You will also find the attribute where you can change the root password of MongoDB.
|
||||
Have a look into the `./factory/yaml/mongodb/values.yaml` file, you will find plenty of configurations for the MongoDB helm chart. To change the username and password of the MongoDB instance, go ahead and [find the attribute where](https://github.com/kerberos-io/factory/blob/master/yaml/mongodb/values.yaml#L75) you can change the root password.
|
||||
|
||||
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||
helm install mongodb bitnami/mongodb -n kerberos --values ./enterprise/yaml/mongodb/values-edge.yaml
|
||||
helm install mongodb -n mongodb bitnami/mongodb --values ./enterprise/yaml/mongodb/values-edge.yaml
|
||||
|
||||
Once installed succesfully the MongoDB instance, we should copy the password of the MongoDB instance. Once revealed copy the password, as we will need in the next steps.
|
||||
Once installed successfully, we should verify if the password has been set correctly. Print out the password using `echo $MONGODB_ROOT_PASSWORD` and confirm the password is what you've specified in the `values.yaml` file.
|
||||
|
||||
export MONGODB_ROOT_PASSWORD=$(kubectl get secret -n kerberos mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 --decode)
|
||||
echo $MONGODB_ROOT_PASSWORD
|
||||
|
||||
### Kerberos Enterprise Web App - The Factory
|
||||
### Kerberos Factory
|
||||
|
||||
The last step is to install the Kerberos Enterprise application. Kerberos Enterprise is managed through an application which we call the `Factory`. It is responsible for initiating the deployments inside your cluster. These deployments is what we also call (similar to the Open Source version) the machinery.
|
||||
The last step is to install the Kerberos Factory application. Kerberos Factory is responsible for installing and creating the kubernetes deployments inside your Kubernetes cluster.
|
||||
|
||||
The Factory is shipped as a web app (React) which provides you with a tool to update your deployments (agents) easily, monitor them, etc. The Factory is the central portal for managing Kerberos Enterprise inside your cluster. However at any point you can fine-tune or take-over using the `kubectl` command.
|
||||
|
||||
Before installing the Factory web app, open the `./enterprise/yaml/factory/deployment.yaml` configuration file. At the bottom file you will find two endpoints, similar to the traefik config file. Update the domain names to your own domain, and add these to your DNS server (pointing to the same IP as the traefik EXTERNAL-IP).
|
||||
Before installing Kerberos Factory, open the `./factory/yaml/factory/deployment.yaml` configuration file. At the of the bottom file you will find two endpoints, similar to the Ingres file below. Update the hostnames to your own preferred domain, and add these to your DNS server or `/etc/hosts` file (pointing to the same IP as the Traefik/Ingress-nginx EXTERNAL-IP).
|
||||
|
||||
spec:
|
||||
rules:
|
||||
@@ -223,6 +232,16 @@ Before installing the Factory web app, open the `./enterprise/yaml/factory/deplo
|
||||
serviceName: factory
|
||||
servicePort: 8081
|
||||
|
||||
If you are using Ingress Nginx, do not forgot to comment `Traefik` and uncomment `Ingress Nginx`.
|
||||
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: factory
|
||||
annotations:
|
||||
#kubernetes.io/ingress.class: traefik
|
||||
kubernetes.io/ingress.class: nginx
|
||||
|
||||
Modify the MongoDB credentials, and make sure they match the credentials of your MongoDB instance.
|
||||
|
||||
- name: MONGODB_USERNAME
|
||||
@@ -232,11 +251,11 @@ Modify the MongoDB credentials, and make sure they match the credentials of your
|
||||
|
||||
Once you have corrected the DNS names (or internal /etc/hosts file), install the Factory web app inside your cluster.
|
||||
|
||||
kubectl apply -n kerberos -f ./enterprise/yaml/factory/deployment.yaml
|
||||
kubectl apply -n kerberos-factory -f ./factory/yaml/factory/deployment.yaml
|
||||
|
||||
## Test out configuration
|
||||
|
||||
If everything worked out as expected, you should now have following services in your cluster:
|
||||
If everything worked out as expected, you should now have following services in your cluster across different namespaces:
|
||||
|
||||
- MongoDB
|
||||
- Traefik
|
||||
@@ -244,14 +263,20 @@ If everything worked out as expected, you should now have following services in
|
||||
|
||||
It should look like this.
|
||||
|
||||
$ kubectl get pods -n kerberos
|
||||
$ kubectl get pods -n kerberos-factory
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
factory-6f5c877d7c-hf77p 1/1 Running 0 2d11h
|
||||
|
||||
$ kubectl get pods -n mongodb
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
mongodb-758d5c5ddd-qsfq9 1/1 Running 0 5m31s
|
||||
|
||||
$ kubectl get pods -n traefik
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
traefik-7d566ccc47-mwslb 1/1 Running 0 4d12h
|
||||
|
||||
## Access the system
|
||||
|
||||
Once everything is configured correctly your cluster and DNS, you should be able to setup the Factory application. By navigating to the Factory domain `factory.domain.com` in your browser you will see the Factory login page showing up.
|
||||
Once everything is configured correctly your cluster and DNS, you should be able to set up the Factory application. By navigating to the domain `factory.domain.com` in your browser you will see the login page showing up.
|
||||
|
||||
{{< figure src="login.png" alt="Once successfully installed Kerberos Enterprise, it will show you the login page." caption="Once successfully installed Kerberos Enterprise, it will show you the login page." class="stretch">}}
|
||||
{{< figure src="login.png" alt="Once successfully installed Kerberos Factory, it will show you the login page." caption="Once successfully installed Kerberos Factory, it will show you the login page." class="stretch">}}
|
||||
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
315
content/factory/installation/factory-cloud.svg
Normal file
|
After Width: | Height: | Size: 70 KiB |
365
content/factory/installation/factory-edge-cloud.svg
Normal file
|
After Width: | Height: | Size: 111 KiB |
340
content/factory/installation/factory-edge.svg
Normal file
|
After Width: | Height: | Size: 90 KiB |
40
content/factory/installation/index.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "Installation"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
factory:
|
||||
parent: "factory"
|
||||
weight: 302
|
||||
toc: true
|
||||
---
|
||||
|
||||
Kerberos Factory is shipped as a Docker container and is preferably installed inside a Kubernetes cluster. This means that it can run at the edge, or in the cloud.
|
||||
|
||||
Although you might except that Kubernetes at the edge or Kubernetes in the cloud is the same installation, you will notice that there are a few differences.
|
||||
|
||||
When running a Kubernetes cluster on a Kubernetes service provider, such as [GKE](https://cloud.google.com/kubernetes-engine), [EKS](https://aws.amazon.com/eks/), you will have a couple of superpowers such as a `LoadBalancer` service, automatic `Volume` creation, etc. The latter is something what is missing in an Edge deployment, there you have to prepare the volumes yourself and install an edge load balancer like `MetalLB`.
|
||||
|
||||
{{< figure src="factory-edge-cloud.svg" alt="Kerberos Factory can be installed everywhere your Kubernetes cluster can be installed." caption="Kerberos Factory can be installed everywhere your Kubernetes cluster can be installed." class="stretch">}}
|
||||
|
||||
## Installation on a Kubernetes Service Provider
|
||||
|
||||
Installing Kerberos Factory on a Kubernetes Service Provider (Azure, GCP, AWS) is straight forward, as you can create a Kubernetes cluster in a few clicks, get access to public load balancers, volumes and more. Running Kerberos Vault in such a cluster is just a matter of copy-pasting some configuration (yaml) files, and execution of `kubectl apply` commands.
|
||||
|
||||
Install Kerberos Vault on a Kubernetes Service Provider by [following this step-by-step installation guide](/factory/installation-cloud).
|
||||
|
||||
{{< figure src="factory-cloud.svg" alt="Process your video streams in the cloud." caption="Process your video streams in the cloud" class="stretch">}}
|
||||
|
||||
## Installation in a private cloud or at the edge
|
||||
|
||||
No need to install Kerberos Factory on a Kubernetes Service Provider, it can be installed on your own Kubernetes cluster in your private cloud, or at the edge. The closer you bring Kerberos Vault to your video streams, and Kerberos Agents, the more benefits you will experience (low latency, low bandwidth, etc).
|
||||
|
||||
In contradiction to the Kubernetes Service Provider, there will be more work required. Setting up a Kubernetes Cluster, configure a load balancer, create persistent bolumes and claims.
|
||||
|
||||
Install Kerberos Factory on a private cloud or at the edge by [following this step-by-step installation guide](/factory/installation-edge).
|
||||
|
||||
{{< figure src="factory-edge.svg" alt="Process your video streams at the edge. " caption="Process your video streams at the edge." class="stretch">}}
|
||||
41
content/factory/license/index.md
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: "License"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
factory:
|
||||
parent: "factory"
|
||||
weight: 305
|
||||
toc: true
|
||||
---
|
||||
|
||||
Kerberos Factory is a closed source solution that is made available free of charge. The solution and its source code is maintained by the Kerberos.io development team, and made available through binaries through a Docker container. Kerberos Factory, and its related binaries, can be used under the MIT license.
|
||||
|
||||
## The MIT License (MIT)
|
||||
|
||||
Copyright © `2021` `Kerberos.io`
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the “Software”), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -15,6 +15,8 @@ toc: true
|
||||
|
||||
If not already the case, start by creating a Kubernetes cluster. This can be done though one of the hyperscalers (**AWS**, **GCP** or **Azure**), cloud providers (Digital Ocean, Scaleway, etc) or inside your private cloud; for the latter it is advised [to follow the edge installation](/vault/installation-edge).
|
||||
|
||||
{{< figure src="vault-cloud-deployment.svg" alt="Bring your own storage using Kerberos Vault" caption="Bring your own storage using Kerberos Vault" class="stretch">}}
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Kerberos Vault is the storage component of the Kerberos Enterprise Suite. It is used to store your recordings at a central place, on the storage system you prefer. Next to that it can be used for extension and integration capabilities. Learn more about [Kerberos Vault here](/vault).
|
||||
|
||||
110
content/vault/installation-cloud/vault-cloud-deployment.svg
Normal file
|
After Width: | Height: | Size: 44 KiB |
@@ -17,6 +17,8 @@ Welcome to the Kerberos Vault Edge installation. This is the way to go if you wa
|
||||
|
||||
Before we can start installing the different deployments in our cluster, we need to make sure we have a Kubernetes cluster available.
|
||||
|
||||
{{< figure src="vault-edge-deployment.svg" alt="Store your recordings at the edge with Kerberos Vault" caption="Store your recordings at the edge with Kerberos Vault" class="stretch">}}
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Kerberos Vault is the storage component of the Kerberos Enterprise Suite. It is used to store your recordings at a central place, on the storage system you prefer. Next to that it can be used for extension and integration capabilities. Learn more about [Kerberos Vault here](/vault).
|
||||
@@ -27,6 +29,8 @@ To use Kerberos Vault, you will need to have one or more Kerberos Agents install
|
||||
|
||||
Kerberos Vault requires some initial components to be installed. If you run Kerberos Vault in the same cluster as where you have a Kerberos Factory installed, there is not much to do.
|
||||
|
||||
{{< figure src="vault-edge-storage.svg" alt="Store your recordings at the edge with Kerberos Vault" caption="Store your recordings at the edge with Kerberos Vault" class="stretch">}}
|
||||
|
||||
If you plan to run Kerberos Vault in a different cluster (which is perfectly possible), you will need to make sure you complete the initial setup of [Kerberos Factory Edge](/enterprise/installation-edge) installation. To be more specific you will need the following components running:
|
||||
|
||||
- Helm
|
||||
|
||||
212
content/vault/installation-edge/vault-edge-deployment.svg
Normal file
|
After Width: | Height: | Size: 83 KiB |
528
content/vault/installation-edge/vault-edge-storage.svg
Normal file
|
After Width: | Height: | Size: 101 KiB |
@@ -29,13 +29,12 @@ Install Kerberos Vault on a Kubernetes Service Provider by [following this step-
|
||||
|
||||
{{< figure src="vault-cloud-deployment.svg" alt="Bring your own storage using Kerberos Vault" caption="Bring your own storage using Kerberos Vault" class="stretch">}}
|
||||
|
||||
## Installation in Private cloud or Baremetal
|
||||
## Installation in a private cloud or at the edge
|
||||
|
||||
No need to install Kerberos Vault on a Kubernetes Service Provider, it can be installed on your own Kubernetes cluster in your private cloud, or at the edge. The closer you bring Kerberos Vault to your video streams, and Kerberos Agents, the more benefits you will experience (low latency, low bandwidth, etc).
|
||||
|
||||
In contradiction to the Kubernetes Service Provider, there will be more work required. Setting up a Kubernetes Cluster, configure a load balancer, create persistent bolumes and claims.
|
||||
|
||||
Install Kerberos Vault on a Private cloud or Baremetal by [following this step-by-step installation guide](/vault/installation-edge).
|
||||
|
||||
Install Kerberos Vault on a private cloud or at the edge by [following this step-by-step installation guide](/vault/installation-edge).
|
||||
|
||||
{{< figure src="vault-edge-deployment.svg" alt="Store your recordings at the edge with Kerberos Vault" caption="Store your recordings at the edge with Kerberos Vault" class="stretch">}}
|
||||
|
||||
492
content/vault/machine-learning/gpu-to-cpu.svg
Normal file
|
After Width: | Height: | Size: 426 KiB |
@@ -73,8 +73,7 @@ So having above example let us get a bit more concrete on how this is functionin
|
||||
|
||||
As illustrated in previous example, it should become clear that by chunking videos, distributing them over a flexible pool of GPUs, allows to provide a scalable and flexible way. Video streams are decouples from GPUs, and each of them can be scaled independently. Video chunks created by one or more Kerberos Agents are distributed over a pool of GPUs without knowing upfront which GPU will process which video chunk from which Kerberos Agent.
|
||||
|
||||
|
||||
-- TODO add illustration where we show the power of decoupling.
|
||||
{{< figure src="gpu-to-cpu.svg" alt="GPUs and CPUs are decoupled. Any recording, independent of any video stream, will be distributed to the GPU pool." caption="GPUs and CPUs are decoupled. Any recording, independent of any video stream, will be distributed to the GPU pool." class="stretch">}}
|
||||
|
||||
## Machine learning at the edge
|
||||
|
||||
|
||||
@@ -43,6 +43,17 @@
|
||||
</ul>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ range .Site.Menus.factory -}}
|
||||
<h3>{{ .Name }}</h3>
|
||||
{{ if .HasChildren -}}
|
||||
<ul class="list-unstyled">
|
||||
{{ range .Children -}}
|
||||
{{- $active := or ($currentPage.IsMenuCurrent "factory" .) ($currentPage.HasMenuCurrent "factory" .) -}}
|
||||
<li><a class="docs-link{{ if $active }} active{{ end }}" href="{{ .URL | relURL }}">{{ .Name }}</a></li>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ range .Site.Menus.vault -}}
|
||||
<h3>{{ .Name }}</h3>
|
||||
{{ if .HasChildren -}}
|
||||
|
||||