Registration and configuration
Instance registration
Instance Registration consists of obtaining a valid installation ID and the corresponding license. It will allow you to:
- Gain access to the ThingPark Enterprise Software Repositories.
- Obtain the license file according to the configuration purchased in terms of allowed number of devices and base stations to provision, along with validity date.
Inputs
To get your installation ID and the corresponding license, provide to your license manager:
-
the cluster
kube-system
namespace object ID of the Kubernetes cluster using the following command:kubectl get ns kube-system -o jsonpath='{.metadata.uid}'
-
the name of the Kubernetes namespace in which you will deploy ThingPark Enterprise
Obtain installation ID and license
Along with cluster and namespace identifiers, please share with your license manager the details of the offer that has been ordered. Details are of type:
- number of years,
- number of base stations for the per base station pricing model,
- number of devices for the per device pricing model,
- trial version,
- etc. ..
Your license manager will in return generate the corresponding license on Actility Central license management tool and send it to you to pursue your installation.
Your license manager is a member within your organization who has been trained and has access to Actility Central license management tool. In case your company is not an Actility channel partner but an Actility direct customer, please contact your Actility account manager to obtain your license.
Configuration
Create Helm values
Sample of Helm values files are provided as example to configure the ThingPark deployment:
values-data-stack.yaml
: this file must be filed to be used forthingpark-data-controllers
andthingpark-data
Charts installationvalues-thingpark-stack.yaml
: this file must be filed to be used forthingpark-application-controllers
andthingpark-enterprise
Charts installation
-
Retrieve samples as a starting point (Use the tag name of the Thingpark Enterprise Release to set
RELEASE
variable):export NAMESPACE=thingpark-enterprise
export RELEASE=<release name>
export CONFIG_REPO_BASEURL=https://raw.githubusercontent.com/actility/thingpark-enterprise-kubernetes/v$RELEASE
eval $(curl $CONFIG_REPO_BASEURL/VERSIONS)
curl -O $CONFIG_REPO_BASEURL/examples/customization/values-data-stack.yaml
curl -O $CONFIG_REPO_BASEURL/examples/customization/values-thingpark-stack.yaml -
Prepare your deployment following in-line guidelines of
values-data-stack.yaml
andvalues-thingpark-stack.yaml
files. Additional information can be found in the configuration section. -
Configure the Helm repository by authenticating with the
InstallationID
helm repo add --username <InstallationID> --password <InstallationID> actility https://repository.thingpark.com/charts
helm repo update -
Validate the ThingPark configuration consistency using a dry-run:
helm template tpe actility/thingpark-enterprise --version $THINGPARK_ENTERPRISE_VERSION \
-f values-thingpark-stack.yaml
Deployment options
Storage
ThingPark deployment uses storage dynamic provisioning. To deploy on Azure or Amazon Web Services use the provided Helm values:
# Set the targeted environment
# Value azure,amazon
export HOSTING=<hosting>
curl -O $CONFIG_REPO_BASEURL/examples/hosting/$HOSTING/values-storage.yaml
For other hosting environments, the values-storage.yaml
file must be adapted
to set corresponding StorageClass names.
Inbound Load Balancer
The inbound Load Balancer can be configured by annotating the ingress-nginx controller service. To deploy on Azure or Amazon Web Services, use the provided Helm values:
# Set the targeted environment
# Value azure,amazon
curl -O $CONFIG_REPO_BASEURL/examples/hosting/$HOSTING/values-lb.yaml
Capacity Planning
Set the SEGMENT
variable to select the appropriate instance sizing
# Value in s,m,l,xl,xxl
export SEGMENT=l
curl -O $CONFIG_REPO_BASEURL/values/sizing/values-$SEGMENT-segment.yaml
Priority Class
If your deployment does not use PriorityClass names described in Prerequisites, customize the following values file:
curl -O $CONFIG_REPO_BASEURL/examples/priority-class/values-default-priority-class.yaml
Container registry
Basic deployment uses Actility container registry authenticated by
using InstallationID
. Alternatively, a private registry can be
used. It implies to:
- Sync container images to the private
- If authentication is used, create an image pull secret named
thingpark-image-pull-secret
- Configure the helm release as documented in the internal repository usage sample (TODO)
Use yq to merge configuration files:
yq eval-all '. as $item ireduce ({}; . * $item)' values-storage.yaml \
values-default-priority-class.yaml values-$SEGMENT-segment.yaml values-data-stack.yaml \
| tee values-data-stack-all.yaml
yq eval-all '. as $item ireduce ({}; . * $item)' values-storage.yaml \
values-lb.yaml values-default-priority-class.yaml values-$SEGMENT-segment.yaml \
values-thingpark-stack.yaml | tee values-thingpark-stack-all.yaml