kubernetes/docs/devel
Clayton Coleman 363b616908 Expose exec and logs via WebSockets
Not all clients and systems can support SPDY protocols. This commit adds
support for two new websocket protocols, one to handle streaming of pod
logs from a pod, and the other to allow exec to be tunneled over
websocket.

Browser support for chunked encoding is still poor, and web consoles
that wish to show pod logs may need to make compromises to display the
output. The /pods/<name>/log endpoint now supports websocket upgrade to
the 'binary.k8s.io' subprotocol, which sends chunks of logs as binary to
the client. Messages are written as logs are streamed from the container
daemon, so flushing should be unaffected.

Browser support for raw communication over SDPY is not possible, and
some languages lack libraries for it and HTTP/2. The Kubelet supports
upgrade to WebSocket instead of SPDY, and will multiplex STDOUT/IN/ERR
over websockets by prepending each binary message with a single byte
representing the channel (0 for IN, 1 for OUT, and 2 for ERR). Because
framing on WebSockets suffers from head-of-line blocking, clients and
other server code should ensure that no particular stream blocks. An
alternative subprotocol 'base64.channel.k8s.io' base64 encodes the body
and uses '0'-'9' to represent the channel for ease of use in browsers.
2015-10-09 14:33:40 -04:00
..
developer-guides Merge pull request #11551 from a-robinson/docs 2015-07-19 08:45:54 -07:00
api_changes.md Add link to dev e2e docs from api_changes doc 2015-09-23 14:45:00 -04:00
api-conventions.md Expose exec and logs via WebSockets 2015-10-09 14:33:40 -04:00
automation.md Add some documentation describing out developer/repository automation. 2015-09-14 13:44:55 -07:00
cherry-picks.md s|github.com/GoogleCloudPlatform/kubernetes|github.com/kubernetes/kubernetes| 2015-09-03 10:10:11 -04:00
cli-roadmap.md Fix wrong URL in cli-roadmap doc 2015-09-30 09:49:29 +08:00
client-libraries.md Update fabric8 client library location 2015-08-26 10:59:03 +01:00
coding-conventions.md Fix indendation on devel/coding-conventions.md 2015-09-18 00:34:25 -04:00
collab.md Fix trailing whitespace in all docs 2015-07-30 20:41:30 -04:00
development.md Move the hooks section to the commit section. 2015-10-02 12:30:53 -07:00
e2e-tests.md Add developer documentation on e2e testing. 2015-09-17 14:40:14 -05:00
faster_reviews.md Start on expanding code expectations (aka "The bar") 2015-09-01 20:33:59 +00:00
flaky-tests.md s|github.com/GoogleCloudPlatform/kubernetes|github.com/kubernetes/kubernetes| 2015-09-03 10:10:11 -04:00
getting-builds.md Absolutize links that leave the docs/ tree to go anywhere other than 2015-07-20 00:25:07 -07:00
git_workflow.png fix a typo in development.md and update git_workflow.png 2015-09-10 00:22:43 +08:00
instrumentation.md s|github.com/GoogleCloudPlatform/kubernetes|github.com/kubernetes/kubernetes| 2015-09-03 10:10:11 -04:00
issues.md s|github.com/GoogleCloudPlatform/kubernetes|github.com/kubernetes/kubernetes| 2015-09-03 10:10:11 -04:00
kubectl-conventions.md Start on expanding code expectations (aka "The bar") 2015-09-01 20:33:59 +00:00
logging.md Better scary message 2015-07-17 09:28:49 -07:00
making-release-notes.md s|github.com/GoogleCloudPlatform/kubernetes|github.com/kubernetes/kubernetes| 2015-09-03 10:10:11 -04:00
profiling.md Merge pull request #11551 from a-robinson/docs 2015-07-19 08:45:54 -07:00
pull-requests.md Merge pull request #13683 from brendandburns/docs4 2015-09-16 21:53:57 -07:00
README.md Add some documentation describing out developer/repository automation. 2015-09-14 13:44:55 -07:00
releasing.dot Move developer documentation to docs/devel/ 2014-10-15 08:30:02 -07:00
releasing.md Fix the checkout instructions 2015-09-14 17:05:05 -07:00
releasing.png Move developer documentation to docs/devel/ 2014-10-15 08:30:02 -07:00
releasing.svg Move developer documentation to docs/devel/ 2014-10-15 08:30:02 -07:00
scheduler_algorithm.md Replace PodFitsPorts with PodFitsHostPorts 2015-09-30 15:14:59 +08:00
scheduler.md Repalce limits with requests in scheduler documentation. 2015-08-25 00:14:24 +08:00
writing-a-getting-started-guide.md Replace IRC with Slack in docs. 2015-09-08 15:17:39 -07:00

WARNING WARNING WARNING WARNING WARNING

PLEASE NOTE: This document applies to the HEAD of the source tree

If you are using a released version of Kubernetes, you should refer to the docs that go with that version.

The latest 1.0.x release of this document can be found [here](http://releases.k8s.io/release-1.0/docs/devel/README.md).

Documentation for other releases can be found at releases.k8s.io.

Kubernetes Developer Guide

The developer guide is for anyone wanting to either write code which directly accesses the Kubernetes API, or to contribute directly to the Kubernetes project. It assumes some familiarity with concepts in the User Guide and the Cluster Admin Guide.

The process of developing and contributing code to the Kubernetes project

  • On Collaborative Development (collab.md): Info on pull requests and code reviews.

  • GitHub Issues (issues.md): How incoming issues are reviewed and prioritized.

  • Pull Request Process (pull-requests.md): When and why pull requests are closed.

  • Faster PR reviews (faster_reviews.md): How to get faster PR reviews.

  • Getting Recent Builds (getting-builds.md): How to get recent builds including the latest builds that pass CI.

  • Automated Tools (automation.md): Descriptions of the automation that is running on our github repository.

Setting up your dev environment, coding, and debugging

  • Development Guide (development.md): Setting up your development environment.

  • Hunting flaky tests (flaky-tests.md): We have a goal of 99.9% flake free tests. Here's how to run your tests many times.

  • Logging Conventions (logging.md]: Glog levels.

  • Profiling Kubernetes (profiling.md): How to plug in go pprof profiler to Kubernetes.

  • Instrumenting Kubernetes with a new metric (instrumentation.md): How to add a new metrics to the Kubernetes code base.

  • Coding Conventions (coding-conventions.md): Coding style advice for contributors.

Developing against the Kubernetes API

Writing plugins

Building releases

  • Making release notes (making-release-notes.md): Generating release nodes for a new release.

  • Releasing Kubernetes (releasing.md): How to create a Kubernetes release (as in version) and how the version information gets embedded into the built binaries.

Analytics