All Projects → aspenmesh → Istio Vet

aspenmesh / Istio Vet

Licence: apache-2.0
Utility for validating Istio configuration in kubernetes cluster

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Istio Vet

Istio Handbook
Istio Service Mesh Advanced Practical - Istio服务网格进阶实战 https://www.servicemesher.com/istio-handbook/
Stars: ✭ 1,646 (+1206.35%)
Mutual labels:  service-mesh, istio
Workshop Material
Material for Kubernetes and Istio workshop https://learnistio.com
Stars: ✭ 113 (-10.32%)
Mutual labels:  service-mesh, istio
Nacos
an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
Stars: ✭ 20,691 (+16321.43%)
Mutual labels:  service-mesh, istio
Dew
微服务一站式解决方案,提供:架构指南、容器优先/兼容Spring Cloud与Service Mesh的框架、最佳实践及Devops标准化流程。
Stars: ✭ 285 (+126.19%)
Mutual labels:  service-mesh, istio
Pitstop
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event Sourcing, Domain Driven Design (DDD), Eventual Consistency.
Stars: ✭ 708 (+461.9%)
Mutual labels:  service-mesh, istio
Vertx Zero
Zero Framework:http://www.vertxup.cn
Stars: ✭ 320 (+153.97%)
Mutual labels:  service-mesh, istio
Istio
Istio官方文档中文版
Stars: ✭ 389 (+208.73%)
Mutual labels:  service-mesh, istio
meshery-operator
The service mesh operator.
Stars: ✭ 41 (-67.46%)
Mutual labels:  service-mesh, istio
Meshery
Meshery, the service mesh management plane
Stars: ✭ 608 (+382.54%)
Mutual labels:  service-mesh, istio
Istio Knowledge Map
Istio knowledge map 知识图谱
Stars: ✭ 526 (+317.46%)
Mutual labels:  service-mesh, istio
Charlescd
CharlesCD is an open source tool that makes deployments more agile, continuous and safe, which allows development teams to perform hypothesis validations with a specific group of users, simultaneously.
Stars: ✭ 275 (+118.25%)
Mutual labels:  service-mesh, istio
Learn Istio
⛵️ Istio resources 🕸
Stars: ✭ 1,025 (+713.49%)
Mutual labels:  service-mesh, istio
eks-with-istio
Terraform template for a production ready EKS Cluster and ISTIO Service Mesh 🐳 📦 🚀
Stars: ✭ 32 (-74.6%)
Mutual labels:  service-mesh, istio
Admiral
Admiral provides automatic configuration generation, syncing and service discovery for multicluster Istio service mesh
Stars: ✭ 323 (+156.35%)
Mutual labels:  service-mesh, istio
service-mesh-labs
Lab scenarios for learning how to service mesh.
Stars: ✭ 22 (-82.54%)
Mutual labels:  service-mesh, istio
Istio Handbook
Istio Handbook - Istio Service Mesh Advanced Practical(Istio 服务网格进阶实战) - https://jimmysong.io/istio-handbook
Stars: ✭ 374 (+196.83%)
Mutual labels:  service-mesh, istio
Kubernetes-and-Cloud-Native-Associate-KCNA
Useful notes for the KCNA - Kubernetes and Cloud Native Associate
Stars: ✭ 162 (+28.57%)
Mutual labels:  service-mesh, istio
meshRPC
Automatic Service Mesh and RPC generation for Go micro services, it's a humble alternative to gRPC with Istio.
Stars: ✭ 69 (-45.24%)
Mutual labels:  service-mesh, istio
Istio Operator
An operator that manages Istio deployments on Kubernetes
Stars: ✭ 482 (+282.54%)
Mutual labels:  service-mesh, istio
Istio Bench
A benchmark tool for Istio. It measures CPU, Memory, Network usage of istio per number of services
Stars: ✭ 20 (-84.13%)
Mutual labels:  service-mesh, istio

Istio Vet

GoDoc Go Report Card

The istio-vet tool is a utility to validate the configuration of Istio and user applications installed in a Kubernetes cluster.

This tool works with Istio version 0.7.1 and above.

Introduction

The istio-vet utility helps discover incompatible configuration of user applications and Istio components in a kubernetes cluster. Misconfigurations might cause unexpected or incorrect service mesh behavior which can be easily detected and fixed using this tool.

The istio-vet tool invokes a list of independent vetters. Each vetter performs validation on a subset of configurations and generates notes on any misconfiguration.

Note that istio-vet and vetters only read configuration objects from the kubernetes API server.

Example

