Skip to main content

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.

tip

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 for thingpark-data-controllers and thingpark-data Charts installation
  • values-thingpark-stack.yaml: this file must be filed to be used for thingpark-application-controllers and thingpark-enterprise Charts installation
  1. 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
  2. Prepare your deployment following in-line guidelines of values-data-stack.yaml and values-thingpark-stack.yaml files. Additional information can be found in the configuration section.

  3. 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
  4. 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)
tip

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