Smart Vision v2.4-Application Deployment Process

Contents

  1. Important Terms  
  2.   ‎Prerequisites   
  3. Download the installation package in bastion VM 
  4. Validation of Product Infra before Application Install ‎  
  5. Prepare the bastion VM  ‎  
  6. Application Install  
    1. Setting secrets in Azure Key Vault.  
    2.   ‎ Create / Update Env JSON file 
      1. Option 1: Restore data from an old Environment and install Invoice Extraction 
      2. Option 2: Fresh Install Invoice Extraction 
    3. HTTPS Enablement after Application Installation
  7. Validation for Successful Deployment
  8. Creating Keys in Azure Key Vault for Data Encryption 
  9. Azure Disk Encryption in AKS
  10. Data Encryption of Azure Database for MySQL with a customer-managed key 
  11. Data Encryption of Azure Storage account using Customer Managed Key ‎ 
  12. Secondary download location: Azure Artifacts  
  13. List of containers for which autoscaling is enabled   ‎
  14. How to monitor Kubernetes deployments using K9s
  15. Generating Offline Token
  16. Maintenance URLS
  17. AD Integration Steps
  18. Known Issues
  19. Post Deployment Activity from Deployment perspective
  20. FAQ

Important Terms  

 

Bastion VM 

The Virtual Machine which has access to Kubernetes API server 

Base Infra 

The base Infrastructure which needs to be created before deploying product Infrastructure 

Product Infra 

The Kubernetes infrastructure required for respective product 

SmartInstall 

The Holistic Solution for deploying SmartOps applications in Kubernetes infrastructure 

 
‎Prerequisites   

 

Download the installation package in bastion VM 

The Release packages are stored in SharePoint location and in azure artifacts. Please follow below steps for downloading. 

Primary Download location: Share point  

  1. Navigate to sharepoint location:https://ustglobal.sharepoint.com/teams/InnovationEngineering/Shared%20Documents/Forms/AllItems.aspx?viewid=f349a736%2D8a62%2D467f%2D8448%2D067be464bd59&id=%2Fteams%2FInnovationEngineering%2FShared%20Documents%2FKnowledge%20Management%2FSmartOps%20Deployment  

  2. Open the required release folder (eg:7.0.3) 

  3. Download the product zip and move it to the target VM 

 

Secondary download location: Azure Artifacts  

Prerequisite: using below command install az cli in the target deployment vm   

 curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash 

       

  1. Navigate to 
    https://dev.azure.com/USTInnovationEngineering/SmartOps/_packaging?_a=feed&feed=Smartops_Releases  
     

  2. Click on the required package.  
    Picture 1

  3. Click on Versions  
    Picture 2 

  4. Click on the options button (…) and select ‘Copy Install Command’. The download command will get copied to clipboard  
    Picture 3 

  5. Login to VM where you want to extract the package and execute the command.
    Picture 4

 

Note:  If its first time you will be prompted to install azure-devops extension. Give ‘Y’ and hit enter to continue.  

Validation of Product Infra before Application Install  

Az MYSQL Firewall policies 

Picture 5

Key vault permissions for the Azure AD user. ‎ 
Picture 6  

  1. Access to key vault can be enabled by configuring Key Vault access policies. 

  2. Before proceeding with deployment, we need to validate  

    1. Access is enabled for Disk Encryption 

    2. Permission model set as Vault access policy 

    3. Respective applications and resources are added with required access under APPLICATION section  

    4. Azure service principal needs Get permission to Key Vault secrets. 

Picture 7 

Picture 9 

Private Endpoint’s IP associations 

  1. we have 4 private endpoints per environment. For these 4 private endpoints, we have 3 private DNZ zones. One private zone per Azure blob, Azure Key Vault and Azure MySQL instances.  

  2. There should be a private IP against each of these services. If this private IP is not associated to the respective private endpoints, application deployments will fail as the K8s cluster will not be able to communicate with these private endpoints.  We must manually add it via Azure portal, if found not associated.  

PFB screenshots for reference  

Key Vault Private Endpoint and its Private IP 

Picture 10 Above Key Vault’s Private IP associated with respective Private Link of Key Vault 

