Products | Versions |
---|---|
Spotfire Server | 12.4.0 |
This guidance is for those who want to quickly spin up a new Spotfire Server in an Azure Kubernetes Service (AKS) cluster to test issues when using the Spotfire Cloud Deployment Kit (CDK). The example in this article uses an Almalinux9 machine (mymachine.company.com), but the commands shown below are also expected to work with other yum/dnf compatible Linux distributions such as RHEL, Fedora, and CentOS.
$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc $ sudo dnf install -y https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm $ sudo dnf install azure-cli
$ sudo dnf -y upgrade $ sudo dnf -y install yum-utils $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin --allowerasing $ sudo systemctl enable docker $ sudo systemctl start docker $ sudo usermod -aG docker $USER $ newgrp docker $ exit $ exit
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" $ curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256" $ echo "$(cat kubectl.sha256) kubectl" | sha256sum --check kubectl: OK $ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl $ kubectl version
$ sudo yum -y install git $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh $ helm --help
$ export AZ_APP_DISPLAY_NAME=SpotfireAzApp $ export AZ_GROUP_NAME=CompanyResourceGroup
$ export AZ_ACR_NAME=sfazacr $ export AKS_CLUSTER_NAME=azapps
$ rm -rf az-login-info.json $ az logout $ az login -u "sso-user@company.com" > az-login-info.json $ export AZ_TENANT_ID=$(jq .[].tenantId az-login-info.json | tr -d '"') $ export AZ_SUBSCRIPTION_ID=$(jq .[].id az-login-info.json | tr -d '"') $ rm -rf app-role-manifest.json $ echo -e \ "[{ \ \"allowedMemberTypes\": [ \ \"User\" \ ], \ \"description\": \"Admin App Role for Spotfire Server.\", \ \"displayName\": \"SpotfireAdmin\", \ \"isEnabled\": \"true\", \ \"value\": \"admin\" \ }]" | jq . > app-role-manifest.json $ rm -rf az-app-manifest.json $ az ad app create \ --display-name $AZ_APP_DISPLAY_NAME \ --app-roles "@app-role-manifest.json" \ --enable-access-token-issuance true \ --enable-id-token-issuance true > az-app-manifest.json $ rm -rf az-sp-info.json $ az ad sp create-for-rbac \ --name $AZ_APP_DISPLAY_NAME \ --role "Contributor" \ --scopes /subscriptions/$AZ_SUBSCRIPTION_ID/resourceGroups/$AZ_GROUP_NAME > az-sp-info.json $ export AZ_APP_SECRET=$(jq .password az-sp-info.json | tr -d '"') $ export AZ_SERVICE_PRINCIPAL_ID=$(jq .appId az-sp-info.json | tr -d '"')
$ az role assignment create \ --role "AcrPush" \ --scope /subscriptions/$AZ_SUBSCRIPTION_ID/resourceGroups/$AZ_GROUP_NAME \ --assignee $AZ_SERVICE_PRINCIPAL_ID $ az role assignment create \ --role "AcrPull" \ --scope /subscriptions/$AZ_SUBSCRIPTION_ID/resourceGroups/$AZ_GROUP_NAME \ --assignee $AZ_SERVICE_PRINCIPAL_ID $ az role assignment create \ --role "User Access Administrator" \ --scope /subscriptions/$AZ_SUBSCRIPTION_ID/resourceGroups/$AZ_GROUP_NAME \ --assignee $AZ_SERVICE_PRINCIPAL_ID
$ az login \ --service-principal \ --username=$AZ_SERVICE_PRINCIPAL_ID \ --password=$AZ_APP_SECRET \ --tenant=$AZ_TENANT_ID $ az acr create \ --name=$AZ_ACR_NAME \ --resource-group=$AZ_GROUP_NAME \ --sku=basic --output=json
$ export AKS_IP_RANGE=$(curl ifconfig.me)
$ az aks create \ --name $AKS_CLUSTER_NAME \ --resource-group $AZ_GROUP_NAME \ --os-sku AzureLinux \ --api-server-authorized-ip-ranges $AKS_IP_RANGE \ --generate-ssh-key
$ az aks update \ --name $AKS_CLUSTER_NAME \ --resource-group $AZ_GROUP_NAME \ --attach-acr $AZ_ACR_NAME
$ az aks get-credentials \ --overwrite-existing \ --resource-group=$AZ_GROUP_NAME \ --name=$AKS_CLUSTER_NAME $ kubectl get node NAME STATUS ROLES AGE VERSION aks-nodepool1-10599113-vmss000000 Ready agent 2m4s v1.25.6 aks-nodepool1-10599113-vmss000001 Ready agent 2m1s v1.25.6 aks-nodepool1-10599113-vmss000002 Ready agent 2m7s v1.25.6
$ helm repo add bitnami https://charts.bitnami.com/bitnami $ helm install vanilla-tssdb bitnami/postgresql $ export POSTGRES_PASSWORD=$(kubectl get secret \ --namespace default vanilla-tssdb-postgresql \ -o jsonpath="{.data.postgres-password}" | base64 -d)
$ git clone https://github.com/TIBCOSoftware/spotfire-cloud-deployment-kit.git -b v1.4.0
$ ls -al ~/spotfire-cloud-deployment-kit/containers/downloads/ total 1868370 drwxr-xr-x 2 myuser svc_dev_str_server_admins 10 Jul 10 09:31 . drwxr-xr-x 13 myuser svc_dev_str_server_admins 15 Jul 10 09:31 .. -rw-r--r-- 1 myuser svc_dev_str_server_admins 52 Jul 10 09:31 .gitignore -rwxr-xr-x 1 myuser svc_dev_str_server_admins 248434933 Jul 10 09:31 Spotfire.Dxp.netcore-linux.sdn -rwxr-xr-x 1 myuser svc_dev_str_server_admins 150882007 Jul 10 09:31 Spotfire.Dxp.PythonServiceLinux.sdn -rwxr-xr-x 1 myuser svc_dev_str_server_admins 419967725 Jul 10 09:31 Spotfire.Dxp.sdn -rwxr-xr-x 1 myuser svc_dev_str_server_admins 128760600 Jul 10 09:31 Spotfire.Dxp.TerrServiceLinux.sdn -rwxr-xr-x 1 myuser svc_dev_str_server_admins 318626713 Jul 10 09:31 TIB_sfire_server_12.4.0_languagepack-multi.zip -rwxr-xr-x 1 myuser svc_dev_str_server_admins 267634757 Jul 10 09:31 tsnm-12.4.0.x86_64.tar.gz -rwxr-xr-x 1 myuser svc_dev_str_server_admins 376060615 Jul 10 09:32 tss-12.4.0.x86_64.tar.gz
$ cd ~/spotfire-cloud-deployment-kit/containers $ make build
$ az acr login -n $AZ_ACR_NAME $ make REGISTRY=$AZ_ACR_NAME.azurecr.io push
$ cd ../helm/ $ make
$ cd charts/spotfire-server/ $ TOKEN=$(az acr login --name $AZ_ACR_NAME --expose-token --output tsv --query accessToken) $ docker login $AZ_ACR_NAME.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN $ helm install tss1240azure . \ --set acceptEUA=true \ --set global.spotfire.image.registry="$AZ_ACR_NAME.azurecr.io" \ --set global.spotfire.image.pullPolicy="Always" \ --set database.bootstrap.databaseUrl="jdbc:postgresql://vanilla-tssdb-postgresql.default.svc.cluster.local/" \ --set database.create-db.databaseUrl="jdbc:postgresql://vanilla-tssdb-postgresql.default.svc.cluster.local/" \ --set database.create-db.adminUsername="postgres" \ --set database.create-db.adminPassword="$POSTGRES_PASSWORD" \ --set database.create-db.enabled=true \ --set configuration.site.publicAddress="http://localhost"
Here, we have set the helm release name to something descriptive: 'tss1240azure' (to indicate that this is a Spotfire Server 12.4.0 deployment, and it runs in Azure).
$ export SPOTFIREADMIN_PASSWORD=$(kubectl get secrets \ --namespace default tss1240azure-spotfire-server \ -o jsonpath="{.data.SPOTFIREADMIN_PASSWORD}" | base64 --decode) $ echo $SPOTFIREADMIN_PASSWORD i036eadkxlfJ
$ kubectl port-forward --address 0.0.0.0 --namespace default service/tss1240azure-haproxy 8081:80
Github: Cloud Deployment Kit for TIBCO Spotfire