Cluster wide resources
Admin permissions are required to deploy cluster-wide resources. You may ask your cluster administrator to execute the following tasks if you don't have such permission.
The following resources need to be deployed:
- a Namespace
- ClusterRoles, ClusterRoleBindings, Webhook, CustomResourceDefinitions of required third-party operators and controllers.
- PriorityClass, StorageClass and IngressClass required for the Thingpark Enterprise deployment
Namespace
Create the namespace communicated to license manager at registration time
kubectl create ns $NAMESPACE
kubectl create ns istio-system
Priority Class
Helm Charts use default PriorityClass names described in prerequisites. The following manifest should be used to create the corresponding PriorityClasses:
kubectl apply -f $CONFIG_REPO_BASEURL/examples/priority-class/default.yaml
The PriorityClass values may be customized to define the priority of ThingPark Wireless with other workloads of the Kubernetes cluster.
ThingPark Wireless may be deployed using already existing PriorityClasses. In this case, this step should be skipped.
Storage Class
Recommended StorageClasses for Amazon Web Services or Azure are created using the following manifest:
kubectl apply -f $CONFIG_REPO_BASEURL/examples/storage/storage-class-$HOSTING.yaml
For other hosting options, review the storage prerequisites to create appropriate StorageClasses.
Container registry authentication
Prepare the container registry access by creating Secrets used as
imagePullSecret. Basic deployment use Actility container registry
authenticated by using InstallationID
kubectl -n $NAMESPACE create secret docker-registry thingpark-image-pull-secret \
--docker-server=repository.thingpark.com \
--docker-username=<InstallationID> \
--docker-password=<InstallationID>
kubectl -n istio-system create secret docker-registry thingpark-image-pull-secret \
--docker-server=repository.thingpark.com \
--docker-username=<InstallationID> \
--docker-password=<InstallationID>
Install third-parties operators and controllers
The usage of Ingress controller is deprecated with the 8.1.2. The thingpark enterprise deployment require now the deployment of Istio control plan and Gateway API Custom Resource Definition
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm upgrade -i istio-base istio/base -n istio-system --version 1.30.2 --set defaultRevision=default
helm upgrade -i istiod istio/istiod -n istio-system --version 1.30.2 --wait -f values-istiod.yaml
kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/experimental-install.yaml
Deploy the thingpark-data-controllers chart using your customization:
helm upgrade -i tpe-data-controllers -n $NAMESPACE \
actility/thingpark-data-controllers --version $THINGPARK_DATA_CONTROLLERS_VERSION \
-f values-data-stack-all.yaml
Deploy the thingpark-application-controllers chart:
helm upgrade -i tpe-controllers -n $NAMESPACE \
actility/thingpark-application-controllers --version $THINGPARK_APPLICATION_CONTROLLERS_VERSION \
-f values-thingpark-stack-all.yaml