• Stars
    star
    1,716
  • Rank 27,193 (Top 0.6 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The debugger for microservices

squash
Debugger for microservices

Debug your microservice applications from your terminal or IDE while they run in Kubernetes.


Installation   |   Documentation   |   Blog   |   Slack   |   Twitter

Debugging microservices applications is a difficult task. The state of an application is spread across multiple processes, often on different nodes. It is hard to get the holistic view of an application's state. Certain tools exist for troubleshooting microservice issues. OpenTracing can be used to produce transaction or workflow logs for post-mortem analysis. Service meshes like Istio can be used to monitor the network to identify latency problems. Unfortunately, these tools are passive, the feedback loop is slow, and they do not allow you to monitor and alter the application during run time.

In contrast, "traditional" debuggers for monolithic applications provide devs with powerful real-time investigation features. A developer working with monolithic applications has the powerful ability to set breakpoints throughout the application, follow variable values on the fly, step through the code, and change values during run time.

Squash brings the power of modern debuggers to developers of microservice apps. Squash bridges between the apps running in a Kubernetes environment (without modifying them) and the IDE. Users are free to choose which containers, pods, services or images they are interested in debugging, and are allowed to set breakpoints in their codes, follow values of their variables on the fly, step through the code while jumping between microservices, and change these values during run time.

Squash is built to be easily extensible. It is easy to add support for more languages, debuggers and IDEs.

To learn more about the motivation behind project squash, read our blog post or watch session (slides). We also encourage you to read squash technical overview blog.

To stay up-to-date with Squash, follow us @soloio_inc and join us on our slack channel.

Official website

With Squash, you can:

  • Debug running microservices
  • Debug container in a pod
  • Debug a service
  • Set breakpoints
  • Step through code
  • View and modify values of variables
  • ...anything you could do with a regular debugger, and more!

Demo

In the following demo we debug an application that adds two numbers. As you can see, it currently fails miserably at adding 9 to 99. The application is composed of two microservices. We set breakpoints in both, then step through the application, while monitoring its variables. At some point we identify the problem, and test it by changing the value of the variable isadd before resuming the execution of the application.

Squash Demo

An annotated version of this demo can be found here.

Documentation

Please visit squash.solo.io for documentation.

Supported debuggers:

Supported platforms:

Supported IDEs:

Roadmap:

Service Mesh

  • Squash integrates with Envoy. Read about the Squash HTTP filter, now part of Envoy here. This allows Squash to open debug sessions as a request flows through a microservice. Support for Istio will be added in 2019.

Debuggers

  • We will be adding support to several additional debuggers in early 2019, including gdb, nodejs, and python.

IDEs

  • We have simplified the squashctl --machine interface so it is easier to add support for additional IDEs. We will be updating our Intellij extension in early 2019.

We welcome community support for enabling more debuggers and IDEs.

Squash is under active development. APIs and compatibility are subject to change. We welcome community participation to help identify potential bugs and compatibility issues. Please open a Github issue for any problems you may experience, and join us on our slack channel


Thanks

Squash would not be possible without the valuable open-source work of projects in the community. We would like to extend a special thank-you to Kubernetes, gdb and dlv.

More Repositories

1

gloo

The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy
Go
3,822
star
2

unik

The Unikernel & MicroVM Compilation and Deployment Platform
Go
2,678
star
3

bumblebee

Get eBPF programs running from the cloud to the kernel in 1 line of bash
C
1,256
star
4

sqoop

The GraphQL Engine powered by Gloo
Go
529
star
5

packer-plugin-arm-image

Packer plugin for ARM images
Go
390
star
6

wasm

Web Assembly tools and SDKs for extending cloud-native infrastructure
Go
305
star
7

kubesquash

A debugger for Kubernetes applications.
Go
229
star
8

envoy-operator

Envoy Operator creates/configures/manages Envoy clusters atop Kubernetes
Go
154
star
9

workshops

Shell
126
star
10

go-utils

golang utilities
Go
112
star
11

autopilot

The Service Mesh SDK
Go
104
star
12

hoot

code from hoot episodes
Go
104
star
13

proxy-runtime

TypeScript
86
star
14

protoc-gen-openapi

Compile Google protobufs to openAPI v3 specs
Go
71
star
15

solo-kit

Toolkit for developing stateless, event-driven, declarative API systems
Go
69
star
16

gloo-connect

The Consul-Native Service Mesh
Go
64
star
17

glooshot

Chaos engineering framework to help you Immunize your service mesh
Go
52
star
18

gitops-library

gitops examples using argocd, helm, and yaml
Smarty
31
star
19

envoy-nats-streaming

C++
29
star
20

wasm-image-spec

wasm oci image specification
25
star
21

envoy-gloo

C++
25
star
22

squash-vscode

Debug your microservices application from VS Code
TypeScript
23
star
23

thetool

The tool to build the Gloo universe
Go
20
star
24

skv2

Solo-Kit V2 - Solo.io Operator Framework
Go
20
star
25

glooctl

glooctl - CLI for gloo
Go
18
star
26

solo-cop

Solo Communities of Practice
Shell
16
star
27

mesh-week

A week of Istio goodness (with focus for the exam).
16
star
28

service-mesh-extensions

A public registry of all service mesh extensions and other content for the Service Mesh Hub.
Go
14
star
29

squash-intellij

Debug your microservices application from IntelliJ IDEA
Java
14
star
30

envoy-workshop-basics

Envoy basics workshop
Python
12
star
31

kdiag

Go
11
star
32

aoa-catalog

A collection of Solo.io demo environments driven by GitOps using the ArgoCD app-of-apps pattern.
Shell
11
star
33

envoy-cves

Go
11
star
34

envoy-wasm-filters

repo containing solo.io envoy wasm filters
C++
10
star
35

unik-hub

code for UniK Hub backend
Go
10
star
36

envoy-consul-connect

Envoy Filter for Consul Connect
C++
9
star
37

cf-unik-buildpack

CloudFoundry Buildpack for Building & Running Unikernels
Go
9
star
38

ext-auth-plugin-examples

Contains example Ext Auth plugin implementations.
Go
8
star
39

ambient-performance

Shell
8
star
40

gloo-ref-arch

Reference architectures, examples, and demos for Gloo
Go
8
star
41

envoy-lambda

Envoy with AWS lambda support
C++
8
star
42

capstan

Go
7
star
43

anyvendor

An all purpose tool to make working with protoc easier
Go
6
star
44

protoc-gen-ext

protc-gen tools for solo-io
Go
6
star
45

solo-apis

Read-only mirror for solo.io API definitions.
6
star
46

gloo-plugins

Repository of Translator Plugins for Gloo
Go
6
star
47

gloo-mesh-use-cases

Community of Practice dedicated to creating collateral on Gloo Mesh use cases
Shell
5
star
48

dev-portal-starter

This is a demo project, to be used with Gloo Platform API Portals. It may be used as a standalone API dev portal interface, or as a template.
TypeScript
4
star
49

k8s-utils

Go
4
star
50

gloo-ingress-controller

Gloo's Kubernetes Ingress Controller
Go
4
star
51

solo-docs

Repo containing consolidated docs for Gloo community and enterprise editions
Go
4
star
52

demo-petclinic-vet

Go version of vets page of pet clinic demo
Go
4
star
53

kubecontroller

Provides a convenience method for creating Kubernetes resource controllers
Go
4
star
54

envoy-google-function

envoy plugin to integrate with Google cloud functions
C++
4
star
55

gloo-gitops

3
star
56

valet

Valet helps automate kubernetes workflows in golang tests, command line scripts, and documentation
Go
3
star
57

envoy-transformation

C++
3
star
58

service-mesh-for-less-blog

Shell
3
star
59

envoy-azure-functions

C++
2
star
60

cake

i love cake
Go
2
star
61

grpc-example-app

Sample Apps for testing/demoing gRPC
Go
2
star
62

envoy-common

C++
2
star
63

training

Shell
2
star
64

external-apis

generated code for interacting with external APIs (kubernetes, Istio, etc). shared across solo.io projects
Go
2
star
65

vscode-gloo

The developer tools for Gloo
TypeScript
2
star
66

backstage-plugins-overview

This includes the documentation for the Backstage plugin: Gloo Portal.
2
star
67

gloo-k8s-service-discovery

Discovers Upstreams from Kubernetes Services
Go
2
star
68

bumblebee-website

TypeScript
2
star
69

demos-gloo

Shell
2
star
70

homebrew-tap

This is the homebrew tap for installing the command line clients for Solo.io
Ruby
1
star
71

supergloo-helm

Helm Charts for use with SuperGloo
Smarty
1
star
72

sample-gateway-manager

An example Gateway API implementation
Go
1
star
73

platform-portal-backstage-plugin-frontend

A Backstage frontend plugin for Gloo Platform Portal. View APIs and manage usage plans from the Backstage UI.
TypeScript
1
star
74

gloo-sdk-go

gloo SDK written in Go
Go
1
star
75

asdf-istio

asdf-vm plugin for istio
Shell
1
star
76

gloo-secret

Client library to abstract secret storage
Go
1
star
77

envoy-squash

plugin for squash inside envoy
C++
1
star
78

graphql-gloo-gateway-demo

Shell
1
star
79

k8s-code-generator

A fork of https://github.com/kubernetes/code-generator compatible with Solo-Kit
Go
1
star
80

solo-blog

solo.io/blog resources
Shell
1
star
81

solo-blog-knative-istio

1
star
82

demo-echo-server

Go
1
star
83

gloo-install

Scripts and Resources for installing gloo
Smarty
1
star
84

ext-auth-plugins

Public interfaces for external auth services and plugins
Go
1
star
85

gloo-function-discovery

Function Discovery for Gloo
Go
1
star
86

gloo-edge-use-cases

Shell
1
star
87

gloo-portal-issues

Public tracker for issues related to Gloo Portal
1
star
88

glooctl-plugin-index

Index for glooctl plugins
1
star
89

community

Community contents related to Solo open source community projects
1
star
90

doing-more-for-less

Scripts and data for performance testing.
Shell
1
star
91

smerf

Tools for testing the performance of service mesh implementations
Shell
1
star
92

qcon-ambient

Shell
1
star