Google Summer of Code 2019 Internship with Linkerd
My GSoC work was aimed to contribute to the SMI-Metrics repository i.e to add support for Istio and also work on other Issues. As the SMI-Metrics project was pretty new, to keep up my work and not get struck on one thing, I also contributed to the Linkerd project i.e fixing issues, adding more features, etc.
- Name: Tarun Pothulapati
- Github: pothulapati
- Email: email@example.com
- Blog: www.tarunpothulapati.com
- Mentor: Thomas Rampelberg
Contributions to SMI-Metrics
Intially the SMI-Metrics, had a very hard dependency on prometheus for metrics as it was still a prototype. This can be a challenge for service mesh projects that don’t depend on prometheus for queries or had a drastically different structure of time-series (i.e labels, sum of multiple metrics,etc ). So, I worked on adding a Mesh Interface and de-coupling the prometheus client. This made the repo more extensiable i.e now service meshes can just implement the interface and reply those metrics with or without prometheus.
The above blog post consists of a demo of SMI-Metrics with Istio support that I worked on.
Total Pull Requests Created: 14
- deislabs/smi-metrics#37 - Move Queries struct to a common package.
- deislabs/smi-metrics#36 - Single version Variable for both charts and docker images
- deislabs/smi-metrics#31 - Release automation through CircleCI
- deislabs/smi-metrics#30 - smi metrics istio installation through helm
- deislabs/smi-metrics#25 - Istio Support for SMI-Metrics
- deislabs/smi-metrics#23 - Mesh Interface and Refactoring
- deislabs/smi-metrics#19 - Fix unused dependencies using go mod tidy
- deislabs/smi-metrics#13 - Add usage docs
- deislabs/smi-metrics#11 - Added CircleCI Config
- deislabs/smi-metrics#7 - Reading Queries from Config yaml
- deislabs/smi-metrics#5 - Remove NetRC dependency as the repo's are public
Total Issues Opened: 11
- deislabs/smi-metrics#28 - Add Tests for Istio pkg
- deislabs/smi-metrics#27 - Update Istio docs with configuration options through helm
- deislabs/smi-metrics#26 - Template response latency queries.
- deislabs/smi-metrics#24 - Move prometheus related code out of linkerd
- deislabs/smi-metrics#22 - Service shouldnt 404 on
- deislabs/smi-metrics#20 - Fix make build
- deislabs/smi-metrics#18 - ApiService dosen't run on 1.15
- deislabs/smi-metrics#9 - More documentation on the SMI APIService
- deislabs/smi-metrics#8 - Negative Values in the latency metrics.
- deislabs/smi-metrics#4 - Support Metrics from Istio
- deislabs/smi-metrics#3 - Making Queries Configurable
Total Pull Requests Reviewed: 2
- deislabs/smi-metrics#35 - Match circle's arcane filters pattern
- deislabs/smi-metrics#33 - Update release tooling to trigger off a tag
Contributions to Linkerd
Throughout the GSoC period, I also kept my contributions up to Linkerd solving issues ranging from small bug fixes to small scale features.
Repository: linkerd2 Total Pull Requests Created: 18
- linkerd/linkerd2#3194 - Check for Namespace level config override annotations
- linkerd/linkerd2#3193 - Setting SuccessfulJobHistoryLimit to 0 for CronJobs
- linkerd/linkerd2#3153 - replace extensions/v1beta1 to apps/v1beta1
- linkerd/linkerd2#3152 - Add Node Selectors to select only linux nodes
- linkerd/linkerd2#3092 - Added Resource Limits when ha is Configured
- linkerd/linkerd2#3038 - Fix inject with path and add tests
- linkerd/linkerd2#2988 - linkerd inject from remote URL
- linkerd/linkerd2#2984 - add admin port label to proxy-injector and sp-validator
- linkerd/linkerd2#2963 - Add sideEffects field to Webhooks
- linkerd/linkerd2#2893 - Added Anti Affinity when HA is configured
- linkerd/linkerd2#2874 - HA for proxy-injector and sp-validator
- linkerd/linkerd2#2853 - Added labels to webhook configurations in charts/
- linkerd/linkerd2#2820 - Added controller component labels to webhook configurations
- linkerd/linkerd2#2439 - Added Jobs Resource to Linkerd Dashboard along with grafana.
- linkerd/linkerd2#2416 - WIP: Wire up stats and dashboards for Jobs
- linkerd/linkerd2#2387 - WIP: Wire up stats and dashboards for Jobs
- linkerd/linkerd2#2293 - Added ep Alias for endpoints command
- linkerd/linkerd2#2292 - Ignoring resources with empty kind field.
Total Pull Requests Reviewed: 3
- linkerd/linkerd2#3266 - Fix integration test
- linkerd/linkerd2#3039 - Fix linkerd inject url handling
- linkerd/linkerd2#3032 - Add release notes for stable-2.4.0
Total Pull Requests Created: 1
- linkerd/rfc#3 - Obsevarbility through GraphQL
I had a great time working with the Linkerd team and especially Thomas (my mentor). I got the oppurtunity to work on latest cutting edge technologies like Kubernetes, etc.
More information on my Google Summer of Code experience can be found here