Picture 11 

Update Private IP in Private Link  

Picture 13 

Picture 14 

Picture 15 

Picture 16 

Prepare the bastion VM   

Install Tools: script to install prerequisite packages in bastion VM 

  Connect to cluster (Kube config configured)  

Picture 17 

 

Picture 18 

Pre-Check condition:  Please check Python 3.6 is installed in the bastion VM. [ SmartInstall runs on Python 3.6] 

Application Install  

Setting secrets in Azure Key Vault.  

Picture 19 

Azure Login from bastion VM 

Picture 20Once Signed in successfully, there will be message in the browser like below ‎  

Picture 21 

 


‎./create-az-kv-secrets.sh <subscription_id> <key_vault_name> <namespace_name> 

 

 

Picture 23 
Create / Update Env JSON file 

 

Keys  

Sub Keys  

   

   

Suggested Values  

Info   

name  

   

   

   

stg01  

Name of the environment 

(Note: Click jacking fixes implemented will not take effect ,if the name space has a substring “dev” )

product  

   

   

   

invoiceextv1  

Name of product which needs to be deployed. Json file name in products folder.   

version  

   

   

   

7.0.3  

Helm Chart version  

dnsName  

   

   

   

   

DNS name of the environment  

includeIngress  

   

   

   

true  

Ingress needs to be deployed or not  

ingressIp  

   

   

   

  

IP of Ingress  

isPrivateIngress  

   

   

   

true   

For Private Kubernetes cluster, the internal traffic is through internal Kubernetes load balancer.  

 isProduction

 

 

 

  true

Debug logs will be enabled for DU containers based on the value provided here.For production this value should be true

isRollBackEnabled

 

 

 

true

Rollback will be enabled.

gpuEnabled  

   

   

   

true  

For Kubernetes cluster which needs GPU node pools  

helmRepoLocation  

   

   

   

../charts   

Helm repo location. Either smartops-helm repo or the charts folder inside the package  

defaultAppReplicaCount  

   

   

   

2  

Number for replicas of application containers  

secretProvider  

   

   

   

   

For managing kubernetes secrets  

   

azure  

   

   

   

Provider is Azure for K8s cluster deployed in Azure infrastructure  

   

tenantId  

   

   

   

Tenant ID of Azure subscription  

   

servicePrincipal  

   

   

   

Service principle client id and client secrets   

   

   

clientId  

   

   

  

   

   

clientSecret  

   

   

  

   

keyVaultName  

   

   

   

Azure keyvault name where the secrets are configured with its respective values  

autoScaling  

   

   

   

   

For critical applcation containers, autoscaling is enabled through kubernetes Horizontal Pod Autoscaler  

   

enabled  

   

   

true  

Set true to enable autoscaling for supported services.   

diskEncryption  

   

   

   

   

Encryption for Data at rest.   

   

enabled  

   

   

true  

  

   

azure  

   

   

   

Azure Disc Encryptionset ID.   

storage  

   

   

   

   

Details of various data stores.   

   

mysql  

   

   

   

   

   

   

host  

   

   

Azure MySQL instance name  

   

   

port  

   

   

Port number  

  

  

backup  

  

  

  

  

  

  

enabled  

true  

  

  

  

  

schedule  

0 2 * * *  

  

   

appFileStore  

   

   

   

   

   

   

azure  

   

   

Provider Azure   

   

   

storageAccount  

   

   

Storage account name for application files storage  

   

modelFileStore  

   

   

   

   

   

   

azure  

   

   

Provider Azure   

   

   

storageAccount  

   

   

Storage account where the pre-trained models are stored for various applications.   

   

backupFileStore  

   

   

   

   

   

   

azure  

   

   

Provider Azure   

   

   

storageAccount  

   

   

Storage account where backup files are stored  

   

mongo  

volumeSize  

   

   

Mongo instance details with the volume configuration, backup and its schedule.   

   

   

backup  

   

   

   

   

   

   

enabled  

true  

   

   

   

   

schedule  

0 2 * * *  

   

   

elasticsearch  

   

   

   

   

   

   

volumeSize  

   

   

Elasticsearch instance details with the volume configuration, backup and its schedule.   

   

   

