Conduit

Install

$ curl https://run.conduit.io/install | sh
$ export PATH=$PATH:$HOME/.conduit/bin
$ conduit install | kubectl apply -f -

Deploy

$ curl https://raw.githubusercontent.com/FuriKuri/demo/master/deploy.yaml | conduit inject - | kubectl apply -f -

The command conduit inject will add an additional container and an additional init-container to your deployment:

      containers:
      - env:
        - name: CONDUIT_PROXY_LOG
          value: warn,conduit_proxy=info
        - name: CONDUIT_PROXY_CONTROL_URL
          value: tcp://proxy-api.conduit.svc.cluster.local:8086
        - name: CONDUIT_PROXY_CONTROL_LISTENER
          value: tcp://0.0.0.0:4190
        - name: CONDUIT_PROXY_PRIVATE_LISTENER
          value: tcp://127.0.0.1:4140
        - name: CONDUIT_PROXY_PUBLIC_LISTENER
          value: tcp://0.0.0.0:4143
        - name: CONDUIT_PROXY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: CONDUIT_PROXY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: CONDUIT_PROXY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        image: gcr.io/runconduit/proxy:v0.3.1
        imagePullPolicy: IfNotPresent
        name: conduit-proxy
        ports:
        - containerPort: 4143
          name: conduit-proxy
        resources: {}
        securityContext:
          runAsUser: 2102
      initContainers:
      - args:
        - --incoming-proxy-port
        - "4143"
        - --outgoing-proxy-port
        - "4140"
        - --proxy-uid
        - "2102"
        - --inbound-ports-to-ignore
        - "4190"
        image: gcr.io/runconduit/proxy-init:v0.3.1
        imagePullPolicy: IfNotPresent
        name: conduit-init
        resources: {}
        securityContext:
          capabilities:
            add:
            - NET_ADMIN
          privileged: false

Usage

Example request

$ kubectl proxy
$ http http://127.0.0.1:8001/api/v1/namespaces/default/services/http:client:80/proxy/http/server/host
$ LB_ADDRESS=$(kubectl get svc client -o jsonpath="{.status.loadBalancer.ingress[0].*}")
$ http "http://$LB_ADDRESS/host"

Dashboard

conduit dashboard

CLI

$ conduit stat deployments
NAME                        REQUEST_RATE   SUCCESS_RATE   P50_LATENCY   P99_LATENCY
default/client-deployment         0.1rps        100.00%           0ms           0ms
$ conduit tap deploy default/client-deployment
req id=0:11 src=100.96.2.1:35447 dst=100.96.2.5:8080 :method=GET :authority=a89ab2a87364511e8950202637bdd010-2032770816.eu-central-1.elb.amazonaws.com :path=/host
rsp id=0:11 src=100.96.2.1:35447 dst=100.96.2.5:8080 :status=200 latency=274µs
end id=0:11 src=100.96.2.1:35447 dst=100.96.2.5:8080 duration=89µs response-length=34B
req id=0:12 src=100.96.2.1:35449 dst=100.96.2.5:8080 :method=GET :authority=a89ab2a87364511e8950202637bdd010-2032770816.eu-central-1.elb.amazonaws.com :path=/host
rsp id=0:12 src=100.96.2.1:35449 dst=100.96.2.5:8080 :status=200 latency=312µs
end id=0:12 src=100.96.2.1:35449 dst=100.96.2.5:8080 duration=84µs response-length=34B

results matching ""

    No results matching ""