Running system checks using Meshery CLI

Meshery’s CLI, mesheryctl, includes commands for verifying system readiness for a Meshery deployment and health checks to confirm the health of an existing Meshery deployment. Whether you have yet to deploy Meshery or have already deployed Meshery, mesheryctl system check is a useful utility to ensure that your Meshery deployments are healthy.

mesheryctl system check


Verify environment pre/post-deployment of Meshery. Usage: mesheryctl system check [flags] Flags: --adapter Check status of Meshery adapters -h, --help help for check --operator Check status of Meshery operators --pre Verify environment readiness to deploy Meshery --preflight Verify environment readiness to deploy Meshery Global Flags: --config string path to config file (default "/Users/navendu/.meshery/config.yaml") -c, --context string (optional) temporarily change the current context. -v, --verbose verbose output -y, --yes (optional) assume yes for user interactive prompts.

Deployment checks

mesheryctl system check command can run two types of system checks. A pre-deployment check which verifies the environment to deploy Meshery and a post-deployment check which runs validation checks on a running Meshery deployment.

Pre-deployment checks

Pre-deployment checks runs checks on the environment and verifies whether it is ready for deploying Meshery.

The following checks are done here:

  • Docker health checks: Checks for the availability of Docker and docker-compose in the user’s machine
  • Kubernetes health checks: Checks for the availability of a Kubernetes cluster and checks if Meshery can initialize a Kubernetes client
  • Kubernetes version checks: Checks if kubectl and the Kubernetes version are higher than the minimum supported versions

Pre-deployment checks are run with the --preflight flag as shown below:

mesheryctl system check --preflight

Post-deployment checks

Post-deployment checks are run after deploying Meshery in the user’s environment. These checks ensure that the running deployment of Meshery and Meshery adapters are working as expected.

In addition to the pre-flight checks, the following checks are also run in this check:

  • Meshery version checks: Checks the version of Meshery server and CLI and shows if a new version is available
  • Meshery Adapter health checks: Checks if all the specified adapters are deployed and reachable

Post-deployment checks are run as shown below:

mesheryctl system check

Additional checks

To check the status of the deployed adapters only, users can leverage the --adapter flag as shown below:

mesheryctl system check --adapter

Users can also narrow down the tests to just check the status of the Meshery operator deployed on their Kubernetes cluster:

mesheryctl system check --operator

FAQ

Question: While running mesheryctl system check --preflight it says I didn’t install Kubernetes, but I have Docker installed and the test returned “Meshery prerequisites met”. Is that all good?

Answer: Yes, as long as you’ve Docker installed, it’s fine to run Meshery. But you will need a Kubernetes cluster to handle tasks such as deploying service mesh and so on, if you want to do them via Meshery.

Question: I ran a preflight check to see if I satisfy all requirements for Meshery in my system. It returned postive results but I couldn’t start Meshery. What to do?

Answer: Make sure if you’ve configured your system to run Meshery in smooth manner. For configuration, do check out the docs site and this page to see instructions related to the platform you use.

Question: Do I need a Kubernetes cluster or will a Docker host suffice for Meshery deployments?

Answer: Meshery’s performance management functionality does not require a Kubernetes cluster. The rest of Meshery’s functionality (e.g. service mesh management) does require a Kubernetes cluster.

Question: What are Meshery’s production deployment requirements?

Answer: One or more Kubernetes clusters. A stateful set for Meshery Server in order to persist performance test results. See #2451.

Question: For system checks, do I need any add-ons to pass the check?

Answer: Not necessary. Basic requirements are enough to pass the check.

Question: The Adapter check is failing, it returns “Auth token not found”.

Answer: You can log in to Meshery using mesheryctl system login which would generate an OAuth token. Once the OAuth token is generated, the check will start to function

Question: I have a Kubernetes cluster enabled but Meshery couldn’t reach the cluster and the checks are failing! What to do?

Answer: To resolve this error, you can upload your kubeconfig file in the Meshery UI under settings and Meshery will reconfigure to use your Kubernetes cluster.

Question: Under Meshery Version test, I’m getting an error like “CLI is not up-to-date”. Should I update mesheryctl often?

Answer: Yes! You should update the mesheryctl often in order to run Meshery smoothly. The reason behind it is because not only the CLI is updated, but also the Meshery app. So it is advisable to update Meshery often.

Question: Is it advisable to keep Meshery in sleep mode while running system checks?

Answer: Not necessary. It is good to keep Meshery up and running, else the system checks will fail to detect the Meshery version.

Question: What is the minimum version of k8s cluster and kubectl required to run Meshery?

Answer: For Kubernetes, version >=1.12.0 is recommended. For kubectl version >=1.12 is recommended.

Question: In the “Meshery Adapter” section of check, I could see only some service mesh adapters up and running and not all. Is this fine?

Answer: Not a problem, if you feel you need to have all mesh adapters to be up running, you can do so by creating a new context mesheryctl system context create [context-name] --set (if you voluntarily deleted mesh adapters in your current context)

Question: I started Meshery fresh, didn’t change any of the details in the context I have. But I see that all adapter checks are failing. What to do?

Answer: Configure Meshery to use on your Kubernetes cluster, then upload the kubeconfig file via Meshery UI to notify Meshery to use that cluster. If that didn’t work, feel free to open up an issue in GitHub.

Suggested Reading

For an exhaustive list of mesheryctl commands and syntax:

Guides to using Meshery’s various features and components.