backup  

   

   

  

   

   

   

enabled  

true  

  

   

   

   

schedule  

0 2 * * *  

  

   

rabbitmq  

   

   

   

   

   

   

volumeSize  

   

   

RabbitMQ instance details with the volume configuration, backup and its schedule.   

   

   

backup  

   

   

  

   

   

   

enabled  

true  

  

   

   

   

schedule  

0 2 * * *  

  

   

appStatefulSets  

   

   

   

Volume size configuration for application services which are statefulsets. Eg. du-archival   

   

   

volumeSize  

   

 16Gi  

   

   

   

   

   

   

   

   

   

   

   

   

   

logMonitoring  

   

   

   

   

Details for enabling log monitoring, log retention, cleanup and storage volume size.   

   

enabled  

   

   

true   

Recommended to set as true  

   

logRetentionInDays  

   

   

5   

For logs before the configured number of days will be automatically removed as per the cleanup cron schedule.   

   

logCleanUpCronSchedule  

   

   

 0 1 * * *  

Time duing which the retention job will run.   

 

 

 

 

 

 

   

logVolumeSize  

   

   

128Gi  

Immutable after first install.    

 

 

 

 

   

 

dataRestore  

databases  

   

   

   

This section applies only when smartinstall runs in restore mode. List of Data stores which needs to be restored  

   

mysqlBackupPath  

   

   

   

folder name inside Azure blob where mysql back up files are stored  

   

mysqlBackupFileName  

   

   

   

File name of mysql back up file  

   

mongoBackupPath  

   

   

   

folder name inside Azure blob where mongo back up files are stored  

   

mongoBackupFileName  

   

   

   

File name of mongo back up file  

   

elasticBasePath  

   

   

   

Path of Elasticsearch backup file in Azure blob  

   

minioBackupPath  

   

   

   

Folder name of Minio backup file in Azure blob  

   

rabbitmqBackupPath  

   

   

   

folder name inside Azure blob where RabbitMQ back up files are stored  

   

rabbitmqBackupFileName  

   

   

   

File name of RabbitMQ back up file  

   

restoreContainer  

   

   

   

Azure Blob container name where back up files are stored 

customParams

 

     

New change as part of custom parameter and version change in product JSON

roleBasedAccess

superAdmin"

       

 

 

enabled  

 

false

 

 

 

groupId

 

NA

 

 

productViewer

 

 

 

 

 

 

enabled  

 

false

 

 

 

groupId

 

NA

 

 

productAdmin

 

 

 

 
   

enabled  

 

false

 
   

groupId

 

NA

 

  

 

 

There are two paths for application install. You can take only one of the routes. 

  1. Restore data from an old Environment (E.g., 6.4.3) and install Invoice Extraction 

  2. Fresh Install Invoice Extraction.   

Option 1: Restore data from an old Environment and install Invoice Extraction 

Steps 

  1. Make sure data is copied to backup storage account

Picture 56

 

Keys 

Info about the values which needs to be updated 

databases 

List of Data stores which needs to be restored 

mysqlBackupPath 

folder name inside Azure blob where mysql back up files are stored 

mysqlBackupFileName 

File name of mysql back up file 

mongoBackupPath 

folder name inside Azure blob where mongo back up files are stored 

mongoBackupFileName 

File name of mongo back up file 

elasticBasePath 

Folder name of Elasticsearch backup file in Azure blob 

minioBackupPath 

Folder name of Minio backup file in Azure blob 

rabbitmqBackupPath 

folder name inside Azure blob where Rabbitmq back up files are stored 

rabbitmqBackupFileName 

File name of RabbitMQ back up file 

restoreContainer 

Azure Blob container name where back up files are stored 

 

Picture 24 

Once the packages are downloaded to bastion VM, execute below commands to Install the application with data restore 
 

cd <package_path>/kubernetes/ smartinstall 

Picture 226

 

 

python3 restore.py --product ${product} --env ${environment} --kubecontext ${kubecontext} --verbose 

 

 

 

If the process is disrupted and ended due to any error in Infrastructure, restart execution using same above command for restore after correcting infrastructure.
If there is any interruption in network connectivity ,the session can be resumed using below command from bastion VM

