Production-Grade Container Scheduling and Management
Go to file
Kubernetes Submit Queue bcc1dc5c15 Merge pull request #28112 from liggitt/field-selector-value-escaping
Automatic merge from submit-queue

Allow fieldSelectors to match arbitrary values

Field selectors are intended to be able to match arbitrary data for specific field names. Because of how field selectors are parsed, data containing `,` characters is not possible to match today, and data containing leading `=` characters requires using the `==` operator to ensure the leading `=` is preserved.

This PR adds the ability to escape/unescape those special characters in field selector values so they can be parsed unambiguously

Process for escaping arbitrary data in field selector values (`fields.EscapeValue` helper provided):
1. Prefix literal `\` characters with a `\`
2. Prefix `,` characters with a `\`
3. Prefix `=` characters with a `\`

When unescaping a field selector value (`fields.UnescapeValue` helper provided), the following escape sequences are honored:
- `\\` -> `\`
- `\,` -> `,`
- `\=` -> `=`

Any other instances of `\` result in a parse error

Any unescaped instances of `,` and `=` in field selector values result in a parse error

Compatibility:
- `,` and `=` characters are currently unusable in fieldSelector values, so the `\,` and `\=` escape sequences have no compatibility impact
- `\\` changes from being interpreted as `\\` to `\`, and any other uses of `\` result in errors (this is mostly theoretical; I couldn't find any field-selector-enabled fields which is currently using field selectors to match `\` values)

```
Field selectors may now match values containing the characters `,` `=` or `\` by escaping them with a `\` character.
```
2017-01-23 23:54:35 -08:00
.github Fix PR template 2016-11-11 14:48:58 -08:00
api Generated code 2017-01-23 20:12:24 -07:00
build Merge pull request #40120 from ixdy/bazel-release-tars 2017-01-20 16:19:09 -08:00
cluster refactor: move ListOptions references to metav1 2017-01-23 17:52:46 -05:00
cmd generated: informer,client 2017-01-23 17:52:47 -05:00
docs Generated code 2017-01-23 20:12:24 -07:00
examples generated: informer,client 2017-01-23 17:52:47 -05:00
federation Merge pull request #39981 from fraenkel/optional_configmaps_secrets 2017-01-23 23:06:35 -08:00
Godeps bump(k8s.io/gengo):c118aa8edfff53fe5b69127a970f54b6cf3a7563 2017-01-23 16:53:17 -05:00
hack Merge pull request #39981 from fraenkel/optional_configmaps_secrets 2017-01-23 23:06:35 -08:00
hooks Fix spelling in package naming linter error message 2016-12-20 15:48:14 -05:00
logo Updated top level owners file to match new format 2017-01-19 11:29:16 -08:00
pkg Merge pull request #39981 from fraenkel/optional_configmaps_secrets 2017-01-23 23:06:35 -08:00
plugin generated: informer,client 2017-01-23 17:52:47 -05:00
staging Allow fieldSelectors to match arbitrary values 2017-01-23 23:48:45 -05:00
test Merge pull request #39981 from fraenkel/optional_configmaps_secrets 2017-01-23 23:06:35 -08:00
third_party Build release tarballs in bazel and add make bazel-release rule 2017-01-13 16:17:44 -08:00
translations Add initial translation support. 2016-12-23 20:45:52 -08:00
vendor generated: informer,client 2017-01-23 17:52:47 -05:00
.bazelrc Add .bazelrc with flaky_test_attempts. 2017-01-20 11:41:33 -08:00
.gazelcfg.json Generate a dummy BUILD file in _output/local/go to keep Bazel out of trouble 2017-01-05 22:05:17 -08:00
.generated_docs Add the ability to edit fields within a config map. 2017-01-14 21:12:27 -08:00
.generated_files List generated files for the github size munger 2016-11-15 15:47:22 -08:00
.gitattributes Add -diff attributes for generated files 2016-12-08 17:12:07 -08:00
.gitignore Add verbose mode to boilerplate 2016-10-22 21:40:08 -07:00
BUILD.bazel Add release-tars to ci-artifacts 2017-01-13 16:34:06 -08:00
CHANGELOG.md Update CHANGELOG.md for v1.5.2. 2017-01-11 23:06:30 -08:00
code-of-conduct.md Change code of conduct to call CNCF CoC by reference 2016-10-19 13:22:35 -04:00
CONTRIBUTING.md updated munge-docs 2016-11-29 01:35:11 -08:00
labels.yaml Updating labels.yaml to add labels: cncf-cla:yes and cncf-cla:no 2016-10-03 09:54:42 -07:00
LICENSE LICENSE: revert modifications to Apache license 2016-11-22 11:44:46 -08:00
Makefile Add .bazelrc with flaky_test_attempts. 2017-01-20 11:41:33 -08:00
Makefile.generated_files Remove a from each codegen path 2016-12-30 18:44:32 -08:00
OWNERS Updated top level owners file to match new format 2017-01-19 11:29:16 -08:00
OWNERS_ALIASES OWNERS: Create sig-node alias 2017-01-17 16:25:40 -08:00
README.md Update README.md 2016-12-20 08:51:06 -06:00
Vagrantfile Customizable vagrant rsync args and excludes 2016-11-14 11:18:44 +01:00
WORKSPACE Merge pull request #39898 from ixdy/bazel-release-tars 2017-01-18 14:24:48 -08:00

Kubernetes

Submit Queue Widget GoDoc Widget Coverage Status Widget

Introduction

Kubernetes is an open source system for managing containerized applications across multiple hosts, providing basic mechanisms for deployment, maintenance, and scaling of applications. Kubernetes is hosted by the Cloud Native Computing Foundation (CNCF)

Kubernetes builds upon a decade and a half of experience at Google running production workloads at scale using a system called Borg, combined with best-of-breed ideas and practices from the community.


Are you ...

Code of Conduct

The Kubernetes community abides by the CNCF code of conduct. Here is an excerpt:

As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

Community

Do you want to help "shape the evolution of technologies that are container-packaged, dynamically-scheduled and microservices-oriented? ". If you are a company, you should consider joining the CNCF. For details about who's involved in CNCF and how Kubernetes plays a role, read the announcement. For general information about our community see the website community page.

Join us on social media (Twitter, Google+) and read our blog

Ask questions and help answer them on Slack or Stack Overflow

Attend our key events (kubecon, cloudnativecon, weekly community meeting)

Join a Special Interest Group (SIG)

Contribute

If you're interested in being a contributor and want to get involved in developing Kubernetes, get started with this reading:

You will then most certainly gain a lot from joining a SIG, attending the regular hangouts as well as the community meeting.

If you have an idea for a new feature, see the Kubernetes Features repository for a list of features that are coming in new releases as well as details on how to propose one.

Building Kubernetes for the impatient

If you want to build Kubernetes right away there are two options:

$ go get -d k8s.io/kubernetes
$ cd $GOPATH/src/k8s.io/kubernetes
$ make
$ git clone https://github.com/kubernetes/kubernetes
$ cd kubernetes
$ make quick-release

If you are less impatient, head over to the developer's documentation.

Support

While there are many different channels that you can use to get hold of us (Slack, Stack Overflow, Issues, Forums/Mailing lists), you can help make sure that we are efficient in getting you the help that you need.

If you need support, start with the troubleshooting guide and work your way through the process that we've outlined.

That said, if you have questions, reach out to us one way or another. We don't bite!

Analytics