Giter VIP home page Giter VIP logo

linkerd-inject's Introduction

linkerd

GitHub license Circle CI Slack Status Docker Pulls CII Best Practices

This repo is for the 1.x version of Linkerd. Feature development is now happening in the linkerd2 repo. This repo is currently only used for periodic maintenance releases of Linkerd 1.x.

Linkerd 1.x (pronounced "linker-DEE") acts as a transparent HTTP/gRPC/thrift/etc proxy, and can usually be dropped into existing applications with a minimum of configuration, regardless of what language they're written in. It works with many common protocols and service discovery backends, including scheduled environments like Nomad, Mesos and Kubernetes.

Linkerd is built on top of Netty and Finagle, a production-tested RPC framework used by high-traffic companies like Twitter, Pinterest, Tumblr, PagerDuty, and others.

Linkerd is hosted by the Cloud Native Computing Foundation (CNCF).

Want to try it?

We distribute binaries which you can download from the Linkerd releases page. We also publish Docker images for each release, which you can find on Docker Hub.

For instructions on how to configure and run Linkerd, see the 1.x user documentation on linkerd.io.

Working in this repo

BUILD.md includes general information on how to work in this repo. Additionally, there are documents on how to build several of the application subprojects:

  • linkerd -- produces linkerd router artifacts
  • namerd -- produces namerd service discovery artifacts
  • grpc -- produces the protoc-gen-io.buoyant.grpc code generator

We ❤️ pull requests! See CONTRIBUTING.md for info on contributing changes.

Related Repos

  • linkerd2: The main repo for Linkerd 2.x and where current development is happening.
  • linkerd-examples: A variety of configuration examples and explanations
  • linkerd-tcp: A lightweight TCP/TLS load balancer that uses Namerd
  • linkerd-viz: Zero-configuration service dashboard for Linkerd
  • linkerd-zipkin: Zipkin tracing plugins
  • namerctl: A commandline utility for controlling Namerd

Code of Conduct

This project is for everyone. We ask that our users and contributors take a few minutes to review our code of conduct.

License

Copyright 2018, Linkerd Authors. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

linkerd-inject's People

Contributors

pcalcado avatar toqueteos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linkerd-inject's Issues

Silent failure on malformed k8s config

When trying to run linkerd-inject on a malformed yml file, linkerd-inject returns an empty string. This makes it hard to debug what the issue is. It should error/throw an exception instead.

Need to add to PREROUTING chain?

I was looking at this project and had a question. In prepare_proxy.sh, don't we need to add a rule to the PREROUTING chain as well, in order to handle requests originating from a docker container?

Referring to fabric8io/docker-iptables-redirector#1:

(2) Adding rules to not only OUTPUT chain but also PREROUTING chain. Rules in OUTPUT chain seems to redirect traffic from host but not from containers. If you want to redirect traffic from containers (which I assume is a pretty common use-case) we need to add rules to PREROUTING, too. See jtblin/aws-mock-metadata#5

(which in turn refers to jtblin/aws-mock-metadata#5)

Transparent proxying and DNS resolution

Hi folks,

I love the work you're doing and I am considering implementing linkerd in our stack. One of the selling points for me is the transparent proxy support, which is especially important as we have some legacy applications that simply do not work with http_proxy configuration (or HTTP proxies full stop).

Interestingly, we actually have a need to run a HTTP proxy (rules imposed by the security team), so we transparently proxy outbound traffic using a combination of iptables rules and Squid.

This works well, but requires DNS to be resolvable by the application, as name resolution occurs before the HTTP request. How do you deal with this? In #1 there is this note, but I struggle to find any elaboration:

When the services call each other, the service names need to be resolvable by kubedns so that the packet has an IP and can be routed (hence renaming world-v1 to world).

Does this depend on "kubedns"? Apologies for the lack of understanding, my only container scheduler experience is limited to AWS' EC2 Container Service. How would you implement this outside of K8s? Right now my guess is maybe install dnsmasq, make all resolution resolve to some made-up address (169.254.x.x.) and have iptables forward the traffic to linkerd. Does that sound doable?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.