Picture 227

If the process is disrupted and ended due to any error, restart execution using

Picture 25 

Verify the restore process has started successfully via K9s 

Picture 26Sample Error Log where the restore has failed.       

  1.  MySQL - access the server through PHPMyAdmin and ensure all dbs are in place. Analyze the logs for list of MySQL databases and tables restored.  

    1. Mongo - access Mongo Express and verify  

    2. RabbitMQ - via RabbitMQ management UI 

    3. Elasticsearch - Analyse smart-recovery-job pod's logs and ensure the elasticsearch restore has completed successfully 

  2. Minio - Verify Files in IE appfilestore buckets. 

Smart Recovery Start  

 

Picture 27 MySQL Restore 

Picture 28 MySQL restore completed 
Picture 29 Mongo Restore  

Picture 30 Mongo restore completed 

Picture 31 Minio Restore 

Picture 32 
Note: Minio restore completion can be verified through Kibana logs.

Elasticsearch Restore 

Picture 33

 

Steps for Database Validation of Data counts after restore process

Verify Mysql Table Counts.

Following query can be used for Mysql validation to fetch table counts from current production environment.Execute the query by logging in existing production environment.

SELECT TABLE_SCHEMA ,table_name, table_rows FROM INFORMATION_SCHEMA.TABLES

The mysql table data information is printed in Smart-Recovery logs as in below screenshots in restored environement

Picture 200

Verify Minio Table counts

Login to azure portal and open backup storage account.(eg: sasinvoiceextbackupdrn01)

Open Storage expolorer and move to the back up container. Calculate the blob count in buckets available in minio-data-backup folder,by clickin gon folder statistics as in below screen shot

Picture 201

The blob count will be displayed as in below screen shot

Picture 202

 

Once restore process completed successfully for minio as mentioned in restore process completion, the file count for minio can be validated in storage account for App file Store.

Enable all networks for appfile store.

Picture 203

Validate the count of buckets restored from backup by clicking the folder properties

Picture 204

 

Picture 205

Set the Networking setting back to “Selected Networks” once the validation completes

Picture 206

 

python3 -u install.py --product ${product} --env ${environment} --kubecontext ${kubecontext} --verbose 

 

 

If there is any interruption in the connectivity ,the session can be resumed using below command

Picture 225

Option 2: Fresh Install Invoice Extraction 

 Once the packages are downloaded to bastion VM , execute below commands to Install the application without data restore 

Open tool “screen” to have an uninterrupted session for running deployment

Picture 238

 

python3 -u installWithDataInit.py --product ${product} --env ${environment} --kubecontext ${kubecontext} --verbose 

 

 

 

Open tool “screen” to have an uninterrupted session for running deployment

Picture 241

 

HTTPS Enablement after Application Installation

Please follow the steps mentioned in below video for Certificate generation(Internal to Smartops Team)

https://web.microsoftstream.com/video/fc814048-9405-423d-adca-22d28ecc30bc?list=trending

Once the certificate is available follow below steps to enable HTTPS enablement

Application gateway Settings to Upload certificates

  1. Login to Azure portal

  2. Select application gateway created for the environment

  3. Select Listeners and add a new listener for https as in following screen shots

    Graphical user interface, text, application, email
Description automatically generated

     

  4. Upload the verified certificate file in .pfx format for the environment and provide the Cert-name same as the pfx name

  5. Use the same password used for generating the certificates

     

    Picture 208

  6. Listener added successfully

    Picture 209

  7. Create a new rule for redirecting http traffic to https listener.

    Picture 210

  8. Select Back end Target values as below by selecting redirection and setting Target URL as “https://<dns-name>”

    Picture 211

     

  9. Edit existing rule “route-smartops-apps” and select the listener as the newly created “smartops-https-listener” as below

    Picture 212

  10. Also reset the targetURL in backend targets for path based rules as “https”Picture 213

  11. Click on Save to get the changes reflected.

Validation for Successful Deployment

After Successful completion of Smart install installations, access the deployment in k9s and check all pods are in ready state

Picture 239

All pods created via Kubernetes jobs will be in completed state

