184 lines
9.1 KiB
Markdown
184 lines
9.1 KiB
Markdown
# Table of Contents
|
|
|
|
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](https://kubernetes.io/docs/concepts/) and the [Cluster Admin
|
|
Guide](https://kubernetes.io/docs/concepts/cluster-administration/).
|
|
|
|
|
|
## The process of developing and contributing code to the Kubernetes project
|
|
|
|
* **Contributor Guide**
|
|
([Please start here](/contributors/guide/README.md)) to learn about how to contribute to Kubernetes.
|
|
|
|
* **GitHub Issues** ([/contributors/guide/issue-triage.md](/contributors/guide/issue-triage.md)): How incoming issues are triaged.
|
|
|
|
* **Pull Request Process** ([/contributors/guide/pull-requests.md](/contributors/guide/pull-requests.md)): When and why pull requests are closed.
|
|
|
|
* **Getting Recent Builds** ([getting-builds.md](sig-release/getting-builds.md)): How to get recent builds including the latest builds that pass CI.
|
|
|
|
* **Automated Tools** ([automation.md](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](development.md)): Setting up your development environment.
|
|
|
|
* **Testing** ([testing.md](sig-testing/testing.md)): How to run unit, integration, and end-to-end tests in your development sandbox.
|
|
|
|
* **Conformance Testing** ([conformance-tests.md](sig-architecture/conformance-tests.md))
|
|
What is conformance testing and how to create/manage them.
|
|
|
|
* **Hunting flaky tests** ([flaky-tests.md](sig-testing/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](sig-instrumentation/logging.md)): klog levels.
|
|
|
|
* **Profiling Kubernetes** ([profiling.md](sig-scalability/profiling.md)): How to plug in go pprof profiler to Kubernetes.
|
|
|
|
* **Instrumenting Kubernetes with a new metric**
|
|
([instrumentation.md](sig-instrumentation/instrumentation.md)): How to add a new metrics to the
|
|
Kubernetes code base.
|
|
|
|
* **Coding Conventions** ([coding-conventions.md](../guide/coding-conventions.md)):
|
|
Coding style advice for contributors.
|
|
|
|
* **Document Conventions** ([The Kubernetes documentation](https://github.com/kubernetes/website))
|
|
Document style advice for contributors.
|
|
|
|
* **Running a cluster locally** ([running-locally.md](running-locally.md)):
|
|
A fast and lightweight local cluster deployment for development.
|
|
|
|
## Developing against the Kubernetes API
|
|
|
|
* The [REST API documentation](https://kubernetes.io/docs/reference/) explains the REST
|
|
API exposed by apiserver.
|
|
|
|
* **Annotations** ([Annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/)): are for attaching arbitrary non-identifying metadata to objects.
|
|
Programs that automate Kubernetes objects may use annotations to store small amounts of their state.
|
|
|
|
* **API Conventions** ([api-conventions.md](sig-architecture/api-conventions.md)):
|
|
Defining the verbs and resources used in the Kubernetes API.
|
|
|
|
* **API Client Libraries** ([Client Libraries](https://kubernetes.io/docs/reference/using-api/client-libraries/)):
|
|
A list of existing client libraries, both supported and user-contributed.
|
|
|
|
|
|
## Writing plugins
|
|
|
|
* **Authentication** ([Authentication](https://kubernetes.io/docs/reference/access-authn-authz/authentication/)):
|
|
The current and planned states of authentication tokens.
|
|
|
|
* **Authorization Plugins** ([Authorization](https://kubernetes.io/docs/reference/access-authn-authz/authorization/)):
|
|
Authorization applies to all HTTP requests on the main apiserver port.
|
|
This doc explains the available authorization implementations.
|
|
|
|
* **Admission Control Plugins** ([admission_control](https://git.k8s.io/design-proposals-archive/api-machinery/admission_control.md))
|
|
|
|
|
|
## Building releases
|
|
|
|
See the [kubernetes/release](https://github.com/kubernetes/release) repository for details on creating releases and related tools and helper scripts.
|
|
|
|
## SIG Developer Guide Contributions
|
|
|
|
### SIG Release
|
|
* **Cherry Picks** [cherry-picks.md](sig-release/cherry-picks.md)
|
|
How cherry picks are managed on release branches within the `kubernetes/kubernetes` repository.
|
|
|
|
* **Getting Kubernetes Builds** [getting-builds.md](sig-release/getting-builds.md)
|
|
|
|
* **Targeting enhancements, Issues and PRs to Release Milestones** [release.md](sig-release/release.md)
|
|
|
|
### SIG Instrumentation
|
|
* **Logging Conventions** [logging.md](sig-instrumentation/logging.md)
|
|
|
|
* **Event style guide** [event-style-guide.md](sig-instrumentation/event-style-guide.md)
|
|
|
|
* **Instrumenting Kubernetes** [instrumentation.md](sig-instrumentation/instrumentation.md)
|
|
|
|
* **Structured Logging migration instructions** [migration-to-structured-logging.md](sig-instrumentation/migration-to-structured-logging.md)
|
|
|
|
### SIG Storage
|
|
* **NOTE** Flexvolume is deprecated. Out-of-tree CSI driver is the recommended way to write volume drivers in Kubernetes. See this doc [here]( https://github.com/kubernetes/community/blob/master/sig-storage/volume-plugin-faq.md) for more information.
|
|
|
|
* **CSI Drivers Doc** [CSI drivers doc](https://kubernetes-csi.github.io/docs/)
|
|
This site documents how to develop, deploy, and test a [Container Storage Interface](https://github.com/container-storage-interface/spec/blob/master/spec.md) (CSI) driver on Kubernetes.
|
|
|
|
* **Flexvolume** [flexvolume.md](sig-storage/flexvolume.md)
|
|
Flexvolume enables users to write their own drivers and add support for their volumes in Kubernetes.
|
|
|
|
### SIG Scalability
|
|
* **Kubemark User Guide** [kubemark-guide.md](sig-scalability/kubemark-guide.md)
|
|
|
|
* **How to Set Up a Kubemark Cluster** [kubemark-setup-guide.md](sig-scalability/kubemark-setup-guide.md)
|
|
|
|
* **Profiling Kubernetes** [profiling.md](sig-scalability/profiling.md)
|
|
|
|
### SIG Scheduling
|
|
|
|
* **Understanding the Kubernetes Scheduler** [scheduling_code_hierarchy_overview.md](sig-scheduling/scheduling_code_hierarchy_overview.md)
|
|
|
|
* **Customizing the Kubernetes Scheduler** [scheduler configuration](https://kubernetes.io/docs/reference/scheduling/config/)
|
|
|
|
* **Understanding how Pods are queued in Kubernetes Scheduler** [scheduler_queues.md](sig-scheduling/scheduler_queues.md)
|
|
|
|
* **Scheduler Benchmarking** [scheduler_benchmarking.md](sig-scheduling/scheduler_benchmarking.md)
|
|
|
|
### SIG Architecture
|
|
|
|
* **API Conventions** [api-conventions.md](sig-architecture/api-conventions.md)
|
|
|
|
* **Component Configuration Conventions** [component-config-conventions.md](sig-architecture/component-config-conventions.md)
|
|
|
|
* **Changing the API** [api_changes.md](sig-architecture/api_changes.md)
|
|
|
|
* **Staging Directory and Publishing** [staging.md](sig-architecture/staging.md)
|
|
|
|
* **Using Go Modules to Manage Dependencies** [vendor.md](sig-architecture/vendor.md)
|
|
This document only applies to Kubernetes development after 1.14.x. See [previous godep documentation for working with dependencies](sig-architecture/godep.md) for Kubernetes 1.14.x and earlier.
|
|
|
|
* **Using Go Modules to Manage Dependencies (for Kubernetes 1.14.x and earlier)** [godep.md](sig-architecture/godep.md)
|
|
See [current documentation for working with dependencies](sig-architecture/vendor.md) for master branch development.
|
|
|
|
* **Conformance Testing in Kubernetes** [conformance-tests.md](sig-architecture/conformance-tests.md)
|
|
|
|
### SIG API Machinery
|
|
* **Strategic Merge Patch** [strategic-merge-patch.md](sig-api-machinery/strategic-merge-patch.md)
|
|
* **Writing Controllers** [controllers.md](sig-api-machinery/controllers.md)
|
|
* **Generation and release cycle of clientset** [generating-clientset.md](sig-api-machinery/generating-clientset.md)
|
|
|
|
### SIG Testing
|
|
* **Testing guide** [testing.md](sig-testing/testing.md)
|
|
|
|
* **Writing good e2e tests for Kubernetes** [writing-good-e2e-tests.md](sig-testing/writing-good-e2e-tests.md)
|
|
|
|
* **Writing Good Conformance Tests for Kubernetes** [writing-good-conformance-tests.md](sig-testing/writing-good-conformance-tests.md)
|
|
|
|
* **Integration Testing in Kubernetes** [integration-tests.md](sig-testing/integration-tests.md)
|
|
|
|
* **End-to-End Testing in Kubernetes** [e2e-tests.md](sig-testing/e2e-tests.md) and [e2e-tests-kubetest2.md](sig-testing/e2e-tests-kubetest2.md)
|
|
|
|
* **Debugging with Gubernator** [gubernator.md](sig-testing/gubernator.md)
|
|
|
|
* **Flaky tests** [flaky-tests.md](sig-testing/flaky-tests.md)
|
|
|
|
### SIG Node
|
|
|
|
* **CRI: the Container Runtime Interface** [container-runtime-interface.md](sig-node/container-runtime-interface.md)
|
|
|
|
* **Container Runtime Interface (CRI) Networking Specifications** [kubelet-cri-networking.md](sig-node/kubelet-cri-networking.md)
|
|
|
|
* **Measuring Node Performance** [node-performance-testing.md](sig-node/node-performance-testing.md)
|
|
|
|
* **Container Runtime Interface: Container Metrics** [cri-container-stats.md](sig-node/cri-container-stats.md)
|
|
|
|
* **Container Runtime Interface (CRI) Validation Testing** [cri-validation.md](sig-node/cri-validation.md)
|
|
|
|
* **Node End-To-End tests** [e2e-node-tests.md](sig-node/e2e-node-tests.md)
|
|
|
|
* **Container Runtime Interface: Testing Policy** [cri-testing-policy.md](sig-node/cri-testing-policy.md)
|
|
|
|
### SIG CLI
|
|
* **Kubectl Conventions** [kubectl-conventions.md](sig-cli/kubectl-conventions.md)
|