Quick Start with Kubernetes

Prerequisites
1. Install the Meshery command line client, mesheryctl .

Available Deployment Methods

Using mesheryctl

Ensure that your current-context has platform: kubernetes configured in ~/.meshery/config.yaml. Example context:

➜  ~ mesheryctl system context view
endpoint: http://localhost:9081
token: Default
platform: Kubernetes
adapters:
- meshery-istio
- meshery-linkerd
- meshery-consul
- meshery-nsm
- meshery-kuma
- meshery-cpx
- meshery-osm
- meshery-traefik-mesh
channel: stable
version: latest

Deploy Meshery to your Kubernetes cluster by executing:

 
$ mesheryctl system start

Using Helm Charts

Run the following for default:

 
$ helm repo add meshery https://meshery.io/charts/ $ helm install my-meshery meshery/meshery --version 2.1.2

Customize of deployment the Meshery adapters:

 
$ helm repo add meshery https://meshery.io/charts/ # Manually disable the adapters you do not want to deploy $ helm install --set key=value --set key=value my-meshery meshery/meshery --version 2.1.2 # Example : Disabled the Linkerd2 adapter and check the deployment manifest that the helm will deploy $ helm install --set meshery-linkerd.enabled=false meshery/meshery --version 2.1.2 --dry-run

The key of Meshery adapters you can find here

Using Kubernetes Manifests

Meshery can also be deployed on an existing Kubernetes cluster. See compatibility table for version compatibility. To install Meshery on your cluster, clone the Meshery repo:

 
$ git clone https://github.com/layer5io/meshery.git; $ cd meshery

Create a namespace as a new logical space to host Meshery and its components:

 
$ kubectl create ns meshery

All the needed deployment yamls for deploying Meshery are included in the install/deployment_yamls/k8s folder inside the cloned Meshery folder. To deploy the yamls on the cluster please run the following command:

 
$ kubectl -n meshery apply -f install/deployment_yamls/k8s

Once the yaml files are deployed, we need to expose the meshery service to be able to access the service from outside the cluster. There are several ways a service can be exposed on Kubernetes. Here we will describe 3 common ways we can expose a service:

Ingress

If your Kubernetes cluster has a functional Ingress Controller, then you can configure an ingress to expose Meshery:

 
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: meshery-ingress annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - host: * http: paths: - path: / backend: # Please kindly check your service name and service port to confirm the Ingress can work well serviceName: meshery-service servicePort: 9081
  • LoadBalancer - If your Kubernetes cluster has an external load balancer, this might be a logical route.

  • NodePort - If your cluster does not have an Ingress Controller or a load balancer, then use NodePort to expose Meshery:

apiVersion: v1 kind: Service spec: type: NodePort

Meshery should now be connected with your managed Kubernetes instance. Take a look at the Meshery guides for advanced usage tips.