Picture 240

 

Access Key cloak admin URL(Refer Appendix) and maintenance URL s from windows VM to verify the URL access

After Validation Generate offline token and restart application Stacks

Appendix 

 

Appendix consists of the following sections 

 

Creating Keys in Azure Key Vault for Data Encryption 

For enabling Data Encryption for Azure MySQL, Storage Accounts and enabling Disk Encryption for Volumes in Kubernetes cluster, we need to create Encryption keys in Azure Key vault which is used to encrypt the data.  
 

Picture 34 
 

 

Picture 35 

 

Picture 36 

 

Following are the additions to keyvaults as part of Smart Vision 2.4:

 

<NAMESPACE>-rhub-rsa-public-key with value TBA
<NAMESPACE>-rhub-rsa-private-key with value TBA
<NAMESPACE>-jfrog-artifactory-username with value so-maven-publisher
<NAMESPACE>-jfrog-artifactory-password with value @rt1factPublisher

Azure Disk Encryption in AKS


Reference: https://docs.microsoft.com/en-us/azure/aks/azure-disk-customer-managed-keys 
‎ 
# Create a DiskEncryptionSet 
# key vault name, rg, etc needs to be changed accordingly 
#key key-smartops-k8s-disk-enc-001  ( key name given as an example ) needs to be created in Azure key Vault before creating the Disk Encryption Set  
 
keyVaultId=$(az keyvault show --name kv-engg-resrch-001 --query [id] -o tsv) 

keyVaultKeyUrl=$(az keyvault key show --vault-name kv-engg-resrch-001 --name key-smartops-k8s-disk-enc-001 --query [key.kid] -o tsv) 

az disk-encryption-set create -n smartops-k8s-des-001 -l eastus -g rg-smartopsengg-dev-001 --source-vault $keyVaultId --key-url $keyVaultKeyUrl 

 
Azure cloud shell 

Picture 37 
 

Ensure Get, Wrap and Unwrap permission is set for the disk encryption set to the key created in Az key vault. 

Picture 38 

 

 

Please refer des-platform-qa01 in above pic 

 IMPORTANT: After creating the disk encryption set, select the disk encryption set and click on allow access to disk encryption key created in the key vault.   PFB pic 

Picture 39 

 

K8s storage class 
#currently kept as a part of env-setup template. Can be changed as required  

#diskEncryptionSetID values needs to be changed accordingly (  subscriptions, resourceGroups, diskEncryptionSets)  

kind: StorageClass 

apiVersion: storage.k8s.io/v1 

metadata: 

  name: pvc-ade-custom-storage-class 

provisioner: kubernetes.io/azure-disk 

parameters: 

  kind: Managed 

  skuname: Premium_LRS 

  diskEncryptionSetID: "/subscriptions/dfaa090f-c407-4e75-ac08-143cb932bdcf/resourceGroups/rg-smartopsengg-dev-001/providers/Microsoft.Compute/diskEncryptionSets/smartops-k8s-des-001" 

 
After deploying storage class, respective changes need to be made in statefulset’s pvcs referring to above custom storage class.  

Data Encryption of Azure Database for MySQL with a customer-managed key 

References:  
https://docs.microsoft.com/en-us/azure/mysql/howto-data-encryption-portal 

https://docs.microsoft.com/en-us/azure/mysql/concepts-data-encryption-mysql 

 

Key Encryption Key [ KEK ] 

Data Encryption Key [ DEK ] 

Symmetric key used to encrypt a block of data 

 

When you configure data encryption with a customer-managed key in Key Vault, continuous access to this key is required for the server to stay online.  If the server loses access to the customer-managed key in Key Vault, the server begins denying all connections within 10 minutes. The server issues a corresponding error message and changes the server state to  Inaccessible . Some of the reason why the server can reach this state are: 
 

  

Limitations 

 

Steps 

Picture 40 

 
 

Picture 42 

 

Picture 43

 

 
Errors Observed while configuring  

If soft –delete is not enabled for keyvault , will get error like below  

Picture 44 

Picture 45 

 

 

Data Encryption of Azure Storage account using Customer Managed Key ‎ 

Steps 
 

