Kubernetes Deployment#
Unryo is deployable on Kubernetes using helm charts. This method can be used to deploy the complete Unryo Platform (All-In-One) or the Unryo Collector.
Requirements#
The Unryo Platform (All-In-One) and the Unryo Collector are packaged as Helm Charts. They can be obtained online (URLs in installation steps) or you can use the Wizard for a one-liner install.
Before beginning the installation, you will need to have :
- an Unryo account
- your
kubectl
tool configured for the cluster where you would like to deploy the stack. helm
installed- a
storageClass
to persist data - every worker node that will be running Unryo to have Internet access to
https://*.unryo.com
.
Restrictions#
To date, Unryo has been tested on Kubernetes v1.19 up to v1.22, vanilla releases https://kubernetes.io/releases/
Current Helm charts and Unryo services do not support securityContext
or Pod Security Admission.
To monitor Kubernetes nodes and containers, the Unryo Collector needs hostPath
access.
All containers run with the root
user. This is required to enable several performance enhancements, and also some special ICMP packet types required for optimal network monitoring.
Install the Unryo Platform (All-In-One)#
The Unryo Platform contains everything to run a standalone Unryo solution. It has the collectors for events & metrics, the databases, analytics engine and frontend.
Installing the Chart#
To install the chart with the release name my-release
you will need to use the platform helm chart and get your Unryo Token values.
The Unryo Token and Vault Token can be reused from an existing deployment or obtained from the portal.
helm install --create-namespace --namespace unryo my-release --set "config.secret.unryoToken=REPLACE_ME_BY_YOUR_UNRYO_TOKEN,config.secret.unryoVaultToken=REPLACE_ME_BY_YOUR_UNRYO_VAULT_TOKEN" https://downloads.unryo.com/helms-unryo-fullstack-latest.tgz
The command deploys Unryo Fullstack on the Kubernetes cluster in the default configuration. The Parameters section lists the parameters that can be configured during installation.
If you wish to change multiple parameters, it may be easier to download the chart, tune the values.yaml
contained inside it, and deploy:
curl -LO https://downloads.unryo.com/helms-unryo-fullstack-latest.tgz
tar xvzf helms-unryo-fullstack-latest.tgz
helm install --create-namespace --namespace unryo my-release -f values.yaml ./unryo-fullstack
Parameters#
NAME | DESCRIPTION | DEFAULT VALUE |
---|---|---|
config.broker |
Unryo broker url used for the orchestration | https://broker.unryo.com |
config.secret.unryoToken |
Unryo token for the namespace | REPLACE_ME_BY_YOUR_UNRYO_TOKEN |
config.secret.unryoVaultToken : |
Unryo Vault token to cypher the configuration | REPLACE_ME_BY_YOUR_UNRYO_VAULT_TOKEN |
config.secret.defaultAdminPassword |
Default password to access the main portal | changeme |
config.secret.grafanaAdminPassword |
Default password for the Grafana adminisatrator | changeme |
config.storageClass |
If not set use the default storageClass ; otherwise it will use the configured storageClass |
{} |
monitoring.dockerMonitoringFromK8s |
Do you want to monitor docker directly from kubernetes ? | false |
datacollection.enabled |
If you want to remove the embedded metric/events collectors, set this to false | true |
datacollection.nodeSelector |
Defines what nodes would be selected for pods ; leave as blank to use all nodes or give a label (e.g. node-role.kubernetes.io/master: "" |
|
datacollection.tolerations |
Defines tolerations that would be applied to node for the deployments | |
databases.events.persistentVolume.size |
What PV size you want to give to the event DB? | 60Gi |
databases.metrics.persistentVolume.size |
Same question for the metrics database ? | 60Gi |
databases.nodeSelector |
Defines what nodes would be selected for pods ; leave as blank to use all nodes or give a label (e.g. node-role.kubernetes.io/master: "" |
|
databases.tolerations |
Defines tolerations that would be applied to node for the deployments | |
portal.nodeSelector |
Defines what nodes would be selected for pods ; leave as blank to use all nodes or give a label (e.g. node-role.kubernetes.io/master: "" |
|
portal.tolerations |
Defines tolerations that would be applied to node for the deployments | |
vault.nodeSelector |
Defines what nodes would be selected for pods ; leave as blank to use all nodes or give a label (e.g. node-role.kubernetes.io/master: "" |
|
vault.tolerations |
Defines tolerations that would be applied to node for the deployments | |
analytics.nodeSelector |
Defines what nodes would be selected for pods ; leave as blank to use all nodes or give a label (e.g. node-role.kubernetes.io/master: "" |
|
analytics.tolerations |
Defines tolerations that would be applied to node for the deployments | |
images.imagePullPolicy |
Default pull policy for all the images | Always |
images.imagePullSecrets |
In case you use a private repo that is secured with credentials, you can set the imagePullSecret here | {} |
images.busybox |
This value and the other ones available in the values.yaml file gives the option to specify a different registry than docker.io (e.g. in case you have a private one) |
docker.io/busybox:1.28 |
services.type |
How do you want to expose all our services outside the K8S cluster | LoadBalancer |
podSecurityPolicy.enabled |
Enable PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later. |
false |
podSecurityPolicy.name |
Name of the PodSecurityPolicy to be used. This helm chart won't create one but will have to use a predefined one. |
psp:priviledged |
Network ports exposed#
- Reporting
- Port 443/TCP - always required
- Timeseries collector (tscollect)
- Port 8186/TCP - used to receive timeseries metrics from our Linux/Windows Unryo agent, or external custom sources
- Port 162/UDP - required for SNMP trap reception
- Event collector (evcollect)
- Port 2055/UDP - required for Netflow reception
- Port 5514 - required for Syslog reception (might be TCP and/or UDP)
- Port 24224/TCP - available when you enable one of our TCP receivers, like for CDR reception
- Timeseries reception from external Unryo components
- Port 8086/TCP - could be used if you install external collectors in the future
- Event reception from external Unryo components
- Port 9200/TCP - could be used if you install external collectors in the future
- Retrieval of encrypted configuration by external Unryo components
- Port 4224/TCP - could be used if you install external collectors in the future
Install the Unryo Collector#
The Unryo Collector contains collectors for events & metrics, typically used to forward data to an Unryo Platform.
Installing the Chart#
To install the chart with the release name my-release
you will need to use the collector helm chart and get your Unryo Token value.
The Unryo Token can be reused from an existing deployment or obtained from the portal.
helm install --create-namespace --namespace unryo my-release --set "config.secret.unryoToken=REPLACE_ME_BY_YOUR_UNRYO_TOKEN" https://downloads.unryo.com/helms-unryo-collector-latest.tgz
The command deploys the Unryo collectors on the Kubernetes cluster in the default configuration. The Parameters section lists the parameters that can be configured during installation.
If you wish to change multiple parameters, it may be easier to download the chart, tune the values.yaml
contained inside it, and deploy:
curl -LO https://downloads.unryo.com/helms-unryo-collector-latest.tgz
tar xvzf helms-unryo-collector-latest.tgz
helm install --create-namespace --namespace unryo my-release -f values.yaml ./unryo-collector
Parameters#
NAME | DESCRIPTION | DEFAULT VALUE |
---|---|---|
config.broker |
Unryo broker url used for the orchestration | https://broker.unryo.com |
config.secret.unryoToken |
Unryo token for the namespace | REPLACE_ME_BY_YOUR_UNRYO_TOKEN |
config.storageClass |
If not set use the default storageClass ; otherwise it will use the configured storageClass |
{} |
monitoring.dockerMonitoringFromK8s |
Do you want to monitor docker directly from kubernetes ? | false |
datacollection.enabled |
Do you want to enable metrics and events collection | true |
datacollection.nodeSelector |
Defines what nodes would be selected for pods ; leave as blank to use all nodes or give a label (e.g. node-role.kubernetes.io/master: "" |
|
datacollection.tolerations |
Defines tolerations that would be applied to node for the deployments | |
images.imagePullPolicy |
Default pull policy for all the images | Always |
images.imagePullSecrets |
In case you use a private repo that is secured with credentials, you can set the imagePullSecret here | {} |
images.busybox |
This value and the other ones available from the values.yaml file gives the option to specify a different registry tha docke.io (e.g. in case you have a private one) |
docker.io/busybox:1.28 |
services.type |
How do you want to expose listening ports for events & logs the external world | LoadBalancer |
podSecurityPolicy.enabled |
Enable PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later. |
false |
podSecurityPolicy.name |
Name of the PodSecurityPolicy to be used. This helm chart won't create one but will have to use a predefined one. |
psp:priviledged |
Network ports exposed#
- Timeseries collector (tscollect)
- Port 8186/TCP - required if this collector needs to receive metrics from Unryo linux/windows agents, or custom sources
- Port 162/UDP - required for SNMP traps reception
- Event collector (evcollect)
- Port 2055/UDP - required for Netflow reception
- Port 5514 - required for Syslog reception (might be TCP and/or UDP)
- Port 24224/TCP - available when you enable one of our TCP receivers, like CDR reception
Uninstalling a Chart#
To uninstall/delete the my-release
deployment:
helm uninstall my-release
Upgrade a Chart#
To upgrade the my-release
deployment:
helm upgrade my-release --namespace my-namespace my-instance https://downloads.unryo.com/helms-unryo-[chart]-latest.tgz
Note that if you want to change the parameters, it is probably better to download the chart, apply your parameters and then run helm upgrade
.
Then to make sure you pull all the latest images, you can run:
kubectl -n unryo rollout restart deployment-name