1.3 Migration Guide

This guide covers the necessary steps to upgrade an existing Grey Matter 1.2 installation running on Kubernetes to Grey Matter 1.3. The procedure detailed below was run against an AWS EKS cluster but should work for other Kubernetes-based systems.

circle-info

The Grey Matter mesh shown in this guide is for demonstration/proof of concept purposes only and is not intended for production use. Contact Grey Matter Customer Supportenvelope for more information on a production deployment.

While these instructions should work against all versions of AWS EKS, they have been specifically tested and confirmed against versions: 1.15, 1.16, 1.17, 1.18.

Prerequisites

  1. Grey Matter credentials requested via Grey Matter Supportarrow-up-right

Steps

1. Confirm Grey Matter mesh is running

kubectl get pods

The output should look similar to below. Check to make sure that all the pods are in Running or Completed state. You may see more pods than listed below depending on if there are other deployed services.

NAME                                     READY   STATUS      RESTARTS   AGE
catalog-6c768b578f-t2vmv                 2/2     Running     0          4m47s
catalog-init-xgxgd                       0/1     Completed   3          4m14s
control-7849f77964-gszdt                 1/1     Running     0          6m30s
control-api-0                            2/2     Running     0          6m30s
control-api-init-cjxrx                   0/1     Completed   0          6m29s
dashboard-b8bff9c69-rzp2z                2/2     Running     0          4m47s
data-0                                   2/2     Running     0          5m11s
data-internal-0                          2/2     Running     0          5m11s
data-mongo-0                             1/1     Running     0          5m11s
edge-fd9fc77c5-6zjr2                     1/1     Running     0          5m35s
internal-data-mongo-0                    1/1     Running     0          5m11s
internal-jwt-security-7f4bbdd995-f2czx   2/2     Running     0          6m30s
internal-redis-cc7f64cd-p2gl7            1/1     Running     0          6m30s
jwt-security-757d67f477-5tqxb            2/2     Running     2          6m30s
postgres-slo-0                           1/1     Running     0          4m47s
prometheus-0                             2/2     Running     0          4m47s
redis-7957ffffd4-qshxh                   1/1     Running     0          6m30s
slo-5fbd879488-87jcl                     2/2     Running     0          4m47s

2. Download resources and set deployment type

3. Set up environment variables

Untar the migration scripts that you downloaded in the previous step.

Source-in the environment script to set the appropriate environment variables. The script will attempt to determine the host:port of the mesh load balancer. If it does not find it, you'll be prompted to enter the value manually. In that scenario, use an existing hostname and port or external IP and port.

circle-info

This script is targeted for POSIX shells like Bash. If running in Zsh, you'll need to emulate a POSIX shell.

If subsequent commands timeout or you receive errors, double check the values of the environment variables by running env | grep GREYMATTER_. You can override any of them manually to suit your needs.

4. Get Grey Matter mesh configs

Switch to the mesh directory and run the getmesh.sh script.

The getmesh.sh script should have created a bunch of directories containing the mesh configs. Run the following commands to check the generated files for content. You're just checking to make sure the configs are actually captured and the files don't contain errors or some other output.

5. Get Grey Matter Catalog configs

Switch to the catalog directory and run the getcatalog.sh script.

The command should display output similar to the below indicating a successful connection to the Catalog service. Note that some paths/URLs will be different.

The getcatalog.sh script should have created 2 directories containing the Catalog configs. Run the following commands to check the generated files for content. You're just checking to make sure the configs are actually captured and the files don't contain errors or some other output.

6. Upgrade Grey Matter mesh configs

Switch to the fabric directory in the helm-charts repo and run the Grey Matter fabric upgrade.

You should get output similar to the below indicating that the Helm chart was applied successfully.

Run this command to check the status of the Kubernetes pods.

Confirm all of the pods are in running/completed state before continuing, similar to what is shown below. You may need to rerun the previous command a few times or add the -w flag to the previous command until everything stabilizes.

7. Re-apply the mesh configs

After the Grey Matter fabric portion of the upgrade, the mesh configs that were capture in step 4 need to be reapplied.

You should see a bunch of configs getting applied and their config outputted in series (it will take a minute or two to complete). There should be no errors if everything is working and connected properly.

8. Upgrade Grey Matter Edge

At this point, you will not be able to access the dashboard until the Grey Matter edge is updated, so we will do that now.

You should receive the below output indicating that the Helm chart was successfully applied.

Run this command to check the status of the Kubernetes pods.

Confirm all of the pods are in running/completed state before continuing, similar to what is shown below. You may need to rerun the previous command a few times or add the -w flag to the previous command until everything stabilizes.

Once all the pods are in running/completed state, confirm that you can access the Grey Matter dashboard again.

9. Upgrade Grey Matter Sense

We will now upgrade Grey Matter sense. Once we do this, the Catalog service will lose its knowledge of the services due to changing the persistence to Redis. The step after this one will remedy this.

Switch to the sense directory and upgrade Grey Matter sense.

You should get the below output if the Helm charts were applied successfully.

Run this command to check the status of the Kubernetes pods.

Confirm all of the pods are in running/completed state before continuing, similar to what is shown below. You may need to rerun the previous command a few times or add the -w flag to the previous command until everything stabilizes.

10. Re-populate Catalog Service

Due to the change in persistence mechanisms, the Catalog service will need to be re-populated with the entries that were exported in a prior step.

You should see a bunch of configs getting applied and their config outputted in series. There should be no errors if everything is working and connected properly. Once the command completes, confirm that you have access to the Grey Matter dashboard and that the cards for the various services are present and green.

11. Download and run the Business Impacts migration tool

Since the persistence mechanism for business impacts was migrated to Redis, you need to run a script in order to copy over the existing business impacts.

First, navigate to the Nexus repository containing the different versions of the script using the below URL.

https://nexus.greymatter.io/#browse/browse:raw:release%2Fbi-migrationarrow-up-right

Once logged in, you will see three (3) versions of the script available with different extensions: .darwin (for MacOS), .linux (for Linux), and .windows (for Windows). Click on the version appropriate for your computer. Then click on the link next to Path in the panel on the right to download.

Before running the script, we will need to set some environment variables.

Then, navigate to the location where the script was downloaded and run the script. In the example below, we are running the .darwin version of the script from the Mac default download location (~/Downloads). You may need to change the commands accordingly if working with another OS.

You should see output similar to the below. The number of clusters updated may differ based on what's installed in the Grey Matter mesh and the business impact levels.

At this point, the upgrade is complete. Check the dashboard and services to make sure everything looks like it should.

Last updated

Was this helpful?