Picture 46 

 

 

 

Picture 47 

 

Select the key vault and key by clicking ‘Select a key vault and key’  

Picture 48 

 

Picture 49 

 

 

Picture 50 

 

Secondary download location: Azure Artifacts  

 

  1. Navigate to https://dev.azure.com/USTInnovationEngineering/SmartOps/_packaging?_a=feed&feed=Smartops_Releases  

 

  1. Click on the required package.  
    Picture 51 
  2. Click on Versions  
    Picture 52 
  3. Click on the options button (…) and select ‘Copy Install Command’. The download command will get copied to clipboard  
    Picture 53 
  4. Login to VM where you want to extract the package and execute the command.Picture 54 

Please Note:  If its first time you will be prompted to install azure-devops extension. Give ‘Y’ and hit enter to continue. 

 

List of containers for which autoscaling is enabled  

Container name 

CPU Threshold 

min replicas 

max replicas 

du-core-nlp 

80% 

du-pipeline 

80% 

du-rest 

80% 

du-scheduler 

80% 

du-tikaserver 

80% 

clones-engine 

80% 

 

 

How to monitor Kubernetes deployments using K9s

K9s is installed when the installbastiontools.sh script is executed. Please refer

Staying in home directory execute below command to open K9s

K9s/k9s

Or

cd k9s

./k9s

Picture 60

 

 

Generating Offline Token

  1. Login to keycloak master URL to generate offline token

    https://<dns-name>/paas/invoiceextraction/ieui/smartops/master/

     

    Picture 228

  2. Revoke existing offline Token

    Picture 229

  3. Confirm revoke process of existing offline token by clicking “Yes”

    Picture 230

  4. Click on “generate New offline Token” button

    Picture 231

  5. Confirm on generate new offline Token

    Picture 232

  6. Newly generated offline token will be available

    Picture 233

  7. Copy the offline token

  8. Login to bastion VM

  9. Do az login to with a user who has edit access for Secrets in Keyvault.

  10. Execute below command to update the offlline token in Keyvault from bastionVM.

 

az keyvault secret set --subscription <subscription-id> --vault-name <keyvault-name> --name <product-name>-<env-name>-offline-token --value "offline-token-value" -e base64

eg:

az keyvault secret set --subscription cdf5c496-95b3-4219-9117-35d4e0746d13 --vault-name kv-invoiceext-drn01 --name invoiceextv1-drn01-offline-token --value "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhODdjYzgwOS02YTA1LTQyY2MtOTY3YS0zNjk3OGFjZGFkZTUifQ.eyJqdGkiOiIwNjcxZmU3Zi00NWYwLTQzZWUtOWEyMi0xZWFiN2EzMWUyOTEiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjEwNTM4MzAzLCJpc3MiOiJodHRwczovL3NtYXJ0b3BzLWRybjAxLmVhc3R1cy5jbG91ZGFwcC5henVyZS5jb20vcGFhcy9pbnZvaWNlZXh0cmFjdGlvbi9rZXljbG9hay9hdXRoL3JlYWxtcy91c3RnbG9iYWwiLCJhdWQiOiJodHRwczovL3NtYXJ0b3BzLWRybjAxLmVhc3R1cy5jbG91ZGFwcC5henVyZS5jb20vcGFhcy9pbnZvaWNlZXh0cmFjdGlvbi9rZXljbG9hay9hdXRoL3JlYWxtcy91c3RnbG9iYWwiLCJzdWIiOiJiN2JhNTFlZS05MzFmLTQ3MDgtODNiNi1mZGRhMDc4OTUwNDEiLCJ0eXAiOiJPZmZsaW5lIiwiYXpwIjoic21hcnRvcHMtZnJvbnRlbmQiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJiMmM1NzgxYi04YWQ0LTQ5NTUtYTBiZC05MWRlNTkxMTZhMTQiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiXX0sInNjb3BlIjoib2ZmbGluZV9hY2Nlc3MifQ._G6N72VU6X-N5IHHXDjzKHUjSWgglb4cKge6JNh93dc" -e base64

  1. Open k9s/k9s

  2. Recreate “vault-secret-sync” pod to get the updated offline token secret. Click on “Cntrl+d“ to recreate the pod

    Picture 234

     

  3. Following list of containers needs restart after offline token Updation

