Child Issue- [mesheryctl] [child] Create mesheryctl exp preflight to verify environment readiness for a Meshery deloyment #2607
Current Behavior
Users are able to run mesheryctl system status to check whether Meshery containers are running or not in their local Docker environment (using docker-compose). Users are not, however, able to perform to other types of checks in-depth:
check - a sophisticated check encompassing current environment and current Meshery deployment health. Should include aspects of system version and of system status.preflight - for verification of presence of dependencies and overall environment readiness for a Meshery deploymentDesired Behavior
mesheryctl should provide a utility to aid in the troubleshooting of Meshery deployments. This utility will need to run a number of health checks.
Implementation
experimental command, create mesheryctl experimental system check.--preflight flag like so: mesheryctl system check --preflight, which only runs the Docker and Kubernetes checks.Mockups
โ ~ mesheryctl system check
Docker
--------------
โ Docker is running
โ docker-compose is available
Kubernetes API
--------------
โ can initialize the client
โ can query the Kubernetes API
โ has required level of privileges
Kubernetes Version
------------------
โ is running the minimum Kubernetes API version
โ is running the minimum kubectl version
Meshery Version
---------------
โ server is up-to-date (stable-v0.x.x)
โ cli is up-to-date (stable-v0.x.x)
Meshery Adapters
---------------
โ meshery-istio adapter is reachable and running
โ meshery-consul adapter is reachable and running
โ meshery-linkerd adapter is reachable and running
.
.
.
โ meshery-nginx-sm adapter is reachable and running
โ meshery-octarine adapter is reachable and running
Acceptance Tests
_Meshery Version_
/api/server/version endpoint on Meshery server and should use the mesheryctl system version function to check on the client version. It should inform the user if a later version of either server or client is available. It should warn the user if the server and client are not at the same version number._Meshery Adapters_
/api/mesh/adapter/ping endpoint on Meshery to run an ad-hoc connectivity tests for all known adapters._Kubernetes_
worth splitting this into multiple issues so that folks can pick up sections of this?
Yes, most certainly.
With that said I can look into this unless someone else wants to pick this up?
Yes, most assuredly.
Our conversation stopped just shy of me having reach down deep for another adverb.
Meshery Adapters
To verify availability of Meshery adapters, this check should invoke the `` endpoint on Meshery to run an ad-hoc connectivity tests for all known adapters.
What is the endpoint above? Just states ``
Here we are. Adapter ad-hoc ping test: /api/mesh/adapter/ping - https://github.com/layer5io/meshery/blob/master/handlers/mesh_ops_handlers.go#L268
URL Encoded Example:
http://localhost:9081/api/mesh/adapter/ping?adapter=meshery-consul%3A10002 (%3A being a colon)
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue is being automatically closed due to inactivity. However, you may choose to reopen this issue.
Hey @leecalcote is this open? Can I try this?
@piyushsingariya @leecalcote This seems like a big task. We should consider splitting it up...
@leecalcote @piyushsingariya We can first start with implementing preflight. And check should run preflight plus ping the adapters. How does that sound?
@navendu-pottekkat Agreed, preflight should be implemented first.
@leecalcote @piyushsingariya I have moved the preflight checks to #2607