Vetter meshversion inspects the version of running Istio components and the sidecar version deployed in pods in the mesh. It generates the following note on any version mismatch:

Summary: "Mismatched sidecar version - myapp-xyz-1234"

Message: "WARNING: The pod myapp-xyz-1234 in namespace default is running with
sidecar proxy version 0.2.10 but your environment is running Istio
version 0.2.12. Consider upgrading the sidecar proxy in the pod."

Running Istio-Vet

You can build and run Istio-Vet from this repo, or use the docker image (locally or from within in a kubernetes cluster).

If you want to build Istio-Vet from this repo, please see the instructions for Contributors.

Using Istio-Vet via Docker

Instructions to run Istio-Vet from our official Docker Image: quay.io/aspenmesh/istio-vet:master

Local

When run locally, kube config for the kubernetes cluster needs to be mounted inside the container.

docker run --rm -v $HOME/.kube/config:/root/.kube/config quay.io/aspenmesh/istio-vet:master

In-Cluster

The istio-vet container can be deployed as a Job in a kubernetes cluster using the manifest file in the install directory.

kubectl apply -f install/kubernetes/istio-vet.yaml

To inspect the output of the istio-vet, use the following command:

kubectl -n istio-system logs -l "app=istio-vet" --tail=0

Note that the Job would have to be manually run every time to get the latest output from the istio-vet utility.

Please visit aspenmesh.io and sign-up to receive alerts, insights and analytics from your service mesh.

Repository Layout

This repository contains code for the vet tool and supported vetters packages. It includes:

  • pkg/vet - This directory contains code for the vet utility which is the main binary produced by the repository.

  • pkg/vetters - This directory contains packages for individual vetters, helper utility package and the interface definitions for vetters to implement. It includes the following vetters:

    • meshversion - This vetter inspects the version of various installed Istio components and generates notes on mismatching versions. It also inspects the version of sidecar proxy running in pods in the mesh and compares it with the installed Istio version and reports back any version mismatch.

    • serviceportprefix - This vetter inspects services in the Istio mesh and reports back if any service port name definition doesn't include Istio recognized port protocol prefixes.

    • podsinmesh - This vetter reports back the number of user pods in/out of the mesh. It also reports number of system pods running which are exempted from the mesh.

    • applabel - This vetter inspects the labels defined for the pods in the mesh and generates notes if the label app is missing in any pod specification.

    • serviceassociation - This vetter generates warning if a pod in the mesh is associated with multiple services.

    • danglingroutedestinationhost - This vetter generates warnings if the route destination host in virtual service resource points to services which don't exists in the cluster.

    • conflictingvirtualservicehost - This vetter generates warnings if the same host is defined in multiple virtual service resources.

More details about vetters can be found in the individual vetters package documentation.

Contributing

Individuals or business entities who contribute to this project must have completed and submitted the F5® Contributor License Agreement to [email protected] prior to their code submission being included in this project. Please include your github username in the CLA email.

Build Prerequisites

To build Istio-Vet locally, you will need to install the following:

  • A Go environment.
  • Install Protobuf.
    • The Google protobuf compiler (a standalone binary named protoc) needs to be installed first. You can get it by downloading the corresponding file for your system from https://github.com/google/protobuf/releases.

      Mac users

      brew install protobuf
      

      Linux users

      Linux users can get the release with this command. Make sure to change the protoc version and filename:

      curl -L -O \
      https://github.com/google/protobuf/releases/download/<desired-version>/protoc-<desired-version>-linux-x86_64.zip \
      && mkdir -p /usr/local \
      && unzip protoc-<desired-version>-linux-x86_64.zip -d /usr/local
      

      You should now be able to type protoc at the command line and see its options.

    • Next, get protoc-gen-go:

      go get -u github.com/golang/protobuf/protoc-gen-go
      

Clone Istio-Vet

Make this directory. (Dependencies rely on this file structure)

mkdir -p $GOPATH/src/github.com/aspenmesh
cd $GOPATH/src/github.com/aspenmesh

Fork and clone this repo into your aspenmesh folder, then cd into istio-vet

git clone [email protected]:<your-repo>/istio-vet.git
cd istio-vet

Build Istio-Vet

  • Install protobuf to the project's vendor directory
    go get github.com/golang/protobuf/protoc-gen-go
    
  • Run make clean and then make to compile.

Run Istio-Vet

You should now be able to run vet at the command line and see its options.

To use the vetters, point Istio-Vet to a kubeconfig file which is associated with a running cluster:

KUBECONFIG=<full-path-to-kubeconfig>kube.config vet
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].