Container name 

pwf-invoice-extraction-api

pwf-invoice-extraction-listener

pwf-invoice-extraction-listener-du

pwf-invoice-extraction-scheduler

du-pipeline

 

  1. IN K9s/Deployments, select the respective deployments and scale down replicas to “0”

    Picture 235

  2. Wait for a minute and set back replica count to 2 again. The existing pods will be removed, and new pods will be created

 

Picture 236

 

  1. Execute this step for all deployments in the list mentioned above

Maintenance URLS

Following set of URLs are used for maintenance purpose of application. Credentials for the maintenance URL is updated in below table.

Note: Maintenance URL access will be blocked from internet for production environments. Restriction rules are handled in WAF rules

Access to maintenance URLS are allowed from Windows bastion VM only.

Refer document for accessing production windows bastion VM

Eg:http://<ip_of_kub_internal_lb>/paas/<product>/kibana/

 

URL

UserName

Password

PHPMyAdmin

http://< ip_of_kub_internal_lb >/paas/invoiceextraction/phpmyadmin/

smartops-dev@<db_name>
eg: smartops-dev@invoiceext-drn01

EAHlmFoxa1ZpJbXC

Mongo Express

http://<ip_of_kub_internal_lb >/paas/invoiceextraction/mongoexpress/

mongoex

sm@rt0ps_mon_ex

Kibana URL

http://< ip_of_kub_internal_lb >/paas/invoiceextraction/kibana/

smartops

7PQgHBVsbarM7TVc

Grafana URL

http://< ip_of_kub_internal_lb>paas/invoiceextraction/grafana/

smartopsdev@ustglobal.com

7X03P7vQ064fp0d

 

AD Integration Steps

Refer following Documentation for AD integration

AD Integration Document

*Contact SmartOps Support team< smartops-support-team@ust.com > for credentials to access online documentation

Known Issues

Issues

Remarks

smartops-secrets stack failure

Secrets not correctly updated in Azure Key Vault or smartops-secrets chart

401 error while Offline Token generation

1.Getting 401 error while opening keycloak admin screen for offiline token generation

 

2. This error could be occurring due to a corrupted or invalid certificate. Upload a valid certificate in Application gateway to resolve this error.

Restore failures

1.All databases should be deployed and running in healthy state
2. Databases secrets are correctly set in Azure key vault and the deployments can derive those values in the cluster
3. Env json storage account and file names should be updated correctly.
4. Connectivity issues to be mitigated with Storage account and Azure key vault

 

 

Post Deployment Activity from Deployment perspective

As we have changed the artifacts reference from Archiva to jFrog-Artifactory, it is expected to uninstall 2 stacks deployed for smartops-archiva

helm uninstall invoiceextv1-stg01-smartops-archiva-rel --kube-context kc-smartops-invoiceext-stg01 -n invoiceextv1-stg01
helm uninstall invoiceextv1-stg01-smartops-archiva2-rel --kube-context kc-smartops-invoiceext-stg01 -n invoiceextv1-stg01

FAQ

  1. When existing working offline token got invalidated after keycloak restartWhen existing working offline token got invalidated after keycloak restart

    1.    Login to SmartOps Master Admin UI, Revoke the offline tokens generated for all the organizations.
    2.    Navigate to Keycloak Administration console, do the below step(3) for all organizations except master.
    3.    Go to Users tab, select sense_master user, go to Consents tab, check if there are any Offline Token entries, if yes, then click on Revoke button. 

    4.    Uninstall keycloak services in K8.
    5.    Clear invalid offline token entries from DB, if any. Execute the below SQL scripts in MySQL.
    TRUNCATE table keycloak.offline_client_session;
    TRUNCATE table keycloak.offline_user_session;
    6.    Install keycloak services in K8.
    7.    Login to SmartOps Master Admin UI, Generate new offline token for all the organizations
    8.    Update keyvault with new token generated for USTGlobal
    9.    Restart secret vault sync pod to reflect the new value
    10.    Confirm that pods are using new offline token.