A Service mesh has
- edge proxies
- embedded proxies
- the proxies handle traffic based on rules from the control plane
Heres 3 service mesh options:
Trying Linkerd
get linkerd
- check the latest stable version here: at the time of writing it looks like
2.12.2
- get the setup instructions:
curl -sL run.linkerd.io/install > setupLinkerd.sh
- run it with
sh setupLinkerd.sh
Output might look like
Downloading linkerd2-cli-stable-2.12.2-linux-amd64...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 46.6M 100 46.6M 0 0 82.7M 0 --:--:-- --:--:-- --:--:-- 82.7M
Download complete!
Validating checksum...
Checksum valid.
Linkerd stable-2.12.2 was successfully installed 🎉
Add the linkerd CLI to your path with:
export PATH=$PATH:/home/<your-hostname>/.linkerd2/bin
Now run:
linkerd check --pre # validate that Linkerd can be installed
linkerd install | kubectl apply -f - # install the control plane into the 'linkerd' namespace
linkerd check # validate everything worked!
linkerd dashboard # launch the dashboard
Looking for more? Visit https://linkerd.io/2/tasks
- note and follow the instructions
export PATH=$PATH:/home/<yourhost>/.linkerd2/bin
- export PATH=$PATH:/home/mretfaster/.linkerd2/bin
Now linkerd
is an available cli!
Validate the setup
Linkerd check:
# https://linkerd.io/2.12/reference/cli/check/
linkerd check --pre
Linkerd core checks
===================
kubernetes-api
--------------
√ can initialize the client
√ can query the Kubernetes API
kubernetes-version
------------------
√ is running the minimum Kubernetes API version
√ is running the minimum kubectl version
pre-kubernetes-setup
--------------------
√ control plane namespace does not already exist
√ can create non-namespaced resources
√ can create ServiceAccounts
√ can create Services
√ can create Deployments
√ can create CronJobs
√ can create ConfigMaps
√ can create Secrets
√ can read Secrets
√ can read extension-apiserver-authentication configmap
√ no clock skew detected
linkerd-version
---------------
√ can determine the latest version
√ cli is up-to-date
Status check results are √
Linkerd install
linkerd install | kubectl apply -f -
Install a buncha k8s objects
# get the config files
linkerd install --crds | kubectl apply -f -
# run em
linkerd install | kubectl apply -f -
# check em
linkerd check
NOTE this check: I have 2 google vms setup with a pretty small amount of resources. I removed some unused pods/deployments etc in order for this check to complete :)
Install and setup linkerd viz
linkerd viz "manages the linkerd-viz extension of (the) Linkerd service mesh".
# install
$ linkerd viz install | kubectl apply -f -
# validate
$ linkerd viz check
# check the localhost url of the DASHBOARD!
linkerd viz dashboard &
In order to see the first linkerd viz, a "dashboard"
- the
web
deployment, in thelinkerd-viz
namespace needs to be edited- a line in the container args needs adjusting
kubectl edit deploy web -n linkerd-viz
- from
- -enforced-host=q374trob23bt8ofabef1239h
- to
- -enforced-host=
(remove all the garbly-gook after the = sign)
- the service that exposes the web deployment needs adjusting
- convert the type to a nodeport from a clusterIP (by default, the dashboard is available on "localhost" of the host node)
- set a nodePort value on the
http
port - maybe something that you'll remember!