diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 401f52479c..235973f654 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,10 +1,11 @@ > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -> For 1.8 Features: set Milestone to `1.8` and Base Branch to `release-1.8` +> For 1.9 Features: set Milestone to `1.9` and Base Branch to `release-1.9` > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -> > NOTE: Please check the “Allow edits from maintainers” box (see image below) to > [allow reviewers to fix problems](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) on your patch and speed up the review process. > > Please delete this note before submitting the pull request. +> +> NOTE: After opening the PR, please *un-check and re-check* the "Allow edits from maintainers" box. This is a temporary workaround to address a known issue with GitHub. ![Allow edits from maintainers checkbox](https://help.github.com/assets/images/help/pull_requests/allow-maintainers-to-make-edits-sidebar-checkbox.png) diff --git a/.travis.yml b/.travis.yml index f7f8311130..9e19abba15 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,15 +6,15 @@ go: install: - export PATH=$GOPATH/bin:$PATH - mkdir -p $HOME/gopath/src/k8s.io -- mv $TRAVIS_BUILD_DIR $HOME/gopath/src/k8s.io/kubernetes.github.io +- mv $TRAVIS_BUILD_DIR $HOME/gopath/src/k8s.io/website # (1) Fetch dependencies for us to run the tests in test/examples_test.go -- go get -t -v k8s.io/kubernetes.github.io/test +- go get -t -v k8s.io/website/test # Simplified deduplication of dependencies. - cp -L -R $GOPATH/src/k8s.io/kubernetes/vendor/ $GOPATH/src/ - rm -r $GOPATH/src/k8s.io/kubernetes/vendor/ script: -- go test -v k8s.io/kubernetes.github.io/test +- go test -v k8s.io/website/test - ./verify-docs-format.sh diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ed6b348338..13c07eb905 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,7 +9,7 @@ These are just guidelines, not rules. Use your best judgment, and feel free to p ### Code of Conduct -Kubernetes follows the [Cloud Native Computing Foundation (CNCF) Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to Sarah Novotny [sarahnovotny@google.com](mailto:sarahnovotny@google.com) and/or Dan Kohn [dan@linuxfoundation.org](mailto:dan@linuxfoundation.org). +Kubernetes follows the [Cloud Native Computing Foundation (CNCF) Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to Sarah Novotny [sarahnovotny@google.com](mailto:sarahnovotny@google.com) and/or Dan Kohn [dan@linuxfoundation.org](mailto:dan@linuxfoundation.org). ### Documentation and Site Decisions @@ -17,7 +17,7 @@ The [Kubernetes SIG Docs Discussion Group](https://groups.google.com/forum/#!for ### Style Guides and Templates -Before submitting a pull request to create new content, please review the [Kubernetes.io style guide](http://kubernetes.io/docs/home/contribute/style-guide/) and follow the [instructions for using page templates](http://kubernetes.io/docs/home/contribute/page-templates/). +Before submitting a pull request to create new content, please review the [Kubernetes.io style guide](http://kubernetes.io/docs/home/contribute/style-guide/) and follow the [instructions for using page templates](http://kubernetes.io/docs/home/contribute/page-templates/). ## Contributing to Documentation @@ -26,10 +26,10 @@ Before submitting a pull request to create new content, please review the [Kuber Kubernetes.io uses github issues to track documentation issues and requests. If you see a documentation issue, submit an issue using the following steps: -1. Check the [kubernetes.io issues list](https://github.com/kubernetes/kubernetes.github.io/issues) as you might find out the issue is a duplicate. -2. Use the [included template for every new issue](https://github.com/kubernetes/kubernetes.github.io/issues/new). When you create a bug report, include as many details as possible and include suggested fixes to the issue. +1. Check the [kubernetes.io issues list](https://github.com/kubernetes/website/issues) as you might find out the issue is a duplicate. +2. Use the [included template for every new issue](https://github.com/kubernetes/website/issues/new). When you create a bug report, include as many details as possible and include suggested fixes to the issue. -Note that code issues should be filed against the main kubernetes repository, while documentation issues should go in the kubernetes.io repository. +Note that code issues should be filed against the main kubernetes repository, while documentation issues should go in the kubernetes.io repository. ### Submitting Documentation Pull Requests diff --git a/Gemfile b/Gemfile index 3828560a73..409583e72a 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,53 @@ source "https://rubygems.org" -gem "github-pages", group: :jekyll_plugins +# gem "github-pages", group: :jekyll_plugins + +gem "jekyll", "3.6.0" + +group :github_pages_compatible do + gem "json", "~> 1.7", ">= 1.7.7" + gem "coffee-script", "~> 2.4" + gem "coffee-script-source", "~> 1.12" + gem "ethon", "~> 0.10" + gem "execjs", "~> 2.7" + gem "minima", "~> 2.0" + gem "terminal-table", "~> 1.4" + gem "unicode-display_width", "~> 1.1" +end + +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" + gem "jekyll-sitemap" + gem "jekyll-gist" + gem "jekyll-paginate", "1.1.0" + gem "jekyll-seo-tag" + gem "jekyll-avatar", "~> 0.4" + gem "jekyll-coffeescript", "~> 1.0" + gem "jekyll-default-layout", "~> 0.1" + gem "jekyll-github-metadata", "~> 2.2" + gem "jekyll-optional-front-matter", "~> 0.1" + gem "jekyll-readme-index", "0.0.3" + gem "jekyll-redirect-from", "~> 0.11" + gem "jekyll-relative-links", "~> 0.2" + gem "jekyll-swiss", "~> 0.4" + gem "jekyll-theme-architect", "0.0.3" + gem "jekyll-theme-cayman", "0.0.3" + gem "jekyll-theme-dinky", "0.0.3" + gem "jekyll-theme-hacker", "0.0.3" + gem "jekyll-theme-leap-day", "0.0.3" + gem "jekyll-theme-merlot", "0.0.3" + gem "jekyll-theme-midnight", "0.0.3" + gem "jekyll-theme-minimal", "0.0.3" + gem "jekyll-theme-modernist", "0.0.3" + gem "jekyll-theme-primer", "~> 0.1" + gem "jekyll-theme-slate", "0.0.3" + gem "jekyll-theme-tactile", "0.0.3" + gem "jekyll-theme-time-machine", "0.0.3" + gem "jekyll-titles-from-headings", "~> 0.1" +end + gem "jekyll-include-cache", "~> 0.1" + +gem "kramdown", "~> 1.11" +gem "rouge", "~> 2.0" +gem "pry" diff --git a/Gemfile.lock b/Gemfile.lock index 09d52b8d72..577f4e69b2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,123 +1,61 @@ GEM remote: https://rubygems.org/ specs: - activesupport (4.2.7) - i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - addressable (2.5.0) - public_suffix (~> 2.0, >= 2.0.2) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + coderay (1.1.2) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) colorator (1.1.0) - ethon (0.10.1) + ethon (0.11.0) ffi (>= 1.3.0) execjs (2.7.0) - faraday (0.10.0) + faraday (0.13.1) multipart-post (>= 1.2, < 3) - ffi (1.9.14) + ffi (1.9.18) forwardable-extended (2.6.0) - gemoji (2.1.0) - github-pages (112) - activesupport (= 4.2.7) - github-pages-health-check (= 1.3.0) - jekyll (= 3.3.1) - jekyll-avatar (= 0.4.2) - jekyll-coffeescript (= 1.0.1) - jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.8.0) - jekyll-gist (= 1.4.0) - jekyll-github-metadata (= 2.2.0) - jekyll-mentions (= 1.2.0) - jekyll-optional-front-matter (= 0.1.2) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.0.3) - jekyll-redirect-from (= 0.11.0) - jekyll-relative-links (= 0.2.1) - jekyll-sass-converter (= 1.3.0) - jekyll-seo-tag (= 2.1.0) - jekyll-sitemap (= 0.12.0) - jekyll-swiss (= 0.4.0) - jekyll-theme-architect (= 0.0.3) - jekyll-theme-cayman (= 0.0.3) - jekyll-theme-dinky (= 0.0.3) - jekyll-theme-hacker (= 0.0.3) - jekyll-theme-leap-day (= 0.0.3) - jekyll-theme-merlot (= 0.0.3) - jekyll-theme-midnight (= 0.0.3) - jekyll-theme-minimal (= 0.0.3) - jekyll-theme-modernist (= 0.0.3) - jekyll-theme-primer (= 0.1.5) - jekyll-theme-slate (= 0.0.3) - jekyll-theme-tactile (= 0.0.3) - jekyll-theme-time-machine (= 0.0.3) - jekyll-titles-from-headings (= 0.1.3) - jemoji (= 0.7.0) - kramdown (= 1.11.1) - liquid (= 3.0.6) - listen (= 3.0.6) - mercenary (~> 0.3) - minima (= 2.0.0) - rouge (= 1.11.1) - terminal-table (~> 1.4) - github-pages-health-check (1.3.0) - addressable (~> 2.3) - net-dns (~> 0.8) - octokit (~> 4.0) - public_suffix (~> 2.0) - typhoeus (~> 0.7) - html-pipeline (2.4.2) - activesupport (>= 2) - nokogiri (>= 1.4) - i18n (0.7.0) - jekyll (3.3.1) + jekyll (3.6.0) addressable (~> 2.4) colorator (~> 1.0) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) + kramdown (~> 1.14) + liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) - rouge (~> 1.7) + rouge (>= 1.7, < 3) safe_yaml (~> 1.0) - jekyll-avatar (0.4.2) + jekyll-avatar (0.5.0) jekyll (~> 3.0) jekyll-coffeescript (1.0.1) coffee-script (~> 2.2) jekyll-default-layout (0.1.4) jekyll (~> 3.0) - jekyll-feed (0.8.0) + jekyll-feed (0.9.2) jekyll (~> 3.3) - jekyll-gist (1.4.0) + jekyll-gist (1.4.1) octokit (~> 4.2) - jekyll-github-metadata (2.2.0) + jekyll-github-metadata (2.9.3) jekyll (~> 3.1) octokit (~> 4.0, != 4.4.0) jekyll-include-cache (0.1.0) jekyll (~> 3.3) - jekyll-mentions (1.2.0) - activesupport (~> 4.0) - html-pipeline (~> 2.3) - jekyll (~> 3.0) - jekyll-optional-front-matter (0.1.2) + jekyll-optional-front-matter (0.3.0) jekyll (~> 3.0) jekyll-paginate (1.1.0) jekyll-readme-index (0.0.3) jekyll (~> 3.0) - jekyll-redirect-from (0.11.0) - jekyll (>= 2.0) - jekyll-relative-links (0.2.1) + jekyll-redirect-from (0.12.1) jekyll (~> 3.3) - jekyll-sass-converter (1.3.0) - sass (~> 3.2) - jekyll-seo-tag (2.1.0) + jekyll-relative-links (0.5.1) jekyll (~> 3.3) - jekyll-sitemap (0.12.0) + jekyll-sass-converter (1.5.0) + sass (~> 3.4) + jekyll-seo-tag (2.3.0) + jekyll (~> 3.3) + jekyll-sitemap (1.1.1) jekyll (~> 3.3) jekyll-swiss (0.4.0) jekyll-theme-architect (0.0.3) @@ -138,66 +76,101 @@ GEM jekyll (~> 3.3) jekyll-theme-modernist (0.0.3) jekyll (~> 3.3) - jekyll-theme-primer (0.1.5) - jekyll (~> 3.3) + jekyll-theme-primer (0.5.2) + jekyll (~> 3.5) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.2) jekyll-theme-slate (0.0.3) jekyll (~> 3.3) jekyll-theme-tactile (0.0.3) jekyll (~> 3.3) jekyll-theme-time-machine (0.0.3) jekyll (~> 3.3) - jekyll-titles-from-headings (0.1.3) + jekyll-titles-from-headings (0.5.0) jekyll (~> 3.3) jekyll-watch (1.5.0) listen (~> 3.0, < 3.1) - jemoji (0.7.0) - activesupport (~> 4.0) - gemoji (~> 2.0) - html-pipeline (~> 2.2) - jekyll (>= 3.0) json (1.8.6) - kramdown (1.11.1) - liquid (3.0.6) - listen (3.0.6) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9.7) + kramdown (1.15.0) + liquid (4.0.0) + listen (3.0.8) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) mercenary (0.3.6) - mini_portile2 (2.1.0) - minima (2.0.0) - minitest (5.10.1) + method_source (0.9.0) + minima (2.1.1) + jekyll (~> 3.3) multipart-post (2.0.0) - net-dns (0.8.0) - nokogiri (1.6.8.1) - mini_portile2 (~> 2.1.0) - octokit (4.6.2) + octokit (4.7.0) sawyer (~> 0.8.0, >= 0.5.3) - pathutil (0.14.0) + pathutil (0.16.0) forwardable-extended (~> 2.6) - public_suffix (2.0.4) - rb-fsevent (0.9.8) - rb-inotify (0.9.7) - ffi (>= 0.5.0) - rouge (1.11.1) + pry (0.11.2) + coderay (~> 1.1.0) + method_source (~> 0.9.0) + public_suffix (3.0.0) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (2.2.1) safe_yaml (1.0.4) - sass (3.4.23) + sass (3.5.3) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) sawyer (0.8.1) addressable (>= 2.3.5, < 2.6) faraday (~> 0.8, < 1.0) - terminal-table (1.7.3) - unicode-display_width (~> 1.1.1) - thread_safe (0.3.5) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.2) - thread_safe (~> 0.1) - unicode-display_width (1.1.2) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + unicode-display_width (1.3.0) PLATFORMS ruby DEPENDENCIES - github-pages + coffee-script (~> 2.4) + coffee-script-source (~> 1.12) + ethon (~> 0.10) + execjs (~> 2.7) + jekyll (= 3.6.0) + jekyll-avatar (~> 0.4) + jekyll-coffeescript (~> 1.0) + jekyll-default-layout (~> 0.1) + jekyll-feed (~> 0.6) + jekyll-gist + jekyll-github-metadata (~> 2.2) jekyll-include-cache (~> 0.1) + jekyll-optional-front-matter (~> 0.1) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.0.3) + jekyll-redirect-from (~> 0.11) + jekyll-relative-links (~> 0.2) + jekyll-seo-tag + jekyll-sitemap + jekyll-swiss (~> 0.4) + jekyll-theme-architect (= 0.0.3) + jekyll-theme-cayman (= 0.0.3) + jekyll-theme-dinky (= 0.0.3) + jekyll-theme-hacker (= 0.0.3) + jekyll-theme-leap-day (= 0.0.3) + jekyll-theme-merlot (= 0.0.3) + jekyll-theme-midnight (= 0.0.3) + jekyll-theme-minimal (= 0.0.3) + jekyll-theme-modernist (= 0.0.3) + jekyll-theme-primer (~> 0.1) + jekyll-theme-slate (= 0.0.3) + jekyll-theme-tactile (= 0.0.3) + jekyll-theme-time-machine (= 0.0.3) + jekyll-titles-from-headings (~> 0.1) + json (~> 1.7, >= 1.7.7) + kramdown (~> 1.11) + minima (~> 2.0) + pry + rouge (~> 2.0) + terminal-table (~> 1.4) + unicode-display_width (~> 1.1) BUNDLED WITH - 1.15.2 + 1.15.4 diff --git a/OWNERS b/OWNERS index 64804981da..1e01984e33 100644 --- a/OWNERS +++ b/OWNERS @@ -1,5 +1,6 @@ reviewers: +- a-mccarthy +- abiogenesis-now - bradamant3 -- chenopis - steveperry-53 - zacharysarah diff --git a/README.md b/README.md index 280a4ceb40..9eb11944de 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Welcome! We are very pleased you want to contribute to the Kubernetes documentat You can click the **Fork** button in the upper-right area of the screen to create a copy of this repository in your GitHub account called a *fork*. Make any changes you want in your fork, and when you are ready to send those changes to us, go to your fork and create a new pull request to let us know about it. +Once your pull request is created, a Kubernetes reviewer will take responsibility for providing clear, actionable feedback. As the owner of the pull request, **it is your responsibility to modify your pull request to address the feedback that has been provided to you by the Kubernetes reviewer.** Also note that you may end up having more than one Kubernetes reviewer provide you feedback or you may end up getting feedback from a Kubernetes reviewer that is different than the one originally assigned to provide you feedback. Furthermore, in some cases, one of your reviewers might ask for a technical review from a [Kubernetes tech reviewer](https://github.com/kubernetes/website/wiki/Tech-reviewers) when needed. Reviewers will do their best to provide feedback in a timely fashion but response time can vary based on circumstances. + For more information about contributing to the Kubernetes documentation, see: * [Contributing to the Kubernetes Documentation](http://kubernetes.io/editdocs/) diff --git a/_config.yml b/_config.yml index f13463f283..7891f3f36f 100644 --- a/_config.yml +++ b/_config.yml @@ -32,7 +32,7 @@ defaults: version: "v1.7" githubbranch: "v1.7.6" docsbranch: "release-1.7" - url: https://kubernetes-io-v1-7.netlify.com/docs/home/ + url: https://v1-7.docs.kubernetes.io/docs/home/ - fullversion: "v1.6.8" version: "v1.6" githubbranch: "v1.6.8" @@ -60,7 +60,7 @@ defaults: permalink: pretty -gems: +plugins: - jekyll-feed - jekyll-sitemap - jekyll-seo-tag diff --git a/_data/canonical-tags.yml b/_data/canonical-tags.yml deleted file mode 100644 index d5c4bcfdec..0000000000 --- a/_data/canonical-tags.yml +++ /dev/null @@ -1,12 +0,0 @@ -- Fundamental -- API Object -- Metadata -- Configuration -- Security -- Networking -- Storage -- Operation -- Workload -- Component -- API -- Extension diff --git a/_data/canonical-tags/architecture.yaml b/_data/canonical-tags/architecture.yaml new file mode 100644 index 0000000000..369aa36cc0 --- /dev/null +++ b/_data/canonical-tags/architecture.yaml @@ -0,0 +1,3 @@ +id: architecture +name: Architecture +description: The inner components of Kubernetes. diff --git a/_data/canonical-tags/community.yaml b/_data/canonical-tags/community.yaml new file mode 100644 index 0000000000..34a60b5df2 --- /dev/null +++ b/_data/canonical-tags/community.yaml @@ -0,0 +1,3 @@ +id: community +name: Community +description: Related to Kubernetes open-source development. diff --git a/_data/canonical-tags/core-object.yaml b/_data/canonical-tags/core-object.yaml new file mode 100644 index 0000000000..c816013899 --- /dev/null +++ b/_data/canonical-tags/core-object.yaml @@ -0,0 +1,3 @@ +id: core-object +name: Core Object +description: A resource type that Kubernetes supports by default. diff --git a/_data/canonical-tags/extension.yaml b/_data/canonical-tags/extension.yaml new file mode 100644 index 0000000000..6aacd8dac9 --- /dev/null +++ b/_data/canonical-tags/extension.yaml @@ -0,0 +1,3 @@ +id: extension +name: Extension +description: Supported customizations of Kubernetes. diff --git a/_data/canonical-tags/fundamental.yaml b/_data/canonical-tags/fundamental.yaml new file mode 100644 index 0000000000..f9dc8f2398 --- /dev/null +++ b/_data/canonical-tags/fundamental.yaml @@ -0,0 +1,3 @@ +id: fundamental +name: Fundamental +description: Relevant for a first-time user of Kubernetes. diff --git a/_data/canonical-tags/networking.yaml b/_data/canonical-tags/networking.yaml new file mode 100644 index 0000000000..481c02c50a --- /dev/null +++ b/_data/canonical-tags/networking.yaml @@ -0,0 +1,3 @@ +id: networking +name: Networking +description: How Kubernetes components talk to each other (and to programs outside the cluster). diff --git a/_data/canonical-tags/operation.yaml b/_data/canonical-tags/operation.yaml new file mode 100644 index 0000000000..140be06e0c --- /dev/null +++ b/_data/canonical-tags/operation.yaml @@ -0,0 +1,3 @@ +id: operation +name: Operation +description: Starting and maintaining Kubernetes. diff --git a/_data/canonical-tags/security.yaml b/_data/canonical-tags/security.yaml new file mode 100644 index 0000000000..4bb7191a6f --- /dev/null +++ b/_data/canonical-tags/security.yaml @@ -0,0 +1,3 @@ +id: security +name: Security +description: Keeping Kubernetes applications safe and secure. diff --git a/_data/canonical-tags/storage.yaml b/_data/canonical-tags/storage.yaml new file mode 100644 index 0000000000..e98d797b6e --- /dev/null +++ b/_data/canonical-tags/storage.yaml @@ -0,0 +1,3 @@ +id: storage +name: Storage +description: How Kubernetes applications handle persistent data. diff --git a/_data/canonical-tags/tool.yaml b/_data/canonical-tags/tool.yaml new file mode 100644 index 0000000000..943d1ba4b0 --- /dev/null +++ b/_data/canonical-tags/tool.yaml @@ -0,0 +1,3 @@ +id: tool +name: Tool +description: Software that makes Kubernetes easier or better to use. diff --git a/_data/canonical-tags/user-type.yaml b/_data/canonical-tags/user-type.yaml new file mode 100644 index 0000000000..8f38725720 --- /dev/null +++ b/_data/canonical-tags/user-type.yaml @@ -0,0 +1,3 @@ +id: user-type +name: User Type +description: Represents a common type of Kubernetes user. diff --git a/_data/canonical-tags/workload.yaml b/_data/canonical-tags/workload.yaml new file mode 100644 index 0000000000..4b18a36443 --- /dev/null +++ b/_data/canonical-tags/workload.yaml @@ -0,0 +1,3 @@ +id: workload +name: Workload +description: Applications running on Kubernetes. diff --git a/_data/concepts.yml b/_data/concepts.yml index 964080693d..0a0fc14143 100644 --- a/_data/concepts.yml +++ b/_data/concepts.yml @@ -20,11 +20,21 @@ toc: section: - docs/concepts/architecture/nodes.md - docs/concepts/architecture/master-node-communication.md + - docs/concepts/architecture/cloud-controller.md -- title: Extending the Kubernetes API +- title: Extending Kubernetes section: - - docs/concepts/api-extension/custom-resources.md - - docs/concepts/api-extension/apiserver-aggregation.md + - docs/concepts/overview/extending.md + - title: Extending the Kubernetes API + section: + - docs/concepts/api-extension/apiserver-aggregation.md + - docs/concepts/api-extension/custom-resources.md + - title: Compute, Storage, and Networking Extensions + section: + - docs/concepts/cluster-administration/network-plugins.md + - docs/concepts/cluster-administration/device-plugins.md + - docs/concepts/cluster-administration/sysctl-cluster.md + - docs/concepts/service-catalog/index.md - title: Containers section: @@ -40,6 +50,7 @@ toc: - docs/concepts/workloads/pods/pod.md - docs/concepts/workloads/pods/pod-lifecycle.md - docs/concepts/workloads/pods/init-containers.md + - docs/concepts/workloads/pods/podpreset.md - docs/concepts/workloads/pods/disruptions.md - title: Controllers section: @@ -75,12 +86,13 @@ toc: section: - docs/concepts/storage/volumes.md - docs/concepts/storage/persistent-volumes.md - - title: Dynamic Provisioning - path: http://blog.kubernetes.io/2016/10/dynamic-provisioning-and-storage-in-kubernetes.html + - docs/concepts/storage/storage-classes.md + - docs/concepts/storage/dynamic-provisioning.md - title: Cluster Administration section: - docs/concepts/cluster-administration/cluster-administration-overview.md + - docs/concepts/cluster-administration/certificates.md - docs/concepts/cluster-administration/cloud-providers.md - docs/concepts/cluster-administration/manage-deployment.md - docs/concepts/cluster-administration/networking.md diff --git a/_data/docs-home.yml b/_data/docs-home.yml index 7771dbbf33..ee3b471e3d 100644 --- a/_data/docs-home.yml +++ b/_data/docs-home.yml @@ -3,8 +3,6 @@ abstract: "Documentation for using and learning about Kubernetes." toc: - docs/home/index.md -- docs/home/index.md - - title: Release Notes path: https://git.k8s.io/kubernetes/CHANGELOG.md - title: Release Roadmap @@ -21,3 +19,4 @@ toc: - docs/home/contribute/page-templates.md - docs/home/contribute/review-issues.md - docs/home/contribute/style-guide.md + - docs/home/contribute/includes.md diff --git a/_data/glossary/_example.yml b/_data/glossary/_example.yml index d939c91f3c..78ef717df2 100644 --- a/_data/glossary/_example.yml +++ b/_data/glossary/_example.yml @@ -1,17 +1,27 @@ id: _example name: Example K8s Term -formerly: +full-link: kubernetes.io/docs/link-to-long-dedicated-docs-page +aka: - Slang K8s Term - Misnomer - Formerly Known as Prince related: -- Less Fancy K8s Term -- Tangential Term -- Commonly Used With +- id-of-less-fancy-k8s-term +- id-of-tangential-term +- id-of-commonly-used-with-term tags: - Some Tag -short-description: | - Required. One or two lines that provide a minimum definition. Do not repeat the term. Write about the plural of the term. Prefer fragments. Model after tooltips. End with a period. -long-description: | - Optional. Longer additional text to appear after (in conjunction with) short description. Provide where the short description is not sufficient as the intro paragraph to a topic. Write complete but concise sentences. +short-description: > + Required. + Markdown allowed (e.g. for cross-linking). + One or two lines that provide a minimum definition. + Do not repeat the term. + Prefer fragments. + End with a period. +long-description: > + Optional. + Markdown allowed. + Longer additional text to appear after (in conjunction with) short description. + Provide where the short description is not sufficient as the intro paragraph to a topic. + Write complete but concise sentences. **See /_includes/templates/glossary/README.md for the official style guide.** diff --git a/_data/glossary/application-architect.yaml b/_data/glossary/application-architect.yaml new file mode 100644 index 0000000000..387d4443ea --- /dev/null +++ b/_data/glossary/application-architect.yaml @@ -0,0 +1,11 @@ +id: application-architect +name: Application Architect +related: + - application-developer +tags: + - user-type +short-description: > + A person responsible for the high-level design of an application. +long-description: > + An architect ensures that an app's implementation allows it to interact with its surrounding components in a scalable, maintainable way. + Surrounding components include databases, logging infrastructure, and other microservices. diff --git a/_data/glossary/application-developer.yaml b/_data/glossary/application-developer.yaml new file mode 100644 index 0000000000..696e53ef6d --- /dev/null +++ b/_data/glossary/application-developer.yaml @@ -0,0 +1,11 @@ +id: application-developer +name: Application Developer +related: + - application-architect +tags: + - user-type +short-description: > + A person who writes an application that runs in a Kubernetes cluster. +long-description: > + An application developer focuses on one part of an application. + The scale of their focus may vary significantly in size. diff --git a/_data/glossary/approver.yaml b/_data/glossary/approver.yaml new file mode 100644 index 0000000000..f521314566 --- /dev/null +++ b/_data/glossary/approver.yaml @@ -0,0 +1,10 @@ +id: approver +name: Approver +tags: +- community +short-description: > + A person who can review and approve Kubernetes code contributions. +long-description: > + While code review is focused on code quality and correctness, approval is focused on the holistic acceptance of a contribution. + Holistic acceptance includes backwards/forwards compatibility, adhering to API and flag conventions, subtle performance and correctness issues, interactions with other parts of the system, and others. + Approver status is scoped to a part of the codebase. diff --git a/_data/glossary/cla.yaml b/_data/glossary/cla.yaml new file mode 100644 index 0000000000..159cb575d9 --- /dev/null +++ b/_data/glossary/cla.yaml @@ -0,0 +1,9 @@ +id: cla +name: CLA (Contributor License Agreement) +full-link: https://github.com/kubernetes/community/blob/master/CLA.md +tags: +- community +short-description: > + Terms under which a {% glossary_tooltip text="contributor" term_id="contributor" %} grants a license to an open source project for their contributions. +long-description: > + CLAs help resolve legal disputes involving contributed material and intellectual property (IP). diff --git a/_data/glossary/cluster-architect.yaml b/_data/glossary/cluster-architect.yaml new file mode 100644 index 0000000000..14b60a0e18 --- /dev/null +++ b/_data/glossary/cluster-architect.yaml @@ -0,0 +1,11 @@ +id: cluster-architect +name: Cluster Architect +related: + - cluster + - cluster-operator +tags: + - user-type +short-description: > + A person who designs infrastructure that involves one or more Kubernetes clusters. +long-description: > + Cluster architects are concerned with best practices for distributed systems, for example: high availability and security. diff --git a/_data/glossary/cluster-operator.yaml b/_data/glossary/cluster-operator.yaml new file mode 100644 index 0000000000..82eaa42a60 --- /dev/null +++ b/_data/glossary/cluster-operator.yaml @@ -0,0 +1,15 @@ +id: cluster-operator +name: Cluster Operator +aka: + - Cluster Administrator +related: + - cluster + - cluster-architect +tags: + - user-type +short-description: > + A person who configures, controls, and monitors clusters. +long-description: | + Their primary responsibility is keeping a cluster up and running, which may involve periodic maintenance activities or upgrades.
+ + **NOTE:** Cluster operators are different from the [Operator pattern](https://coreos.com/operators) that extends the Kubernetes API. diff --git a/_data/glossary/cluster.yaml b/_data/glossary/cluster.yaml new file mode 100644 index 0000000000..a86c1ab696 --- /dev/null +++ b/_data/glossary/cluster.yaml @@ -0,0 +1,9 @@ +id: cluster +name: Cluster +tags: +- fundamental +- operation +short-description: > + A set of machines, called nodes, that run containerized applications managed by Kubernetes. +long-description: > + A cluster has several worker nodes and at least one master node. diff --git a/_data/glossary/code-contributor.yaml b/_data/glossary/code-contributor.yaml new file mode 100644 index 0000000000..9fa8fbe82c --- /dev/null +++ b/_data/glossary/code-contributor.yaml @@ -0,0 +1,11 @@ +id: code-contributor +name: Code Contributor +aka: + - Community Developer +tags: +- community +- user-type +short-description: > + A person who develops and contributes code to the Kubernetes open source codebase. +long-description: > + They are also an active {% glossary_tooltip text="community member" term_id="member" %} who participates in one or more {% glossary_tooltip text="Special Interest Groups (SIGs)" term_id="sig" %}. diff --git a/_data/glossary/container.yaml b/_data/glossary/container.yaml new file mode 100644 index 0000000000..b9682d4b23 --- /dev/null +++ b/_data/glossary/container.yaml @@ -0,0 +1,10 @@ +id: container +name: Container +full-link: /docs/concepts/overview/what-is-kubernetes/#why-containers +tags: +- fundamental +- workload +short-description: > + A lightweight and portable executable image that contains software and all of its dependencies. +long-description: > + Containers decouple applications from underlying host infrastructure to make deployment easier in different cloud or OS environments, and for easier scaling. diff --git a/_data/glossary/contributor.yaml b/_data/glossary/contributor.yaml new file mode 100644 index 0000000000..af005aac50 --- /dev/null +++ b/_data/glossary/contributor.yaml @@ -0,0 +1,8 @@ +id: contributor +name: Contributor +tags: +- community +short-description: > + Someone who donates code, documentation, or their time to help the Kubernetes project or community. +long-description: > + Contributions include pull requests (PRs), issues, feedback, {% glossary_tooltip text="special interest groups (SIG)" term_id="sig" %} participation, or organizing community events. diff --git a/_data/glossary/cronjob.yaml b/_data/glossary/cronjob.yaml new file mode 100644 index 0000000000..5116cf424a --- /dev/null +++ b/_data/glossary/cronjob.yaml @@ -0,0 +1,10 @@ +id: cronjob +name: CronJob +full-link: /docs/concepts/workloads/controllers/cron-jobs/ +tags: +- core-object +- workload +short-description: > + Manages a [Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/) that runs on a periodic schedule. +long-description: > + Similar to a line in a *crontab* file, a Cronjob object specifies a schedule using the [Cron](https://en.wikipedia.org/wiki/Cron) format. diff --git a/_data/glossary/deployment.yaml b/_data/glossary/deployment.yaml new file mode 100644 index 0000000000..4a8d04211a --- /dev/null +++ b/_data/glossary/deployment.yaml @@ -0,0 +1,11 @@ +id: deployment +name: Deployment +full-link: /docs/concepts/workloads/controllers/deployment/ +tags: +- fundamental +- core-object +- workload +short-description: > + An API object that manages a replicated application. +long-description: > + Each replica is represented by a {% glossary_tooltip term_id="pod" %}, and the Pods are distributed among the nodes of a cluster. diff --git a/_data/glossary/developer.yaml b/_data/glossary/developer.yaml new file mode 100644 index 0000000000..38534826ab --- /dev/null +++ b/_data/glossary/developer.yaml @@ -0,0 +1,11 @@ +id: developer +name: Developer (disambiguation) +aka: + - Kubernetes Developer +tags: +- community +- user-type +short-description: > + May refer to: {% glossary_tooltip text="Application Developer" term_id="application-developer" %}, {% glossary_tooltip text="Code Contributor" term_id="code-contributor" %}, or {% glossary_tooltip text="Platform Developer" term_id="platform-developer" %}. +long-description: > + This overloaded term may have different meanings depending on the context diff --git a/_data/glossary/downstream.yaml b/_data/glossary/downstream.yaml new file mode 100644 index 0000000000..dab6d75628 --- /dev/null +++ b/_data/glossary/downstream.yaml @@ -0,0 +1,11 @@ +id: downstream +name: Downstream (disambiguation) +related: +- upstream +tags: +- community +short-description: > + May refer to: code in the Kubernetes ecosystem that depends upon the core Kubernetes codebase or a forked repo. +long-description: | + * In the **Kubernetes Community**: Conversations often use *downstream* to mean the ecosystem, code, or third-party tools that rely on the core Kubernetes codebase. For example, a new feature in Kubernetes may be adopted by applications *downstream* to improve their functionality. + * In **GitHub** or **git**: The convention is to refer to a forked repo as *downstream*, whereas the source repo is considered *upstream*. diff --git a/_data/glossary/helm-chart.yaml b/_data/glossary/helm-chart.yaml new file mode 100644 index 0000000000..49d916d1af --- /dev/null +++ b/_data/glossary/helm-chart.yaml @@ -0,0 +1,10 @@ +id: helm-chart +name: Helm Chart +full-link: https://github.com/kubernetes/helm/blob/master/docs/charts.md +tags: +- tool +short-description: > + A package of pre-configured Kubernetes resources that can be managed with the Helm tool. +long-description: | + Charts provide a reproducible way of creating and sharing Kubernetes applications. + A single chart can be used to deploy something simple, like a memcached Pod, or something complex, like a full web app stack with HTTP servers, databases, caches, and so on. diff --git a/_data/glossary/ingress.yaml b/_data/glossary/ingress.yaml new file mode 100644 index 0000000000..f06031ee2e --- /dev/null +++ b/_data/glossary/ingress.yaml @@ -0,0 +1,13 @@ +id: ingress +name: Ingress +full-link: /docs/concepts/services-networking/ingress/ +aka: + - Ingress controller +tags: +- networking +- architecture +- extension +short-description: > + An API object that manages external access to the services in a cluster, typically HTTP. +long-description: > + Ingress can provide load balancing, SSL termination and name-based virtual hosting. diff --git a/_data/glossary/istio.yaml b/_data/glossary/istio.yaml new file mode 100644 index 0000000000..c05bad8e72 --- /dev/null +++ b/_data/glossary/istio.yaml @@ -0,0 +1,13 @@ +id: istio +name: Istio +full-link: https://istio.io/docs/concepts/what-is-istio/overview.html +tags: +- networking +- architecture +- extension +short-description: > + An open platform (not Kubernetes-specific) that provides a uniform way to integrate microservices, manage traffic flow, enforce policies, and aggregate telemetry data. +long-description: > + Adding Istio does not require changing application code. + It is a layer of infrastructure between a service and the network, which when combined with service deployments, is commonly referred to as a service mesh. + Istio's control plane abstracts away the underlying cluster management platform, which may be Kubernetes, Mesosphere, etc. diff --git a/_data/glossary/kops.yaml b/_data/glossary/kops.yaml new file mode 100644 index 0000000000..67a40892d1 --- /dev/null +++ b/_data/glossary/kops.yaml @@ -0,0 +1,19 @@ +id: kops +name: Kops +full-link: /docs/getting-started-guides/kops/ +tags: +- tool +- operation +short-description: > + A CLI tool that helps you create, destroy, upgrade and maintain production-grade, highly available, Kubernetes clusters. *NOTE: Officially supports AWS only, with GCE and VMware vSphere in alpha*. +long-description: | + `kops` provisions your cluster with: + + * Fully automated installation + * DNS-based cluster identification + * Self-healing: everything runs in Auto-Scaling Groups + * Limited OS support (Debian preferred, Ubuntu 16.04 supported, early support for CentOS & RHEL) + * High availability (HA) support + * The ability to directly provision, or generate terraform manifests + + You can also build your own cluster using {% glossary_tooltip term_id="kubeadm" %} as a building block. `kops` builds on the kubeadm work. diff --git a/_data/glossary/kubeadm.yaml b/_data/glossary/kubeadm.yaml new file mode 100644 index 0000000000..e70b046f19 --- /dev/null +++ b/_data/glossary/kubeadm.yaml @@ -0,0 +1,10 @@ +id: kubeadm +name: Kubeadm +full-link: /docs/admin/kubeadm/ +tags: +- tool +- operation +short-description: > + A tool for quickly installing Kubernetes and setting up a secure cluster. +long-description: > + You can use kubeadm to install both the control plane and the worker node components. diff --git a/_data/glossary/kubectl.yaml b/_data/glossary/kubectl.yaml new file mode 100644 index 0000000000..825749811c --- /dev/null +++ b/_data/glossary/kubectl.yaml @@ -0,0 +1,10 @@ +id: kubectl +name: Kubectl +full-link: /docs/user-guide/kubectl-overview/ +tags: +- tool +- fundamental +short-description: > + A command line tool for communicating with a {% glossary_tooltip text="Kubernetes API" term_id="kubernetes-api" %} server. +long-description: > + You can use kubectl to create, inspect, update, and delete Kubernetes objects. diff --git a/_data/glossary/kubernetes-api.yaml b/_data/glossary/kubernetes-api.yaml new file mode 100644 index 0000000000..773da6e516 --- /dev/null +++ b/_data/glossary/kubernetes-api.yaml @@ -0,0 +1,13 @@ +id: kubernetes-api +name: Kubernetes API +full-link: /docs/concepts/overview/kubernetes-api/ +tags: +- fundamental +- architecture +short-description: > + The application that serves Kubernetes functionality through a RESTful interface and stores the state of the cluster. +long-description: > + Kubernetes resources and "records of intent" are all stored as API objects, and modified via RESTful calls to the API. + The API allows configuration to be managed in a declarative way. + Users can interact with the Kubernetes API directly, or via tools like `kubectl`. + The core Kubernetes API is flexible and can also be extended to support custom resources. diff --git a/_data/glossary/maintainer.yaml b/_data/glossary/maintainer.yaml new file mode 100644 index 0000000000..dc97b11544 --- /dev/null +++ b/_data/glossary/maintainer.yaml @@ -0,0 +1,8 @@ +id: maintainer +name: Maintainer +tags: +- community +short-description: > + A highly experienced {% glossary_tooltip text="contributor" term_id="contributor" %}, active in multiple areas of Kubernetes, who has cross-area ownership and write access to a project's GitHub repository. +long-description: > + Maintainers work holistically across the project to maintain its health and success and have made substantial contributions, both through code development and broader organizational efforts. diff --git a/_data/glossary/managed-service.yaml b/_data/glossary/managed-service.yaml new file mode 100644 index 0000000000..409831141f --- /dev/null +++ b/_data/glossary/managed-service.yaml @@ -0,0 +1,9 @@ +id: managed-service +name: Managed Service +tags: +- extension +short-description: > + A software offering maintained by a third-party provider. +long-description: > + Some examples of Managed Services are AWS EC2, Azure SQL Database, and GCP Pub/Sub, but they can be any software offering that can be used by an application. + [Service Catalog](/docs/concepts/service-catalog/) provides a way to list, provision, and bind with Managed Services offered by {% glossary_tooltip text="Service Brokers" term_id="service-broker" %}. \ No newline at end of file diff --git a/_data/glossary/member.yaml b/_data/glossary/member.yaml new file mode 100644 index 0000000000..e78ec6bcce --- /dev/null +++ b/_data/glossary/member.yaml @@ -0,0 +1,10 @@ +id: member +name: Member +tags: +- community +short-description: > + A continuously active {% glossary_tooltip text="contributor" term_id="contributor" %} in the K8s community. +long-description: > + Members can have issues and PRs assigned to them and participate in {% glossary_tooltip text="special interest groups (SIGs)" term_id="sig" %} through GitHub teams. + Pre-submit tests are automatically run for members' PRs. + A member is expected to remain an active contributor to the community. diff --git a/_data/glossary/minikube.yaml b/_data/glossary/minikube.yaml new file mode 100644 index 0000000000..3f9c01ef51 --- /dev/null +++ b/_data/glossary/minikube.yaml @@ -0,0 +1,10 @@ +id: minikube +name: Minikube +full-link: /docs/getting-started-guides/minikube/ +tags: +- fundamental +- tool +short-description: > + A tool for running Kubernetes locally. +long-description: > + Minikube runs a single-node cluster inside a VM on your computer. diff --git a/_data/glossary/platform-developer.yaml b/_data/glossary/platform-developer.yaml new file mode 100644 index 0000000000..8d0c556d06 --- /dev/null +++ b/_data/glossary/platform-developer.yaml @@ -0,0 +1,11 @@ +id: platform-developer +name: Platform Developer +aka: + - Kubernetes Developer + - Extension Developer +tags: + - user-type +short-description: > + A person who customizes the Kubernetes platform to fit the needs of their project. +long-description: > + A platform developer may, for example, use [Custom Resources](/docs/concepts/api-extension/custom-resources/) or [Extend the Kubernetes API with the aggregation layer](/docs/concepts/api-extension/apiserver-aggregation/) to add functionality to their instance of Kubernetes, specifically for their application. Some Platform Developers are also {% glossary_tooltip text="contributors" term_id="contributor" %} and develop extensions which are contributed to the Kubernetes community. Others develop closed-source commercial or site-specific extensions. diff --git a/_data/glossary/pod.yaml b/_data/glossary/pod.yaml new file mode 100644 index 0000000000..a5d3f567b9 --- /dev/null +++ b/_data/glossary/pod.yaml @@ -0,0 +1,17 @@ +id: pod +name: Pod +full-link: /docs/concepts/workloads/pods/pod-overview/ +related: +- container +- sidecar +- deployment +- statefulset +tags: +- core-object +- fundamental +short-description: > + The smallest and simplest Kubernetes object. A Pod represents a set of running {% glossary_tooltip text="containers" term_id="container" %} on your cluster. +long-description: > + A Pod is typically set up to run a single primary container. + It can also run optional sidecar containers that add supplementary features like logging. + Pods are commonly managed by a {% glossary_tooltip term_id="deployment" %}. diff --git a/_data/glossary/rbac.yaml b/_data/glossary/rbac.yaml new file mode 100644 index 0000000000..e1fde1de8d --- /dev/null +++ b/_data/glossary/rbac.yaml @@ -0,0 +1,10 @@ +id: rbac +name: RBAC (Role-Based Access Control) +full-link: /docs/admin/authorization/rbac/ +tags: +- security +- fundamental +short-description: > + Manages authorization decisions, allowing admins to dynamically configure access policies through the {% glossary_tooltip text="Kubernetes API" term_id="kubernetes-api" %}. +long-description: > + RBAC utilizes *roles*, which contain permission rules, and *role bindings*, which grant the permissions defined in a role to a set of users. diff --git a/_data/glossary/reviewer.yaml b/_data/glossary/reviewer.yaml new file mode 100644 index 0000000000..076b120e02 --- /dev/null +++ b/_data/glossary/reviewer.yaml @@ -0,0 +1,8 @@ +id: reviewer +name: Reviewer +tags: +- community +short-description: > + A person who reviews code for quality and correctness on some part of the project. +long-description: > + Reviewers are knowledgeable about both the codebase and software engineering principles. Reviewer status is scoped to a part of the codebase. diff --git a/_data/glossary/service-broker.yaml b/_data/glossary/service-broker.yaml new file mode 100644 index 0000000000..9cdc99bbcb --- /dev/null +++ b/_data/glossary/service-broker.yaml @@ -0,0 +1,9 @@ +id: service-broker +name: Service Broker +tags: +- extension +short-description: > + An endpoint for a set of {% glossary_tooltip text="Managed Services" term_id="managed-service" %} offered and maintained by a third-party. +long-description: > + {% glossary_tooltip text="Service Brokers" term_id="service-broker" %} implement the [Open Service Broker API spec](https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md) and provide a standard interface for applications to use their Managed Services. + [Service Catalog](/docs/concepts/service-catalog/) provides a way to list, provision, and bind with Managed Services offered by Service Brokers. \ No newline at end of file diff --git a/_data/glossary/service-catalog.yaml b/_data/glossary/service-catalog.yaml new file mode 100644 index 0000000000..bcbadd309c --- /dev/null +++ b/_data/glossary/service-catalog.yaml @@ -0,0 +1,8 @@ +id: service-catalog +name: Service Catalog +tags: +- extension +short-description: > + An extension API that enables applications running in Kubernetes clusters to easily use external managed software offerings, such as a datastore service offered by a cloud provider. +long-description: > + Service Catalog provides a way to list, provision, and bind with external {% glossary_tooltip text="Managed Services" term_id="managed-service" %} from {% glossary_tooltip text="Service Brokers" term_id="service-broker" %} without needing detailed knowledge about how those services are created or managed. \ No newline at end of file diff --git a/_data/glossary/service.yaml b/_data/glossary/service.yaml new file mode 100644 index 0000000000..03c3469c53 --- /dev/null +++ b/_data/glossary/service.yaml @@ -0,0 +1,10 @@ +id: service +name: Service +full-link: /docs/concepts/services-networking/service/ +tags: +- fundamental +- core-object +short-description: > + An API object that describes how to access applications, such as a set of {% glossary_tooltip text="Pods" term_id="pod" %}, and can describe ports and load-balancers. +long-description: > + The access point can be internal or external to the cluster. diff --git a/_data/glossary/sig.yaml b/_data/glossary/sig.yaml new file mode 100644 index 0000000000..8e9ccef98b --- /dev/null +++ b/_data/glossary/sig.yaml @@ -0,0 +1,12 @@ +id: sig +name: SIG (special interest group) +full-link: https://github.com/kubernetes/community/blob/master/sig-list.md#master-sig-list +tags: +- community +short-description: > + {% glossary_tooltip text="Community members" term_id="member" %} who collectively manage an ongoing piece or aspect of the larger Kubernetes open source project. +long-description: | + Members within a SIG have a shared interest in advancing a specific area, such as architecture, API machinery, or documentation. + SIGs must follow the [SIG Governance](https://github.com/kubernetes/community/blob/master/sig-governance.md) guidelines but can have their own contribution policy and channels of communication. + + For more information, see the [kubernetes/community](https://github.com/kubernetes/community) repo and the current list of [SIGs and Working Groups](https://github.com/kubernetes/community/blob/master/sig-list.md). diff --git a/_data/glossary/statefulset.yml b/_data/glossary/statefulset.yml index 3f05200012..9b2d6c44fb 100644 --- a/_data/glossary/statefulset.yml +++ b/_data/glossary/statefulset.yml @@ -1,18 +1,18 @@ id: statefulset name: StatefulSet -formerly: +full-link: /docs/concepts/workloads/controllers/statefulset/ +aka: - PetSet related: -- Deployment -- Pod +- deployment +- pod tags: -- Storage -- Workload -- API Object -short-description: | - Manage the deployment and scaling of a set of Pods, *and provide guarantees about ordering*. They do so by maintaining a *unique*, sticky identity for each of their Pods. - +- core-object +- workload +- storage +short-description: > + Manages the deployment and scaling of a set of {% glossary_tooltip text="Pods" term_id="pod" %}, *and provides guarantees about the ordering and uniqueness* of these Pods. long-description: | - Like Deployments, StatefulSets manage Pods that are based on an identical container spec. However, although their specs are the same, the Pods in a StatefulSet are not interchangeable. Each Pod has a persistent identifier that it maintains across any rescheduling. + Like a {% glossary_tooltip term_id="deployment" %}, a StatefulSet manages Pods that are based on an identical container spec. Unlike a Deployment, a StatefulSet maintains a sticky identity for each of their Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling. - StatefulSets also operate according to the Controller pattern. You define your desired state in a StatefulSet *object*, and the StatefulSet *controller* makes any necessary updates to the get there from the current state. + A StatefulSet operates under the same pattern as any other Controller. You define your desired state in a StatefulSet *object*, and the StatefulSet *controller* makes any necessary updates to get there from the current state. diff --git a/_data/glossary/upstream.yaml b/_data/glossary/upstream.yaml new file mode 100644 index 0000000000..e2c2cac66d --- /dev/null +++ b/_data/glossary/upstream.yaml @@ -0,0 +1,11 @@ +id: upstream +name: Upstream (disambiguation) +related: +- downstream +tags: +- community +short-description: > + May refer to: core Kubernetes or the source repo from which a repo was forked. +long-description: | + * In the **Kubernetes Community**: Conversations often use *upstream* to mean the core Kubernetes codebase, which the general ecosystem, other code, or third-party tools relies upon. For example, [community members](#term-member) may suggest that a feature is moved upstream so that it is in the core codebase instead of in a plugin or third-party tool. + * In **GitHub** or **git**: The convention is to refer to a source repo as *upstream*, whereas the forked repo is considered *downstream*. diff --git a/_data/glossary/wg.yaml b/_data/glossary/wg.yaml new file mode 100644 index 0000000000..8237068cf0 --- /dev/null +++ b/_data/glossary/wg.yaml @@ -0,0 +1,11 @@ +id: wg +name: WG (working group) +full-link: https://github.com/kubernetes/community/blob/master/sig-list.md#master-working-group-list +tags: +- community +short-description: > + Facilitates the discussion and/or implementation of a short-lived, narrow, or decoupled project for a committee, {% glossary_tooltip text="SIG" term_id="sig" %}, or cross-SIG effort. +long-description: | + Working groups are a way of organizing people to accomplish a discrete task, and are relatively easy to create and deprecate when inactive. + + For more information, see the [kubernetes/community](https://github.com/kubernetes/community) repo and the current list of [SIGs and working groups](https://github.com/kubernetes/community/blob/master/sig-list.md). diff --git a/_data/reference.yml b/_data/reference.yml index fa403d8e44..ed7e57f37a 100644 --- a/_data/reference.yml +++ b/_data/reference.yml @@ -2,6 +2,7 @@ bigheader: "Reference Documentation" abstract: "Design docs, concept definitions, and references for APIs and CLIs." toc: - docs/reference/index.md +- docs/reference/glossary.md - title: Using the API section: @@ -29,12 +30,6 @@ toc: section: - title: v1.8 path: /docs/api-reference/v1.8/ - - title: v1.7 - path: /docs/api-reference/v1.7/ - - title: v1.6 - path: /docs/api-reference/v1.6/ - - title: v1.5 - path: /docs/api-reference/v1.5/ - docs/reference/labels-annotations-taints.md - title: OpenAPI and Swagger section: @@ -54,45 +49,39 @@ toc: - title: kubectl CLI section: - - docs/user-guide/kubectl-overview.md - - title: v1.8 Commands - path: /docs/user-guide/kubectl/v1.8/ - - title: v1.7 Commands - path: /docs/user-guide/kubectl/v1.7/ - - title: v1.6 Commands - path: /docs/user-guide/kubectl/v1.6/ - - title: v1.5 Commands - path: /docs/user-guide/kubectl/v1.5/ - - docs/user-guide/docker-cli-to-kubectl.md - - docs/user-guide/kubectl-conventions.md - - docs/user-guide/jsonpath.md - - docs/user-guide/kubectl-cheatsheet.md + - docs/reference/kubectl/overview.md + - docs/reference/generated/kubectl/kubectl-options.md + - title: kubectl Commands + path: /docs/reference/generated/kubectl/kubectl-commands.html + - docs/reference/kubectl/docker-cli-to-kubectl.md + - docs/reference/kubectl/conventions.md + - docs/reference/kubectl/jsonpath.md + - docs/reference/kubectl/cheatsheet.md -- title: Cloud Controller Manager +- title: Setup Tools Reference section: - - docs/admin/cloud-controller-manager.md - -- title: Setup Tools - section: - - docs/admin/kubeadm.md + - docs/reference/generated/kubeadm.md - title: Kubefed section: - - docs/admin/kubefed.md - - docs/admin/kubefed_options.md - - docs/admin/kubefed_init.md - - docs/admin/kubefed_join.md - - docs/admin/kubefed_unjoin.md - - docs/admin/kubefed_version.md + - docs/reference/generated/kubefed.md + - docs/reference/generated/kubefed_options.md + - docs/reference/generated/kubefed_init.md + - docs/reference/generated/kubefed_join.md + - docs/reference/generated/kubefed_unjoin.md + - docs/reference/generated/kubefed_version.md -- title: Config Reference +- title: Command-line Tools Reference section: - - docs/admin/kubelet.md - - docs/admin/kube-apiserver.md - - docs/admin/kube-controller-manager.md - - docs/admin/kube-proxy.md - - docs/admin/kube-scheduler.md - - docs/admin/federation-apiserver.md - - docs/admin/federation-controller-manager.md + - docs/reference/generated/kubelet.md + - docs/admin/kubelet-authentication-authorization.md + - docs/reference/generated/kube-apiserver.md + - docs/reference/generated/kube-controller-manager.md + - docs/reference/generated/kube-proxy.md + - docs/reference/generated/kube-scheduler.md + - docs/admin/kubelet-tls-bootstrapping.md + - docs/reference/generated/cloud-controller-manager.md + - docs/reference/generated/federation-apiserver.md + - docs/reference/generated/federation-controller-manager.md - title: Kubernetes Design Docs section: @@ -113,5 +102,3 @@ toc: - title: Kubernetes Issue Tracker on GitHub path: https://github.com/kubernetes/kubernetes/issues/ - docs/reference/security.md - - diff --git a/_data/setup.yml b/_data/setup.yml index 86d591f46d..d2907e9433 100644 --- a/_data/setup.yml +++ b/_data/setup.yml @@ -12,18 +12,19 @@ toc: section: - docs/setup/independent/install-kubeadm.md - docs/setup/independent/create-cluster-kubeadm.md + - docs/setup/independent/troubleshooting-kubeadm.md - docs/getting-started-guides/scratch.md - docs/getting-started-guides/alternatives.md - title: Hosted Solutions section: - - title: Running Kubernetes on Google Container Engine - path: https://cloud.google.com/container-engine/docs/before-you-begin/ + - title: Running Kubernetes on Google Kubernetes Engine + path: https://cloud.google.com/kubernetes-engine/docs/before-you-begin/ - title: Running Kubernetes on Azure Container Service path: https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough - - title: Running Kubernetes on IBM Bluemix Container Service - path: https://console.ng.bluemix.net/docs/containers/container_index.html + - title: Running Kubernetes on IBM Cloud Container Service + path: https://console.bluemix.net/docs/containers/container_index.html - title: Turn-key Cloud Solutions section: @@ -32,7 +33,7 @@ toc: - docs/getting-started-guides/azure.md - docs/getting-started-guides/alibaba-cloud.md - docs/getting-started-guides/clc.md - - title: Running Kubernetes on IBM Bluemix + - title: Running Kubernetes on IBM Cloud path: https://github.com/patrocinio/kubernetes-softlayer - docs/getting-started-guides/stackpoint.md diff --git a/_data/tasks.yml b/_data/tasks.yml index 6fcac21d54..15eb64620b 100644 --- a/_data/tasks.yml +++ b/_data/tasks.yml @@ -96,10 +96,11 @@ toc: - docs/tasks/debug-application-cluster/debug-stateful-set.md - docs/tasks/debug-application-cluster/debug-application-introspection.md - docs/tasks/debug-application-cluster/audit.md + - docs/tasks/debug-application-cluster/local-debugging.md - title: Use Explorer to Examine the Runtime Environment path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/explorer -- title: Access and Extend the Kubernetes API +- title: Extend Kubernetes section: - docs/tasks/access-kubernetes-api/http-proxy-access-api.md - docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions.md @@ -107,6 +108,8 @@ toc: - docs/tasks/access-kubernetes-api/migrate-third-party-resource.md - docs/tasks/access-kubernetes-api/configure-aggregation-layer.md - docs/tasks/access-kubernetes-api/setup-extension-api-server.md + - docs/tasks/service-catalog/install-service-catalog-using-helm.md + - docs/tasks/service-catalog/install-service-catalog-using-sc.md - title: TLS section: @@ -147,6 +150,7 @@ toc: - docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods.md - docs/tasks/administer-cluster/declare-network-policy.md - docs/tasks/administer-cluster/reconfigure-kubelet.md + - docs/tasks/administer-cluster/kubelet-config-file.md - title: Install Network Policy Provider section: - docs/tasks/administer-cluster/calico-network-policy.md diff --git a/_data/tutorials.yml b/_data/tutorials.yml index 60462663a6..eaf44f93e8 100644 --- a/_data/tutorials.yml +++ b/_data/tutorials.yml @@ -36,6 +36,8 @@ toc: - title: Introduction to Kubernetes (edX) path: https://www.edx.org/course/introduction-kubernetes-linuxfoundationx-lfs158x# - docs/tutorials/stateless-application/hello-minikube.md +- docs/user-guide/walkthrough/index.md +- docs/user-guide/walkthrough/k8s201.md - title: Configuration section: - docs/tutorials/configuration/configure-redis-using-configmap.md diff --git a/_includes/code.html b/_includes/code.html index d59db08ff7..83a702785d 100644 --- a/_includes/code.html +++ b/_includes/code.html @@ -1,6 +1,6 @@ {% capture samplecode %}{% include_relative {{include.file}} %}{% endcapture %} {% if include.k8slink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/kubernetes/blob/{{page.githubbranch}}{{include.k8slink}}{% endcapture %}{% endif %} -{% if include.ghlink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/kubernetes.github.io/{{page.docsbranch}}{{include.ghlink}}{% endcapture %}{% endif %} +{% if include.ghlink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/website/{{page.docsbranch}}{{include.ghlink}}{% endcapture %}{% endif %} {% capture mysample %} ```{{include.language}} {{ samplecode | raw | strip }} diff --git a/_includes/default-storage-class-prereqs.md b/_includes/default-storage-class-prereqs.md index a4747d9032..ef4823318d 100644 --- a/_includes/default-storage-class-prereqs.md +++ b/_includes/default-storage-class-prereqs.md @@ -1,5 +1,5 @@ You need to either have a dynamic PersistentVolume provisioner with a default -[StorageClass](/docs/user-guide/persistent-volumes/#storageclasses), +[StorageClass](/docs/concepts/storage/storage-classes/), or [statically provision PersistentVolumes](/docs/user-guide/persistent-volumes/#provisioning) yourself to satisfy the [PersistentVolumeClaims](/docs/user-guide/persistent-volumes/#persistentvolumeclaims) used here. diff --git a/_includes/footer.html b/_includes/footer.html index 3cb98b0d08..c01c5d5e1b 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -25,7 +25,7 @@
- © {{ 'now' | date: "%Y" }} The Kubernetes Authors | Documentation Distributed under CC BY 4.0 + © {{ 'now' | date: "%Y" }} The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © {{ 'now' | date: "%Y" }} The Linux Foundation®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage diff --git a/_includes/head.html b/_includes/head.html index e20aad91d2..e6247c4cbb 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -8,6 +8,7 @@ + {% if page.deprecated %}{% endif %} {% if page.class == "gridPage" %}{% endif %} {% if page.css %}{% else %}{% endif %} @@ -23,5 +24,6 @@ + {% seo %} diff --git a/_includes/partner-script.js b/_includes/partner-script.js index 1eee70ad9f..d90cc040d0 100644 --- a/_includes/partner-script.js +++ b/_includes/partner-script.js @@ -1,25 +1,11 @@ ;(function () { var partners = [ - { - type: 2, - name: 'CoreOS', - logo: 'core_os', - link: 'https://tectonic.com/', - blurb: 'Tectonic is the enterprise-ready Kubernetes product, by CoreOS. It adds key features to allow you to manage, update, and control clusters in production.' - }, - { - type: 2, - name: 'StackPointCloud', - logo: 'stackpoint', - link: 'https://stackpoint.io', - blurb: 'StackPointCloud builds Stackpoint.io, the universal control plane for Kubernetes Anywhere -- compose and build your own infrastructure as easily as a DigitalOcean droplet at any public cloud provider.' - }, { type: 0, - name: 'Sysdig Cloud', + name: 'Sysdig', logo: 'sys_dig', link: 'https://sysdig.com/blog/monitoring-kubernetes-with-sysdig-cloud/', - blurb: 'Container native monitoring with deep support for Kubernetes.' + blurb: 'Sysdig is the container intelligence company. Sysdig has created the only unified platform to deliver monitoring, security, and troubleshooting in a microservices-friendly architecture.' }, { type: 0, @@ -44,32 +30,11 @@ }, { type: 0, - name: 'Weave Works', + name: 'Weaveworks', logo: 'weave_works', link: ' https://weave.works/kubernetes', blurb: 'Weaveworks enables Developers and Dev/Ops teams to easily connect, deploy, secure, manage, and troubleshoot microservices in Kubernetes.' }, - { - type: 0, - name: 'Wercker', - logo: 'wercker', - link: 'http://www.wercker.com/integrations/kubernetes', - blurb: 'Wercker automates your build, test and deploy pipelines for launching containers and triggering rolling updates on your Kubernetes cluster. ' - }, - { - type: 0, - name: 'Rancher Labs', - logo: 'rancher-labs', - link: 'http://rancher.com/kubernetes/', - blurb: 'Rancher is an open-source, production-ready container management platform that makes it easy to deploy and manage Kubernetes.' - }, - { - type: 0, - name: 'Red Hat', - logo: 'redhat', - link: 'https://www.openshift.com/', - blurb: 'Leverage an enterprise Kubernetes platform to orchestrate complex, multi-container apps.' - }, { type: 0, name: 'Intel', @@ -77,13 +42,6 @@ link: 'https://tectonic.com/press/intel-coreos-collaborate-on-openstack-with-kubernetes.html', blurb: 'Powering the GIFEE (Google’s Infrastructure for Everyone Else), to run OpenStack deployments on Kubernetes.' }, - { - type: 0, - name: 'ElasticKube', - logo: 'elastickube', - link: 'https://www.ctl.io/elastickube-kubernetes/', - blurb: 'Self-service container management for Kubernetes.' - }, { type: 0, name: 'Platform9', @@ -119,13 +77,6 @@ link: 'http://blog.aquasec.com/security-best-practices-for-kubernetes-deployment', blurb: 'Deep, automated security for your containers running on Kubernetes.' }, - { - type: 2, - name: 'Canonical', - logo: 'canonical', - link: 'https://jujucharms.com/canonical-kubernetes/', - blurb: 'The Canonical Distribution of Kubernetes enables you to operate Kubernetes clusters on demand on any major public cloud and private infrastructure.' - }, { type: 0, name: 'Distelli', @@ -154,13 +105,6 @@ link: 'https://www.diamanti.com/products/', blurb: 'Diamanti deploys containers with guaranteed performance using Kubernetes in the first hyperconverged appliance purpose built for containerized applications.' }, - { - type: 0, - name: 'Apprenda', - logo: 'apprenda', - link: 'https://apprenda.com/kubernetes-support/', - blurb: 'Apprenda creates and supports modern, enterprise-ready application platforms for both cloud native and traditional application workloads.' - }, { type: 0, name: 'Aporeto', @@ -176,11 +120,11 @@ blurb: 'Giant Swarm provides fully-managed Kubernetes Clusters in your location of choice, so you can focus on your product.' }, { - type: 2, + type: 3, name: 'Mirantis', logo: 'mirantis', - link: 'https://content.mirantis.com/Containerizing-OpenStack-on-Kubernetes-Video-Landing-Page.html', - blurb: 'Mirantis builds and manages private clouds with open source software such as OpenStack, deployed as containers orchestrated by Kubernetes.' + link: 'https://www.mirantis.com/software/kubernetes/', + blurb: 'Mirantis - Mirantis Cloud Platform' }, { type: 0, @@ -189,18 +133,11 @@ link: 'https://kubernetic.com/', blurb: 'Kubernetic is a Kubernetes Desktop client that simplifies and democratizes cluster management for DevOps.' }, - { - type: 1, - name: 'Apprenda', - logo: 'apprenda', - link: 'https://apprenda.com/kubernetes-support/', - blurb: 'Apprenda offers flexible and wide range of support plans for pure play Kubernetes on your choice of infrastructure, cloud provider and operating system.' - }, { type: 1, name: 'Reactive Ops', logo: 'reactive_ops', - link: 'https://www.reactiveops.com/kubernetes/', + link: 'https://www.reactiveops.com/the-kubernetes-experts/', blurb: 'ReactiveOps has written automation on best practices for infrastructure as code on GCP & AWS using Kubernetes, helping you build and maintain a world-class infrastructure at a fraction of the price of an internal hire.' }, { @@ -238,13 +175,6 @@ link: 'http://docs.projectcalico.org/latest/getting-started/kubernetes/', blurb: 'Tigera builds high performance, policy driven, cloud native networking solutions for Kubernetes.' }, - { - type: 1, - name: 'Skippbox', - logo: 'skippbox', - link: 'http://www.skippbox.com/services/', - blurb: 'Skippbox brings its Kubernetes expertise to help companies embrace Kubernetes on their way to digital transformation. Skippbox offers both professional services and expert training.' - }, { type: 1, name: 'Harbur', @@ -333,8 +263,8 @@ type: 0, name: 'CA Technologies', logo: 'ca', - link: 'https://www.ca.com/us/products/application-deployment.html', - blurb: 'The RA CDE Kubernetes plugin enables an automated process for pushing changes to production by applying standard Kubernetes YAML files' + link: 'https://docops.ca.com/ca-continuous-delivery-director/integrations/en/plug-ins/kubernetes-plug-in', + blurb: 'The CA Continuous Delivery Director Kubernetes plugin orchestrates deployment of containerized applications within an end-to-end release pipeline.' }, { type: 0, @@ -359,7 +289,7 @@ }, { type: 1, - name: 'codecrux web technologies pvt ltd', + name: 'Codecrux web technologies pvt ltd', logo: 'codecrux', link: 'http://codecrux.com/kubernetes/', blurb: 'At CodeCrux we help your organization get the most out of Containers and Kubernetes, regardless of where you are in your journey' @@ -373,10 +303,10 @@ }, { type: 1, - name: 'StackOVerdrive.io', + name: 'StackOverdrive.io', logo: 'stackoverdrive', link: 'http://www.stackoverdrive.net/kubernetes-consulting/', - blurb: 'We are a devops consulting firm and we do alot of work with containers and Kunbernetes is one of our go to tools.' + blurb: 'StackOverdrive helps organizations of all sizes leverage Kubernetes for container based orchestration and management.' }, { type: 0, @@ -450,10 +380,10 @@ }, { type: 1, - name: 'EASYNUBE LTD', + name: 'EASYNUBE', logo: 'easynube', - link: 'https://www.carrefour.es/supermercado/?ic_source=portal-home&ic_medium=menu-links&ic_content=section-home', - blurb: 'Provide consultancy, architecture and implementation' + link: 'http://easynube.co.uk/devopsnube/', + blurb: 'EasyNube provide architecture, implementation, and manage scalable applications using Kubernetes and Openshift.' }, { type: 1, @@ -462,33 +392,19 @@ link: 'http://www.opcito.com/kubernetes/', blurb: 'Opcito is a software consultancy that uses Kubernetes to help organisations build, architect & deploy highly scalable applications.' }, - { - type: 2, - name: 'Huawei Technologies Co., Ltd.', - logo: 'huawei', - link: 'http://developer.huawei.com/ict/en/site-paas', - blurb: 'FusionStage is an enterprise-grade PaaS, the core of which is based on open source container technology including Kubernetes and Docker.' - }, { type: 0, - name: '{code} by Dell EMC', + name: 'code by Dell EMC', logo: 'codedellemc', link: 'https://blog.codedellemc.com', blurb: 'Respected as a thought leader in storage persistence for containerized applications. Contributed significant work to K8 and Ecosystem' }, - { - type: 0, - name: 'SUSE Llc.', - logo: 'suse', - link: 'https://www.suse.com/products/caas-platform/', - blurb: 'SUSE delivers Kubernetes as part of SUSE CaaS Platform and SUSE OpenStack Cloud, for enterprises that want truly open, open source solutions for cloud-native applications.' - }, { type: 0, name: 'Instana', logo: 'instana', link: 'https://www.instana.com/supported-technologies/', - blurb: 'Instana monitors the infrastructure, containers and services deployed on a Kubernetes cluster.' + blurb: 'Instana monitors performance of the applications, infrastructure, containers and services deployed on a Kubernetes cluster.' }, { type: 0, @@ -500,17 +416,10 @@ { type: 2, name: 'Treasure Data', - logo: 'treasure-data', + logo: 'treasuredata', link: 'https://fluentd.treasuredata.com/kubernetes-logging/', blurb: 'Fluentd Enterprise brings smart, secure logging to Kubernetes, and brings integrations with backends such as Splunk, Kafka, or AWS S3.' }, - { - type: 2, - name: 'IBM', - logo: 'IBM', - link: 'https://www.ibm.com/cloud-computing/bluemix/containers', - blurb: 'IBM Container Service is a managed k8s environment with built-in cluster security and isolation while leveraging services including Watson, IoT, Weather, etc.' - }, { type: 1, name: 'Kenzan', @@ -523,7 +432,7 @@ name: 'Kublr', logo: 'kublr', link: 'http://kublr.com', - blurb: 'Simplify your Kubernetes experience with a fully production-ready, enterprise-grade cluster management platform.' + blurb: 'Simplify and speed up the management of your containerized applications at scale.' }, { type: 0, @@ -581,13 +490,6 @@ link: 'https://www.contino.io/', blurb: 'We help enterprise organizations adopt DevOps, containers and cloud computing. Contino is a global consultancy that enables regulated organizations to accelerate innovation through the adoption of modern approaches to software delivery.' }, - { - type: 2, - name: 'Heptio', - logo: 'heptio', - link: 'http://heptio.com', - blurb: 'Heptio helps businesses of all sizes get closer to the vibrant Kubernetes community.' - }, { type: 2, name: 'Booz Allen Hamilton', @@ -595,16 +497,528 @@ link: 'https://www.boozallen.com/', blurb: 'Booz Allen partners with public and private sector clients to solve their most difficult challenges through a combination of consulting, analytics, mission operations, technology, systems delivery, cybersecurity, engineering, and innovation expertise.' }, + { + type: 1, + name: 'BigBinary', + logo: 'bigbinary', + link: 'http://blog.bigbinary.com/categories/Kubernetes', + blurb: 'Provider of Digital Solutions for federal and commercial clients, to include DevSecOps, cloud platforms, transformation strategy, cognitive solutions, and UX.' + }, { type: 0, - name: 'Applatix', - logo: 'applatix', - link: 'https://applatix.com/applatix-product/', - blurb: 'Applatix helps build and run containerized apps on public cloud using Docker and Kubernetes.' - } + name: 'CloudPerceptions', + logo: 'cloudperceptions', + link: 'https://www.meetup.com/Triangle-Kubernetes-Meetup/files/', + blurb: 'Container security solution for small-to-medium size enterprises who plan to run Kubernetes on shared infrastructure.' + }, + { + type: 1, + name: 'Creationline, Inc.', + logo: 'creationline', + link: 'https://www.creationline.com/ci', + blurb: 'Total solution for container based IT resource management.' + }, + { + type: 0, + name: 'DataCore Software', + logo: 'datacore', + link: 'https://www.datacore.com/solutions/virtualization/containerization', + blurb: 'DataCore provides highly-available, high-performance universal block storage for Kubernetes, radically improving the speed of deployment.' + }, + { + type: 0, + name: 'Elastifile', + logo: 'elastifile', + link: 'https://www.elastifile.com/stateful-containers', + blurb: 'Elastifile’s cross-cloud data fabric delivers elastically scalable, high performance, software-defined persistent storage for Kubernetes.' + }, + { + type: 0, + name: 'GitLab', + logo: 'gitlab', + link: 'https://about.gitlab.com/2016/11/14/idea-to-production/', + blurb: 'With GitLab and Kubernetes, you can deploy a complete CI/CD pipeline with multiple environments, automatic deployments, and automatic monitoring.' + }, + { + type: 0, + name: 'Gravitational, Inc.', + logo: 'gravitational', + link: 'https://gravitational.com/telekube/', + blurb: 'Telekube combines Kubernetes with Teleport, our modern SSH server, so operators can remotely manage a multitude of K8s application deployments.' + }, + { + type: 0, + name: 'Hitachi Data Systems', + logo: 'hitachi', + link: 'https://www.hds.com/en-us/products-solutions/application-solutions/unified-compute-platform-with-kubernetes-orchestration.html', + blurb: 'Build the Applications You Need to Drive Your Business - DEVELOP AND DEPLOY APPLICATIONS FASTER AND MORE RELIABLY.' + }, + { + type: 1, + name: 'Infosys Technologies', + logo: 'infosys', + link: 'https://www.infosys.com', + blurb: 'Monolithic to microservices on openshift is a offering that we are building as part of open source practice.' + }, + { + type: 0, + name: 'JFrog', + logo: 'jfrog', + link: 'https://www.jfrog.com/use-cases/12584/', + blurb: 'You can use Artifactory to store and manage all of your application’s container images and deploy to Kubernetes and setup a build, test, deploy pipeline using Jenkins and Artifactory. Once an image is ready to be rolled out, Artifactory can trigger a rolling-update deployment into a Kubernetes cluster without downtime – automatically!' + }, + { + type: 0, + name: 'Navops by Univa', + logo: 'navops', + link: 'https://www.navops.io', + blurb: 'Navops is a suite of products that enables enterprises to take full advantage of Kubernetes and provides the ability to quickly and efficiently run containers at scale.' + }, + { + type: 0, + name: 'NeuVector', + logo: 'neuvector', + link: 'http://neuvector.com/solutions-for-kubernetes-security/', + blurb: 'NeuVector delivers an application and network intelligent container network security solution integrated with and optimized for Kubernetes.' + }, + { + type: 1, + name: 'OpsZero', + logo: 'opszero', + link: 'https://www.opszero.com/kubernetes.html', + blurb: 'opsZero provides DevOps for Startups. We build and service your Kubernetes and Cloud Infrastructure to accelerate your release cycle.' + }, + { + type: 1, + name: 'Shiwaforce.com Ltd.', + logo: 'shiwaforce', + link: 'https://www.shiwaforce.com/en/', + blurb: 'Shiwaforce.com is the Agile Partner in Digital Transformation. Our solutions follow business changes quickly, easily and cost-effectively.' + }, + { + type: 1, + name: 'SoftServe', + logo: 'softserve', + link: 'https://www.softserveinc.com/en-us/blogs/kubernetes-travis-ci/', + blurb: 'SoftServe allows its clients to adopt modern application design patterns and benefit from fully integrated, highly available, cost effective Kubernetes clusters at any scale.' + }, + { + type: 1, + name: 'Solinea', + logo: 'solinea', + link: 'https://www.solinea.com/cloud-consulting-services/container-microservices-offerings', + blurb: 'Solinea is a digital transformation consultancy that enables businesses to build innovative solutions by adopting cloud native computing.' + }, + { + type: 1, + name: 'Sphere Software, LLC', + logo: 'spheresoftware', + link: 'https://sphereinc.com/kubernetes/', + blurb: 'The Sphere Software team of experts allows customers to architect and implement scalable applications using Kubernetes in Google Cloud, AWS, and Azure.' + }, + { + type: 1, + name: 'Altoros', + logo: 'altoros', + link: 'https://www.altoros.com/container-orchestration-tools-enablement.html', + blurb: 'Deployment and configuration of Kubernetes, Optimization of existing solutions, training for developers on using Kubernetes, support.' + }, + { + type: 0, + name: 'Cloudbase Solutions', + logo: 'cloudbase', + link: 'https://cloudbase.it/kubernetes', + blurb: 'Cloudbase Solutions provides Kubernetes cross-cloud interoperability for Windows and Linux deployments based on open source technologies.' + }, + { + type: 0, + name: 'Codefresh', + logo: 'codefresh', + link: 'https://codefresh.io/kubernetes-deploy/', + blurb: 'Codefresh is a complete tool chain for delivering containers to Kubernetes.' + }, + { + type: 0, + name: 'NetApp', + logo: 'netapp', + link: 'http://netapp.io/2016/12/23/introducing-trident-dynamic-persistent-volume-provisioner-kubernetes/', + blurb: 'Dynamic provisioning and persistent storage support.' + }, + { + type: 0, + name: 'OpenEBS', + logo: 'OpenEBS', + link: 'https://openebs.io/', + blurb: 'OpenEBS is containerized storage for containers integrated tightly into Kubernetes and based on distributed block storage and containerization of storage control. OpenEBS derives intent from K8s and other YAML or JSON such as per container QoS SLAs, tiering and replica policies, and more. OpenEBS is EBS API compliant.' + }, + { + type: 3, + name: 'Google Kubernetes Engine', + logo: 'gcp', + link: 'https://cloud.google.com/kubernetes-engine/', + blurb: 'Google - Google Kubernetes Engine' + }, + { + type: 3, + name: 'Apprenda', + logo: 'apprenda', + link: 'https://apprenda.com/kismatic/', + blurb: 'Apprenda - Kismatic Enterprise Toolkit (KET)' + }, + { + type: 3, + name: 'Red Hat', + logo: 'redhat', + link: 'https://www.openshift.com', + blurb: 'Red Hat - OpenShift Online and OpenShift Container Platform' + }, + { + type: 3, + name: 'Rancher', + logo: 'rancher', + link: 'http://rancher.com/kubernetes/', + blurb: 'Rancher Inc. - Rancher Kubernetes' + }, + { + type: 3, + name: 'Canonical', + logo: 'canonical', + link: 'https://www.ubuntu.com/kubernetes', + blurb: 'Canonical Ltd. - Canonical Distribution of Kubernetes' + }, + { + type: 3, + name: 'Cisco', + logo: 'cisco', + link: 'https://www.cisco.com', + blurb: 'Cisco Systems - Cisco Container Platform' + }, + { + type: 3, + name: 'Cloud Foundry', + logo: 'cff', + link: 'https://www.cloudfoundry.org/container-runtime/', + blurb: 'Cloud Foundry - Cloud Foundry Container Runtime' + }, + { + type: 3, + name: 'IBM', + logo: 'ibm', + link: 'https://www.ibm.com/cloud/container-service', + blurb: 'IBM - IBM Cloud Container Service' + }, + { + type: 3, + name: 'Samsung', + logo: 'samsung_sds', + link: 'https://github.com/samsung-cnct/kraken', + blurb: 'Samsung SDS - Kraken' + }, + { + type: 3, + name: 'IBM', + logo: 'ibm', + link: 'https://www.ibm.com/cloud-computing/products/ibm-cloud-private/', + blurb: 'IBM - IBM Cloud Private' + }, + { + type: 3, + name: 'Heptio', + logo: 'heptio', + link: 'https://aws.amazon.com/quickstart/architecture/heptio-kubernetes', + blurb: 'Heptio - AWS-Quickstart' + }, + { + type: 3, + name: 'StackPointCloud', + logo: 'stackpoint', + link: 'https://stackpoint.io', + blurb: 'StackPointCloud - StackPointCloud' + }, + { + type: 3, + name: 'Caicloud', + logo: 'caicloud', + link: 'https://caicloud.io/products/compass', + blurb: 'Caicloud - Compass' + }, + { + type: 2, + name: 'Caicloud', + logo: 'caicloud', + link: 'https://caicloud.io/', + blurb: 'Founded by ex-Googlers,and early Kubernetes contributors, Caicloud leverages Kubernetes to provide container products which have successfully served Fortune 500 enterprises, and further utilizes Kubernetes as a vehicle to deliver ultra-speed deep learning experience.' + }, + { + type: 3, + name: 'Alibaba', + logo: 'alibaba', + link: 'https://www.aliyun.com/product/containerservice?spm=5176.8142029.388261.219.3836dbccRpJ5e9', + blurb: 'Alibaba Cloud - Alibaba Cloud Container Service' + }, + { + type: 3, + name: 'Tencent', + logo: 'tencent', + link: 'https://cloud.tencent.com/product/ccs?lang=en', + blurb: 'Tencent Cloud - Tencent Cloud Container Service' + }, + { + type: 3, + name: 'Huawei', + logo: 'huawei', + link: 'http://www.huaweicloud.com/product/cce.html', + blurb: 'Huawei - Huawei Cloud Container Engine' + }, + { + type: 3, + name: 'Google', + logo: 'gcp', + link: 'https://github.com/kubernetes/kubernetes/tree/master/cluster', + blurb: 'Google - kube-up.sh on Google Compute Engine' + }, + { + type: 3, + name: 'Poseidon', + logo: 'poseidon', + link: 'https://typhoon.psdn.io/', + blurb: 'Poseidon - Typhoon' + }, + { + type: 3, + name: 'Netease', + logo: 'netease', + link: 'https://www.163yun.com/product/container-service-dedicated', + blurb: 'Netease - Netease Container Service Dedicated' + }, + { + type: 3, + name: 'Loodse', + logo: 'loodse', + link: 'https://loodse.com', + blurb: 'Loodse - Kubermatic Container Engine' + }, + { + type: 3, + name: 'Microsoft', + logo: 'microsoft', + link: 'https://github.com/Azure/acs-engine', + blurb: 'Microsoft - Azure acs-engine' + }, + { + type: 3, + name: 'Microsoft', + logo: 'microsoft', + link: 'https://docs.microsoft.com/en-us/azure/aks/', + blurb: 'Microsoft - Azure Container Service AKS' + }, + { + type: 3, + name: 'Oracle', + logo: 'oracle', + link: 'http://www.wercker.com/product', + blurb: 'Oracle - Oracle Container Engine' + }, + { + type: 3, + name: 'Oracle', + logo: 'oracle', + link: 'https://github.com/oracle/terraform-kubernetes-installer', + blurb: 'Oracle - Oracle Terraform Kubernetes Installer' + }, + { + type: 3, + name: 'Mesosphere', + logo: 'mesosphere', + link: 'https://mesosphere.com/kubernetes/', + blurb: 'Mesosphere - Kubernetes on DC/OS' + }, + { + type: 3, + name: 'Appscode', + logo: 'appscode', + link: 'https://appscode.com/products/cloud-deployment/', + blurb: 'Appscode - Pharmer' + }, + { + type: 3, + name: 'SAP', + logo: 'sap', + link: 'https://cloudplatform.sap.com/index.html', + blurb: 'SAP - Cloud Platform - Gardener (not yet released)' + }, + { + type: 3, + name: 'Oracle', + logo: 'oracle', + link: 'https://www.oracle.com/linux/index.html', + blurb: 'Oracle - Oracle Linux Container Services for use with Kubernetes' + }, + { + type: 3, + name: 'CoreOS', + logo: 'coreos', + link: 'https://github.com/kubernetes-incubator/bootkube', + blurb: 'CoreOS - bootkube' + }, + { + type: 3, + name: 'Weaveworks', + logo: 'weave_works', + link: 'https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/', + blurb: 'Weaveworks - kubeadm' + }, + { + type: 3, + name: 'Wise2c', + logo: 'wise2c', + link: 'http://www.wise2c.com/solution', + blurb: 'Wise2C Technology - WiseCloud' + }, + { + type: 3, + name: 'Docker', + logo: 'docker', + link: 'https://www.docker.com/enterprise-edition', + blurb: 'Docker - Docker Enterprise Edition' + }, + { + type: 3, + name: 'Daocloud', + logo: 'daocloud', + link: 'http://www.daocloud.io/dce', + blurb: 'DaoCloud - DaoCloud Enterprise' + }, + { + type: 3, + name: 'SUSE', + logo: 'suse', + link: 'https://www.suse.com/products/caas-platform/', + blurb: 'SUSE - SUSE CaaS (Container as a Service) Platform' + }, + { + type: 3, + name: 'Pivotal', + logo: 'pivotal', + link: 'https://cloud.vmware.com/pivotal-container-service', + blurb: 'Pivotal/VMware - Pivotal Container Service (PKS)' + }, + { + type: 3, + name: 'VMware', + logo: 'vmware', + link: 'https://cloud.vmware.com/pivotal-container-service', + blurb: 'Pivotal/VMware - Pivotal Container Service (PKS)' + }, + { + type: 3, + name: 'CoreOS', + logo: 'coreos', + link: 'https://coreos.com/tectonic/', + blurb: 'CoreOS - Tectonic' + }, + { + type: 0, + name: 'GoPaddle', + logo: 'gopaddle', + link: 'https://gopaddle.io', + blurb: 'goPaddle is a DevOps platform for Kubernetes developers. It simplifies the Kubernetes Service creation and maintenance through source to image conversion, build & version management, team management, access controls and audit logs, single click provision of Kubernetes Clusters across multiple clouds from a single console.' + }, + { + type: 0, + name: 'Vexxhost', + logo: 'vexxhost', + link: 'https://vexxhost.com/public-cloud/container-services/kubernetes/', + blurb: 'VEXXHOST offers a high-performance container management service powered by Kubernetes and OpenStack Magnum.' + }, + { + type: 1, + name: 'Component Soft', + logo: 'componentsoft', + link: 'https://www.componentsoft.eu/?p=3925', + blurb: 'Component Soft offers training, consultation and support around open cloud technologies like Kubernetes, Docker, Openstack and Ceph.' + }, + { + type: 0, + name: 'Datera', + logo: 'datera', + link: 'http://www.datera.io/kubernetes/', + blurb: 'Datera delivers high performance, self-managing elastic block storage with self-service provisioning for deploying Kubernetes at scale.' + }, + { + type: 0, + name: 'Containership', + logo: 'containership', + link: 'https://containership.io/', + blurb: 'Containership is a cloud agnostic managed kubernetes offering that supports automatic provisioning on over 14 cloud providers.' + }, + { + type: 0, + name: 'Pure Storage', + logo: 'pure_storage', + link: 'https://hub.docker.com/r/purestorage/k8s/', + blurb: 'Our flexvol driver and dynamic provisioner allow FlashArray/Flashblade storage devices to be consumed as first class persistent storage from within Kuberentes.' + }, + { + type: 0, + name: 'Elastisys', + logo: 'elastisys', + link: 'https://elastisys.com/kubernetes/', + blurb: 'Predictive autoscaling - detects recurring workload variations, irregular traffic spikes, and everything in between. Runs K8s in any public or private cloud.' + }, + { + type: 0, + name: 'Portworx', + logo: 'portworx', + link: 'https://docs.portworx.com/scheduler/kubernetes/install.html', + blurb: 'With Portworx, you can manage any database or stateful service on any infrastructure using Kubernetes. You get a single data management layer for all of your stateful services, no matter where they run.' + }, + { + type: 1, + name: 'Object Computing, Inc.', + logo: 'objectcomputing', + link: 'https://objectcomputing.com/services/software-engineering/devops/kubernetes-services', + blurb: 'Our portfolio of DevOps consulting services includes Kubernetes support, development, and training.' + }, + { + type: 1, + name: 'Isotoma', + logo: 'isotoma', + link: 'https://www.isotoma.com/blog/2017/10/24/containerisation-tips-for-using-kubernetes-with-aws/', + blurb: 'Based in the North of England, Amazon partners who are delivering Kubernetes solutions on AWS for replatforming and native development.' + }, + { + type: 1, + name: 'Servian', + logo: 'servian', + link: 'https://www.servian.com/cloud-and-technology/', + blurb: 'Based in Australia, Servian provides advisory, consulting and managed services to support both application and data centric kubernetes use cases.' + }, + { + type: 1, + name: 'Redzara', + logo: 'redzara', + link: 'http://redzara.com/cloud-service', + blurb: 'Redzara has wide and in-depth experience in Cloud automation, now taking one giant step by providing container service offering and services to our customers.' + }, + { + type: 0, + name: 'Dataspine', + logo: 'dataspine', + link: 'http://dataspine.xyz/', + blurb: 'Dataspine is building a secure, elastic and serverless deployment platform for production ML/AI workloads on top of k8s.' + }, + { + type: 0, + name: 'Logdna', + logo: 'logdna', + link: 'https://logdna.com/kubernetes', + blurb: 'Pinpoint production issues instantly with LogDNA, the best logging platform you will ever use. Get started with only 2 kubectl commands.' + } ] var kcspContainer = document.getElementById('kcspContainer') + var distContainer = document.getElementById('distContainer') var isvContainer = document.getElementById('isvContainer') var servContainer = document.getElementById('servContainer') @@ -644,7 +1058,9 @@ container = servContainer; } else if (obj.type === 2) { container = kcspContainer; - } + } else if (obj.type === 3) { + container = distContainer; + } container.appendChild(box) }) diff --git a/_includes/partner-style.css b/_includes/partner-style.css index 191d6b340b..9ab291dd9d 100644 --- a/_includes/partner-style.css +++ b/_includes/partner-style.css @@ -5,6 +5,12 @@ margin-bottom: 2em; } +.kcsp_section { + clear: both; + padding: 0px; + margin-bottom: 2em; +} + /* COLUMN SETUP */ .col { display: block; @@ -28,28 +34,54 @@ zoom:1; /* For IE 6/7 */ } -/* GRID OF THREE */ -.span_3_of_3 { - width: 32.2%; +/* GRID OF FOUR */ +.span_4_of_4 { + width: 23%; background-color: #f9f9f9; padding: 20px; } -.span_2_of_3 { - width: 32.2%; +.span_3_of_4 { + width: 23%; background-color: #f9f9f9; padding: 20px; } -.span_1_of_3 { - width: 32.2%; +.span_2_of_4 { + width: 23%; background-color: #f9f9f9; padding: 20px; } +.span_1_of_4 { + width: 23%; + background-color: #f9f9f9; + padding: 20px; +} + +.col-container { + display: table; /* Make the container element behave like a table */ + width: 100%; /* Set full-width to expand the whole page */ + padding-bottom: 80px; +} + +.col-nav { + display: table-cell; /* Make elements inside the container behave like table cells */ + width: 25%; + background-color: #f9f9f9; + padding: 20px; + border: 5px solid white; +} /* GO FULL WIDTH AT LESS THAN 480 PIXELS */ @media only screen and (max-width: 480px) { .col { margin: 1% 0 1% 0%;} - .span_3_of_3, .span_2_of_3, .span_1_of_3 { width: 100%; } + .span_4_of_4, .span_3_of_4, .span_2_of_4, .span_1_of_4 { width: 100%; } +} + +@media only screen and (max-width: 650px) { + .col-nav { + display: block; + width: 100%; + } } .button{ @@ -69,7 +101,7 @@ h5 { background-color: #f9f9f9; } -#kcspContainer, #isvContainer, #servContainer { +#distContainer, #kcspContainer, #isvContainer, #servContainer { position: relative; width: 100%; display: flex; @@ -85,6 +117,10 @@ h5 { margin-bottom: 80px; } +#distContainer { + margin-bottom: 80px; +} + .partner-box { position: relative; width: 47%; @@ -94,7 +130,7 @@ h5 { padding: 20px; flex: 1; display: flex; - justify-content: space-between; + justify-content: left; align-items: flex-start; } @@ -122,7 +158,7 @@ h5 { } @media screen and (max-width: 568px) { - #kcspContainer, #isvContainer, #servContainer { + #distContainter, #kcspContainer, #isvContainer, #servContainer { justify-content: center; } @@ -140,7 +176,7 @@ h5 { } @media screen and (max-width: 568px) { - #kcspContainer, #isvContainer, #servContainer { + #distContainer, #kcspContainer, #isvContainer, #servContainer { justify-content: center; } diff --git a/_includes/task-tutorial-prereqs.md b/_includes/task-tutorial-prereqs.md index 6f1407fe45..46ae4993a1 100644 --- a/_includes/task-tutorial-prereqs.md +++ b/_includes/task-tutorial-prereqs.md @@ -6,3 +6,9 @@ or you can use one of these Kubernetes playgrounds: * [Katacoda](https://www.katacoda.com/courses/kubernetes/playground) * [Play with Kubernetes](http://labs.play-with-k8s.com/) + +{% if page.min-kubernetes-server-version == page.version %} +Your Kubernetes server must be version {{page.min-kubernetes-server-version}}. +{% elsif page.min-kubernetes-server-version %} +Your Kubernetes server must be version {{page.min-kubernetes-server-version}} or later. +{% endif %} To check the version, enter `kubectl version`. diff --git a/_includes/templates/glossary/README.md b/_includes/templates/glossary/README.md index 9d3d49d48e..18973e9926 100644 --- a/_includes/templates/glossary/README.md +++ b/_includes/templates/glossary/README.md @@ -2,17 +2,19 @@ To write a glossary snippet, start with a copy of the template, [`/_data/glossary/_example.yml`](/_data/glossary/_example.yml). Make sure to provide (or omit) values for the following fields: -* (Required) `id`. +* (Required) `id` * This field must match the name of the glossary file itself (without the `*.yml` extension). It is *not* intended to be displayed to users, and is only used programmatically. -* (Required) `name`. +* (Required) `name` * The name of the term. -* (Required) `tags`. - * Must be one of the tags listed in kubernetes.github.io/_data/canonical-terms-tags.yml. -* (Required) `short description`. +* (Required) `tags` + * Must be one of the tags listed in the [tags directory in the website repository](https://github.com/kubernetes/website/tree/master/_data/canonical-tags). +* (Required) `short description` * Make sure to replace the instructional text in the template with your content. -* (Optional) `formerly` and `related`. - * If you do not provide these values, remove the fields. -* (Optional) `long description`. +* (Optional) `aka` + * These synonyms do not need to be glossary terms themselves (if they are deprecated), and can include spaces. +* (Optional) `related` + * These should be the `id`s (not the `names`) of related glossary terms. +* (Optional) `long description` * If you do not provide a long description, remove the field -- that is, the complete key-value pair. The `_example.yml` template also contains basic information about how to write your snippet. For additional guidance, continue reading this readme. diff --git a/_includes/templates/glossary/snippet.md b/_includes/templates/glossary/snippet.md index 4ceea6c549..71d59109e1 100644 --- a/_includes/templates/glossary/snippet.md +++ b/_includes/templates/glossary/snippet.md @@ -1,8 +1,10 @@ -{% assign term_data = site.data.glossary.[include.term] %} +{% assign term_data = site.data.glossary.[include.term_id] %} + +{% if include.length == "all" or include.length == "short" %} {% if term_data.short-description %} -{{ term_data.short-description | markdownify }} +{{ term_data.short-description | liquify | markdownify }} {% else %} @@ -10,11 +12,13 @@ {% endif %} -{% if include.length == "long" %} +{% endif %} + +{% if include.length == "all" or include.length == "long" %} {% if term_data.long-description %} -{{ term_data.long-description | markdownify }} +{{ term_data.long-description | liquify | markdownify }} {% else %} diff --git a/_layouts/docwithnav.html b/_layouts/docwithnav.html index b57af76f74..924d0c3822 100755 --- a/_layouts/docwithnav.html +++ b/_layouts/docwithnav.html @@ -55,7 +55,8 @@ {{ content }}

Analytics

- {% if page.url != "/404.html" and page.url != "/docs/search/" %} + {% if page.url != "/404.html" and page.url != "/docs/search/"%} + {% unless page.no_issue %} Create an Issue - Edit this Page + {% endunless %} + {% unless page.noedit %} + Edit this Page + {% endunless %} {% endif %}
diff --git a/_plugins/README.md b/_plugins/README.md new file mode 100644 index 0000000000..d4a192840e --- /dev/null +++ b/_plugins/README.md @@ -0,0 +1,75 @@ +# Custom Jekyll Plugins + +This directory contains `*.rb` files that extend the original Jekyll classes and provide custom formatting for the docs site: + +### `glossary_tags.rb` + +A full list of glossary terms is available on the [Standardized Glossary](https://kubernetes.io/docs/reference/glossary/?fundamental=true) page. For further information about term schemas, see the [README](../_includes/templates/glossary/README.md) and the provided [`_example.yml`](../_data/glossary/_example.yml). + +*NOTE: The "tags" referenced here are Liquid tags like `{% include %}`, **not** the glossary canonical tags that are used to categorize terms.* + +#### (1) `glossary_definition` tag + +This renders the definition of the glossary term inside a `
`, preserving Markdown formatting where possible. It uses the [`snippet.md` template](../_includes/templates/glossary/snippet.md). + +**Usage:** + +``` +{% glossary_definition term_id="helm-chart" length="all" %} +``` + +**Parameters:** + + +| Name | Default | Description | +| --- | --- | --- | +| `term_id` | N/A (Required) | The `id` of the glossary term whose definition will be used. (This `id` is the same as the filename of the term, i.e. `_data/glossary/.yml`.) | +| `length` | "short" | Specifies which term definition should be used ("short" for the `short-definition`, "long" for `long-description`, "all" when both should be included). | + +#### (2) `glossary_tooltip` tag + +This renders the glossary term with a tooltip--when the term is moused over by the user, its definition is displayed above. + +**Usage:** + +``` +{% glossary_tooltip text="Helm Charts" term_id="helm-chart" %} +``` + +This renders the following: + +![glossary-tooltip](../images/metadocs/jekyll-tags-glossary-tooltip.png) + +**Parameters:** + + +| Name | Default | Description | +| --- | --- | --- | +| `text` | the `name` of the glossary term | The text that the user will hover over to display the glossary definition. **You should include this if using the tooltip inside of a glossary term's YAML short-definition.** | +| `term_id` | N/A (Required) | The `id` of the associated glossary term. (This `id` is the same as the filename of the term, i.e. `_data/glossary/.yml`.) | + +#### (3) `glossary_injector` tag + +This takes the definition of the term specified by the `term_id` and uses it to populate the contents of another HTML element specified by `placeholder_id`. + +**Usage:** + +``` +{% glossary_injector term_id="kubectl" placeholder_id="def-container" length="short" %} +``` + +This renders the following: + +![glossary-injector](../images/metadocs/jekyll-tags-glossary-injector.gif) + +*NOTE: Neither the placeholder nor the term's styling/CSS is determined by this Jekyll tag. You will need to specify this yourself in your Markdown/HTML files, i.e. by assigning a custom class.* + +**Parameters:** + + +| Name | Default | Description | +| --- | --- | --- | +| `text` | the `name` of the glossary term | The text that the user will hover over to display the glossary definition. | +| `term_id` | N/A (Required) | The `id` of the glossary term whose definition will be used. (This `id` is the same as the filename of the term, i.e. `_data/glossary/.yml`.) | +| `placeholder_id` | N/A (Required) | The `id` of the HTML element whose contents will be populated with the definition of `term_id` | +| `length` | "short" | Specifies which term definition should be used ("short" for the `short-definition`, "long" for `long-description`, "all" when both should be included). | diff --git a/_plugins/glossary_tags.rb b/_plugins/glossary_tags.rb new file mode 100644 index 0000000000..c59ccf0e9f --- /dev/null +++ b/_plugins/glossary_tags.rb @@ -0,0 +1,122 @@ +# See /_plugins/README.md for full documentation of these custom Jekyll tags +module Jekyll + module GlossaryTags + # Base class for tags (not to be instantiated) + class Base < Liquid::Tag + VALID_PARAM_NAMES = [] + LENGTH_SHORT = "short" + LENGTH_LONG = "long" + SNIPPET_TEMPLATE = "templates/glossary/snippet.md" + + def initialize(tag_name, markup, options) + super + @args = {} + @markup.scan(/([\S]+=['"][^=]+["'])+/).each do |arg| + key, val = arg.first.split("=") + key = key.to_sym + next unless val + if self.class::VALID_PARAM_NAMES.include?(key) + @args[key] = val.gsub("\"", "") + end + end + end + + # "abstract" method + def render(context) + raise NotImplementedError + end + + protected + + def glossary_term_info(context) + global_glossary_hash = context.registers[:site].data["glossary"] + unless global_glossary_hash.keys.to_set.include?(@args[:term_id]) + raise StandardError, + "#{@args[:term_id]} is not a valid glossary term id. Please " \ + "see ./_data/glossary/* for the complete list." + end + global_glossary_hash[@args[:term_id]] + end + + def include_snippet(context) + @args[:length] ||= LENGTH_SHORT + clean_markup = @args.keys.map { |k| "#{k}=\"#{@args[k]}\"" }.join(" ") + + Jekyll::Tags::IncludeTag.parse( + "include", + "#{SNIPPET_TEMPLATE} #{clean_markup}", + nil, + @parse_context + ).render(context) + end + end + + # Tag for displaying a glossary term's definition inline + class Definition < Base + VALID_PARAM_NAMES = [ + :term_id, + :length + ].freeze + + def render(context) + include_snippet(context) + end + end + + # Tag to display a tooltip for a specific glossary term + class Tooltip < Base + VALID_PARAM_NAMES = [ + :text, + :term_id + ].freeze + GLOSSARY_HOME = "/docs/reference/glossary/?all=true" + NESTED_TOOLTIPS = /{% (.*?text="(.*?)".*?) %}/ + NESTED_MARKDOWN_LINKS = /(\[(.*?)\]\(.*?\))/ + + def render(context) + term_info = glossary_term_info(context) + external_link = + term_info["full-link"] || + "#{GLOSSARY_HOME}#term-#{term_info["id"]}" + tooltip = term_info["short-description"]. + gsub(NESTED_TOOLTIPS, '\2'). + gsub(NESTED_MARKDOWN_LINKS, '\2'). + strip + + "" \ + "#{@args[:text] || term_info["name"]}" \ + "" \ + "#{tooltip}" \ + "" \ + "" + end + end + + # Tag to inject a glossary term definition into another HTML element + class Injector < Base + VALID_PARAM_NAMES = [ + :text, + :term_id, + :placeholder_id, + :length + ].freeze + RENDERED_DESCRIPTION_BLOCK = /.*

(.+)<\/p>.*/ + + def render(context) + term_info = glossary_term_info(context) + description = RENDERED_DESCRIPTION_BLOCK.match(include_snippet(context))[1] + + "" \ + "#{@args[:text] || term_info["name"]}" \ + "" \ + "#{description}" \ + "" \ + "" + end + end + end +end + +Liquid::Template.register_tag('glossary_definition', Jekyll::GlossaryTags::Definition) +Liquid::Template.register_tag('glossary_tooltip', Jekyll::GlossaryTags::Tooltip) +Liquid::Template.register_tag('glossary_injector', Jekyll::GlossaryTags::Injector) diff --git a/_plugins/liquify_filter.rb b/_plugins/liquify_filter.rb new file mode 100644 index 0000000000..8c31915699 --- /dev/null +++ b/_plugins/liquify_filter.rb @@ -0,0 +1,10 @@ +# Filter to force liquid parsing +module Jekyll + module LiquifyFilter + def liquify(input) + Liquid::Template.parse(input).render(@context) + end + end +end + +Liquid::Template.register_filter(Jekyll::LiquifyFilter) diff --git a/_redirects b/_redirects index 3375a89b45..0e59d16e27 100644 --- a/_redirects +++ b/_redirects @@ -4,383 +4,433 @@ # test at https://play.netlify.com/redirects # ############################################### -############# -TEMPORARY - -/docs/resources-reference/v1.8/* /docs/api-reference/v1.8/:splat 301 - -/docs/tasks/administer-cluster/running-cloud-controller.md /docs/tasks/administer-cluster/running-cloud-controller/ 301 -/docs/concepts/workloads/controllers/statefulset.md /docs/concepts/workloads/controllers/statefulset/ 301 -/docs/admin/extensible-admission-controllers.md /docs/admin/extensible-admission-controllers/ 301 -/docs/tasks/administer-cluster/developing-cloud-controller-manager.md /docs/tasks/administer-cluster/developing-cloud-controller-manager/ 301 -/docs/concepts/workloads/controllers/job/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301 -/docs/federation/api-reference/federation/v1beta1/operations.html /docs/federation/api-reference/federation/v1beta1/operations/ 301 -/docs/federation/api-reference/federation/v1beta1/definitions.html /docs/federation/api-reference/federation/v1beta1/definitions/ 301 -/docs/federation/api-reference/extensions/v1beta1/operations.html /docs/federation/api-reference/extensions/v1beta1/operations/ 301 -/docs/federation/api-reference/v1/operations.html /docs/federation/api-reference/v1/operations/ 301 -/docs/federation/api-reference/extensions/v1beta1/definitions.html /docs/federation/api-reference/extensions/v1beta1/definitions/ 301 -/docs/federation/api-reference/v1/definitions.html /docs/federation/api-reference/v1/definitions/ 301 -/docs/tasks/administer-cluster/certificate-rotation/ /docs/admin/kubelet-tls-bootstrapping/ 301 -/docs/tasks/administer-cluster/running-cloud-controller.md /docs/tasks/administer-cluster/running-cloud-controller/ 301 -/docs/concepts/workloads/controllers/statefulset.md /docs/concepts/workloads/controllers/statefulset/ 301 -/docs/concepts/workloads/controllers/deployment.md /docs/concepts/workloads/controllers/deployment/ 301 -/docs/tasks/administer-cluster/out-of-resource/memory-available.sh /docs/concepts/cluster-administration/out-of-resource/memory-available.sh 301 - -############# - /api-ref/ https://github.com/kubernetes/kubernetes/milestones/ 301 -/concepts/containers/container-lifecycle-hooks /docs/concepts/containers/container-lifecycle-hooks 301 -/docs/ /docs/home/ 301 -/docs/abstractions/controllers/petset /docs/concepts/workloads/controllers/statefulset 301 -/docs/admin/ /docs/concepts/cluster-administration/cluster-administration-overview 301 +/concepts/containers/container-lifecycle-hooks/ /docs/concepts/containers/container-lifecycle-hooks/ 301 +/docs/ /docs/home/ 301 +/docs/abstractions/controllers/petset/ /docs/concepts/workloads/controllers/statefulset/ 301 + +/docs/admin/ /docs/concepts/cluster-administration/cluster-administration-overview/ 301 /docs/admin/add-ons/ /docs/concepts/cluster-administration/addons/ 301 -/docs/admin/addons /docs/concepts/cluster-administration/addons 301 -/docs/admin/apparmor /docs/tutorials/clusters/apparmor 301 -/docs/admin/audit /docs/tasks/debug-application-cluster/audit 301 +/docs/admin/addons/ /docs/concepts/cluster-administration/addons/ 301 +/docs/admin/apparmor/ /docs/tutorials/clusters/apparmor/ 301 +/docs/admin/audit/ /docs/tasks/debug-application-cluster/audit/ 301 /docs/admin/authorization/rbac.md /docs/admin/authorization/rbac/ 301 -/docs/admin/cluster-components /docs/concepts/overview/components 301 -/docs/admin/cluster-management /docs/tasks/administer-cluster/cluster-management 301 -/docs/admin/cluster-troubleshooting /docs/tasks/debug-application-cluster/debug-cluster 301 -/docs/admin/daemons /docs/concepts/workloads/controllers/daemonset 301 -/docs/admin/disruptions /docs/concepts/workloads/pods/disruptions 301 -/docs/admin/dns /docs/concepts/services-networking/dns-pod-service 301 -/docs/admin/etcd /docs/tasks/administer-cluster/configure-upgrade-etcd 301 -/docs/admin/etcd_upgrade /docs/tasks/administer-cluster/configure-upgrade-etcd 301 -/docs/admin/federation/kubefed /docs/tasks/federation/set-up-cluster-federation-kubefed 301 +/docs/admin/cluster-components/ /docs/concepts/overview/components/ 301 +/docs/admin/cluster-management/ /docs/tasks/administer-cluster/cluster-management/ 301 +/docs/admin/cluster-troubleshooting/ /docs/tasks/debug-application-cluster/debug-cluster/ 301 +/docs/admin/daemons/ /docs/concepts/workloads/controllers/daemonset/ 301 +/docs/admin/disruptions/ /docs/concepts/workloads/pods/disruptions/ 301 +/docs/admin/dns/ /docs/concepts/services-networking/dns-pod-service/ 301 +/docs/admin/etcd/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301 +/docs/admin/etcd_upgrade/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301 +/docs/admin/extensible-admission-controllers.md /docs/admin/extensible-admission-controllers/ 301 +/docs/admin/federation/kubefed/ /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301 /docs/admin/federation/kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301 -/docs/admin/garbage-collection /docs/concepts/cluster-administration/kubelet-garbage-collection 301 -/docs/admin/ha-master-gce /docs/tasks/administer-cluster/highly-available-master 301 -/docs/admin/ha-master-gce.md /docs/tasks/administer-cluster/highly-available-master/ 301 -/docs/admin/kubeadm-upgrade-1-7 /docs/tasks/administer-cluster/kubeadm-upgrade-1-7 301 -/docs/admin/limitrange /docs/tasks/administer-cluster/cpu-memory-limit/ 301 +/docs/admin/garbage-collection/ /docs/concepts/cluster-administration/kubelet-garbage-collection/ 301 +/docs/admin/ha-master-gce/ /docs/tasks/administer-cluster/highly-available-master/ 301 +/docs/admin/ha-master-gce.md/ /docs/tasks/administer-cluster/highly-available-master/ 301 +/docs/admin/kubeadm-upgrade-1-7/ /docs/tasks/administer-cluster/kubeadm-upgrade-1-7/ 301 +/docs/admin/limitrange/ /docs/tasks/administer-cluster/cpu-memory-limit/ 301 /docs/admin/limitrange/Limits/ /docs/tasks/administer-cluster/limit-storage-consumption/#limitrange-to-limit-requests-for-storage/ 301 -/docs/admin/master-node-communication /docs/concepts/architecture/master-node-communication 301 -/docs/admin/multi-cluster /docs/concepts/cluster-administration/federation 301 -/docs/admin/multiple-schedulers /docs/tasks/administer-cluster/configure-multiple-schedulers 301 -/docs/admin/namespaces /docs/tasks/administer-cluster/namespaces 301 -/docs/admin/namespaces/walkthrough /docs/tasks/administer-cluster/namespaces-walkthrough 301 -/docs/admin/network-plugins /docs/concepts/cluster-administration/network-plugins 301 -/docs/admin/networking /docs/concepts/cluster-administration/networking 301 -/docs/admin/node /docs/concepts/architecture/nodes 301 -/docs/admin/node-allocatable /docs/tasks/administer-cluster/reserve-compute-resources 301 +/docs/admin/master-node-communication/ /docs/concepts/architecture/master-node-communication/ 301 +/docs/admin/multi-cluster/ /docs/concepts/cluster-administration/federation/ 301 +/docs/admin/multiple-schedulers/ /docs/tasks/administer-cluster/configure-multiple-schedulers/ 301 +/docs/admin/namespaces/ /docs/tasks/administer-cluster/namespaces/ 301 +/docs/admin/namespaces/walkthrough/ /docs/tasks/administer-cluster/namespaces-walkthrough/ 301 +/docs/admin/network-plugins/ /docs/concepts/cluster-administration/network-plugins/ 301 +/docs/admin/networking/ /docs/concepts/cluster-administration/networking/ 301 +/docs/admin/node/ /docs/concepts/architecture/nodes/ 301 +/docs/admin/node-allocatable/ /docs/tasks/administer-cluster/reserve-compute-resources/ 301 /docs/admin/node-allocatable.md /docs/tasks/administer-cluster/reserve-compute-resources/ 301 /docs/admin/node-conformance.md /docs/admin/node-conformance/ 301 -/docs/admin/node-problem /docs/tasks/debug-application-cluster/monitor-node-health 301 -/docs/admin/out-of-resource /docs/tasks/administer-cluster/out-of-resource 301 -/docs/admin/rescheduler /docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods 301 +/docs/admin/node-problem/ /docs/tasks/debug-application-cluster/monitor-node-health/ 301 +/docs/admin/out-of-resource/ /docs/tasks/administer-cluster/out-of-resource/ 301 +/docs/admin/rescheduler/ /docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/ 301 /docs/admin/resourcequota/* /docs/concepts/policy/resource-quotas/ 301 -/docs/admin/resourcequota/limitstorageconsumption /docs/tasks/administer-cluster/limit-storage-consumption 301 -/docs/admin/resourcequota/walkthrough /docs/tasks/administer-cluster/quota-api-object 301 -/docs/admin/static-pods /docs/tasks/administer-cluster/static-pod 301 -/docs/admin/sysctls /docs/concepts/cluster-administration/sysctl-cluster 301 -/docs/admin/upgrade-1-6 /docs/tasks/administer-cluster/upgrade-1-6 301 -/docs/api /docs/concepts/overview/kubernetes-api 301 -/docs/api-reference/1_5/* /docs/api-reference/v1.5/ 301 -/docs/api-reference/apps/v1alpha1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/apps/v1alpha1/definitions 301 -/docs/api-reference/apps/v1beta1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/apps/v1beta1/operations 301 -/docs/api-reference/authorization.k8s.io/v1beta1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/authorization.k8s.io/v1beta1/definitions 301 -/docs/api-reference/authorization.k8s.io/v1beta1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/authorization.k8s.io/v1beta1/operations 301 -/docs/api-reference/autoscaling/v1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/autoscaling/v1/operations 301 -/docs/api-reference/batch/v1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/batch/v1/operations 301 -/docs/api-reference/batch/v2alpha1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/batch/v2alpha1/definitions 301 -/docs/api-reference/certificates.k8s.io/v1alpha1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/certificates.k8s.io/v1alpha1/definitions 301 -/docs/api-reference/certificates/v1alpha1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/certificates/v1alpha1/operations 301 -/docs/api-reference/extensions/v1beta1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/extensions/v1beta1/operations 301 -/docs/api-reference/policy/v1alpha1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/policy/v1alpha1/definitions 301 -/docs/api-reference/policy/v1beta1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/policy/v1beta1/definitions 301 -/docs/api-reference/README https://v1-4.docs.kubernetes.io/docs/api-reference/README 301 -/docs/api-reference/storage.k8s.io/v1beta1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/storage.k8s.io/v1beta1/operations 301 -/docs/api-reference/v1.5/node_modules/* https://v1-5.docs.kubernetes.io/docs/api-reference/v1.5 301 -/docs/api-reference/v1.6/node_modules/* https://v1-6.docs.kubernetes.io/docs/api-reference/v1.6 301 -/docs/api-reference/v1.7/node_modules/* /docs/api-reference/v1.7/ 301 -/docs/api-reference/v1/definitions /docs/api-reference/v1.8 301 -/docs/api-reference/v1/operations /docs/api-reference/v1.8 301 -/docs/concepts/abstractions/controllers/garbage-collection /docs/concepts/workloads/controllers/garbage-collection 301 -/docs/concepts/abstractions/controllers/petsets /docs/concepts/workloads/controllers/statefulset 301 -/docs/concepts/abstractions/controllers/statefulsets /docs/concepts/workloads/controllers/statefulset 301 -/docs/concepts/abstractions/init-containers /docs/concepts/workloads/pods/init-containers 301 -/docs/concepts/abstractions/overview /docs/concepts/overview/working-with-objects/kubernetes-objects 301 -/docs/concepts/abstractions/pod /docs/concepts/workloads/pods/pod-overview 301 -/docs/concepts/cluster /docs/concepts/cluster-administration/cluster-administration-overview/ 301 -/docs/concepts/cluster-administration/access-cluster /docs/tasks/access-application-cluster/access-cluster 301 -/docs/concepts/cluster-administration/audit /docs/tasks/debug-application-cluster/audit 301 -/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig /docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig 301 -/docs/concepts/cluster-administration/cluster-management /docs/tasks/administer-cluster/cluster-management 301 -/docs/concepts/cluster-administration/configure-etcd /docs/tasks/administer-cluster/configure-upgrade-etcd 301 -/docs/concepts/cluster-administration/device-plugins/ /docs/concepts/cluster-administration/network-plugins/ 301 -/docs/concepts/cluster-administration/etcd-upgrade /docs/tasks/administer-cluster/configure-upgrade-etcd 301 -/docs/concepts/cluster-administration/federation-service-discovery /docs/tasks/federation/federation-service-discovery 301 -/docs/concepts/cluster-administration/guaranteed-scheduling-critical-addon-pods /docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods 301 -/docs/concepts/cluster-administration/master-node-communication /docs/concepts/architecture/master-node-communication 301 -/docs/concepts/cluster-administration/multiple-clusters /docs/concepts/cluster-administration/federation 301 -/docs/concepts/cluster-administration/out-of-resource /docs/tasks/administer-cluster/out-of-resource 301 -/docs/concepts/cluster-administration/resource-usage-monitoring /docs/tasks/debug-application-cluster/resource-usage-monitoring 301 -/docs/concepts/cluster-administration/static-pod /docs/tasks/administer-cluster/static-pod 301 -/docs/concepts/clusters/logging /docs/concepts/cluster-administration/logging 301 -/docs/concepts/configuration/container-command-arg /docs/tasks/inject-data-application/define-command-argument-container/docs/concepts/ecosystem/thirdpartyresource 301 /docs/tasks/access-kubernetes-api/extend-api-third-party-resource +/docs/admin/resourcequota/limitstorageconsumption/ /docs/tasks/administer-cluster/limit-storage-consumption/ 301 +/docs/admin/resourcequota/walkthrough/ /docs/tasks/administer-cluster/quota-api-object/ 301 +/docs/admin/static-pods/ /docs/tasks/administer-cluster/static-pod/ 301 +/docs/admin/sysctls/ /docs/concepts/cluster-administration/sysctl-cluster/ 301 +/docs/admin/upgrade-1-6/ /docs/tasks/administer-cluster/upgrade-1-6/ 301 +/docs/admin/resource-quota/ /docs/concepts/policy/resource-quotas/ 301 + +/docs/api/ /docs/concepts/overview/kubernetes-api/ 301 + +/docs/api-reference/apps/v1alpha1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/apps/v1alpha1/definitions/ 301 +/docs/api-reference/apps/v1beta1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/apps/v1beta1/operations/ 301 +/docs/api-reference/authorization.k8s.io/v1beta1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/authorization.k8s.io/v1beta1/definitions/ 301 +/docs/api-reference/authorization.k8s.io/v1beta1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/authorization.k8s.io/v1beta1/operations/ 301 +/docs/api-reference/autoscaling/v1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/autoscaling/v1/operations/ 301 +/docs/api-reference/batch/v1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/batch/v1/operations/ 301 +/docs/api-reference/batch/v2alpha1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/batch/v2alpha1/definitions/ 301 +/docs/api-reference/certificates.k8s.io/v1alpha1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/certificates.k8s.io/v1alpha1/definitions/ 301 +/docs/api-reference/certificates/v1alpha1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/certificates/v1alpha1/operations/ 301 +/docs/api-reference/extensions/v1beta1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/extensions/v1beta1/operations/ 301 +/docs/api-reference/labels-annotations-taints/ /docs/reference/labels-annotations-taints/ 301 +/docs/api-reference/policy/v1alpha1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/policy/v1alpha1/definitions/ 301 +/docs/api-reference/policy/v1beta1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/policy/v1beta1/definitions/ 301 +/docs/api-reference/README/ https://v1-4.docs.kubernetes.io/docs/api-reference/README/ 301 +/docs/api-reference/storage.k8s.io/v1beta1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/storage.k8s.io/v1beta1/operations/ 301 +/docs/api-reference/v1.4/* https://v1-4.docs.kubernetes.io/docs/reference/ 301 +/docs/api-reference/1_5/* https://v1-5.docs.kubernetes.io/docs/reference/ 301 +/docs/api-reference/v1.5/* https://v1-5.docs.kubernetes.io/docs/reference/ 301 +/docs/api-reference/v1.6/* https://v1-6.docs.kubernetes.io/docs/reference/ 301 +/docs/api-reference/v1.7/* https://v1-7.docs.kubernetes.io/docs/reference/ 301 +/docs/api-reference/v1/definitions/ /docs/api-reference/v1.8/ 301 +/docs/api-reference/v1/operations/ /docs/api-reference/v1.8/ 301 + +/docs/concepts/abstractions/controllers/garbage-collection/ /docs/concepts/workloads/controllers/garbage-collection/ 301 +/docs/concepts/abstractions/controllers/petsets/ /docs/concepts/workloads/controllers/statefulset/ 301 +/docs/concepts/abstractions/controllers/statefulsets/ /docs/concepts/workloads/controllers/statefulset/ 301 +/docs/concepts/abstractions/init-containers/ /docs/concepts/workloads/pods/init-containers/ 301 +/docs/concepts/abstractions/overview/ /docs/concepts/overview/working-with-objects/kubernetes-objects/ 301 +/docs/concepts/abstractions/pod/ /docs/concepts/workloads/pods/pod-overview/ 301 +/docs/concepts/cluster/ /docs/concepts/cluster-administration/cluster-administration-overview/ 301 +/docs/concepts/cluster-administration/access-cluster/ /docs/tasks/access-application-cluster/access-cluster/ 301 +/docs/concepts/cluster-administration/audit/ /docs/tasks/debug-application-cluster/audit/ 301 +/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig /docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/ 301 +/docs/concepts/cluster-administration/cluster-management/ /docs/tasks/administer-cluster/cluster-management/ 301 +/docs/concepts/cluster-administration/configure-etcd/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301 +/docs/concepts/cluster-administration/etcd-upgrade/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301 +/docs/concepts/cluster-administration/federation-service-discovery/ /docs/tasks/federation/federation-service-discovery/ 301 +/docs/concepts/cluster-administration/guaranteed-scheduling-critical-addon-pods/ /docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/ 301 +/docs/concepts/cluster-administration/master-node-communication/ /docs/concepts/architecture/master-node-communication/ 301 +/docs/concepts/cluster-administration/multiple-clusters/ /docs/concepts/cluster-administration/federation/ 301 +/docs/concepts/cluster-administration/out-of-resource/ /docs/tasks/administer-cluster/out-of-resource/ 301 +/docs/concepts/cluster-administration/resource-usage-monitoring /docs/tasks/debug-application-cluster/resource-usage-monitoring/ 301 +/docs/concepts/cluster-administration/static-pod/ /docs/tasks/administer-cluster/static-pod/ 301 +/docs/concepts/clusters/logging/ /docs/concepts/cluster-administration/logging/ 301 +/docs/concepts/configuration/container-command-arg/ /docs/tasks/inject-data-application/define-command-argument-container/ 301 +/docs/concepts/configuration/container-command-args/ /docs/tasks/inject-data-application/define-command-argument-container/ 301 /docs/concepts/ecosystem/thirdpartyresource/ /docs/tasks/access-kubernetes-api/extend-api-third-party-resource/ 301 -/docs/concepts/jobs/cron-jobs /docs/concepts/workloads/controllers/cron-jobs 301 -/docs/concepts/jobs/run-to-completion-finite-workloads /docs/concepts/workloads/controllers/jobs-run-to-completion 301 -/docs/concepts/nodes/node /docs/concepts/architecture/nodes 301 -/docs/concepts/object-metadata/annotations /docs/concepts/overview/working-with-objects/annotations 301 +/docs/concepts/jobs/cron-jobs/ /docs/concepts/workloads/controllers/cron-jobs/ 301 +/docs/concepts/jobs/run-to-completion-finite-workloads/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301 +/docs/concepts/nodes/node/ /docs/concepts/architecture/nodes/ 301 +/docs/concepts/object-metadata/annotations/ /docs/concepts/overview/working-with-objects/annotations/ 301 /docs/concepts/overview/ /docs/concepts/overview/what-is-kubernetes/ 301 /docs/concepts/policy/container-capabilities/ /docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container/ 301 /docs/concepts/policy/security-context/ /docs/tasks/configure-pod-container/security-context/ 301 /docs/concepts/services-networking/networkpolicies/ /docs/concepts/services-networking/network-policies/ 301 -/docs/concepts/storage/etcd-store-api-object /docs/tasks/administer-cluster/configure-upgrade-etcd 301 +/docs/concepts/storage/etcd-store-api-object/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301 /docs/concepts/storage/volumes/emptyDirapiVersion/ /docs/concepts/storage/volumes/#emptydir/ 301 -/docs/concepts/tools/kubectl/object-management-overview /docs/tutorials/object-management-kubectl/object-management 301 +/docs/concepts/tools/kubectl/object-management-overview/ /docs/tutorials/object-management-kubectl/object-management/ 301 /docs/concepts/tools/kubectl/object-management-using-commands/ /docs/tutorials/object-management-kubectl/imperative-object-management-command/ 301 -/docs/concepts/tools/kubectl/object-management-using-declarative-config /docs/tutorials/object-management-kubectl/declarative-object-management-configuration 301 -/docs/concepts/tools/kubectl/object-management-using-imperative-commands /docs/tutorials/object-management-kubectl/imperative-object-management-command 301 -/docs/concepts/tools/kubectl/object-management-using-imperative-config /docs/tutorials/object-management-kubectl/imperative-object-management-configuration 301 -/docs/concepts/workload/pods/pod-overview/ /docs/concepts/workloads/pods/pod-overview 301 +/docs/concepts/tools/kubectl/object-management-using-declarative-config/ /docs/tutorials/object-management-kubectl/declarative-object-management-configuration/ 301 +/docs/concepts/tools/kubectl/object-management-using-imperative-commands/ /docs/tutorials/object-management-kubectl/imperative-object-management-command/ 301 +/docs/concepts/tools/kubectl/object-management-using-imperative-config/ /docs/tutorials/object-management-kubectl/imperative-object-management-configuration/ 301 /docs/concepts/workloads/controllers/cron-jobs/deployment/ /docs/concepts/workloads/controllers/cron-jobs/ 301 -/docs/concepts/workloads/controllers/daemonset/docs/concepts/workloads/pods/pod /docs/concepts/workloads/pods/pod 301 -/docs/concepts/workloads/controllers/deployment/docs/concepts/workloads/pods/pod /docs/concepts/workloads/pods/pod 301 -/docs/concepts/workloads/controllers/petsets /docs/concepts/workloads/controllers/statefulset 301 +/docs/concepts/workloads/controllers/daemonset/docs/concepts/workloads/pods/pod/ /docs/concepts/workloads/pods/pod/ 301 +/docs/concepts/workloads/controllers/deployment/docs/concepts/workloads/pods/pod/ /docs/concepts/workloads/pods/pod/ 301 +/docs/concepts/workloads/controllers/deployment.md /docs/concepts/workloads/controllers/deployment/ 301 +/docs/concepts/workloads/controllers/job/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301 +/docs/concepts/workloads/controllers/petset/ /docs/concepts/workloads/controllers/statefulset/ 301 +/docs/concepts/workloads/controllers/petsets/ /docs/concepts/workloads/controllers/statefulset/ 301 /docs/concepts/workloads/controllers/statefulsets/ /docs/concepts/workloads/controllers/statefulset/ 301 -/docs/concepts/workloads/pods/init-containers/Kubernetes /docs/concepts/workloads/pods/init-containers/ 301 +/docs/concepts/workloads/controllers/statefulset.md /docs/concepts/workloads/controllers/statefulset/ 301 +/docs/concepts/workloads/pods/init-containers/Kubernetes/ /docs/concepts/workloads/pods/init-containers/ 301 + /docs/consumer-guideline/pod-security-coverage/ /docs/concepts/policy/pod-security-policy/ 301 -/docs/contribute/create-pull-request/ /docs/home/contribute/create-pull-request 301 -/docs/contribute/page-templates/ /docs/home/contribute/page-templates 301 -/docs/contribute/review-issues/ /docs/home/contribute/review-issues 301 + +/docs/contribute/create-pull-request/ /docs/home/contribute/create-pull-request/ 301 +/docs/contribute/page-templates/ /docs/home/contribute/page-templates/ 301 +/docs/contribute/review-issues/ /docs/home/contribute/review-issues/ 301 /docs/contribute/stage-documentation-changes/ /docs/home/contribute/stage-documentation-changes/ 301 -/docs/contribute/style-guide/ /docs/home/contribute/style-guide 301 -/docs/contribute/write-new-topic /docs/home/contribute/write-new-topic 301 +/docs/contribute/style-guide/ /docs/home/contribute/style-guide/ 301 + +/docs/contribute/write-new-topic/ /docs/home/contribute/write-new-topic/ 301 /docs/deprecate/ /ddocs/reference/deprecation-policy/ 301 +/docs/deprecated/ /ddocs/reference/deprecation-policy/ 301 /docs/deprecation-policy/ /docs/reference/deprecation-policy/ 301 + /docs/federation/api-reference/ /docs/reference/federation/v1/operations/ 301 -/docs/federation/api-reference/extensions/v1beta1/definitions /docs/reference/federation/extensions/v1beta1/definitions 301 -/docs/federation/api-reference/extensions/v1beta1/operations /docs/reference/federation/extensions/v1beta1/operations/ 301 -/docs/federation/api-reference/federation/v1beta1/definitions /docs/reference/federation/extensions/v1beta1/definitions 301 -/docs/federation/api-reference/federation/v1beta1/operations /docs/reference/federation/extensions/v1beta1/operations/ 301 -/docs/federation/api-reference/README /docs/reference/federation 301 -/docs/federation/api-reference/v1/definitions /docs/reference/federation/v1/definitions 301 +/docs/federation/api-reference/v1/definitions.html /docs/federation/api-reference/v1/definitions/ 301 +/docs/federation/api-reference/v1/operations.html /docs/federation/api-reference/v1/operations/ 301 +/docs/federation/api-reference/extensions/v1beta1/definitions/ /docs/reference/federation/extensions/v1beta1/definitions/ 301 +/docs/federation/api-reference/extensions/v1beta1/definitions.html /docs/federation/api-reference/extensions/v1beta1/definitions/ 301 +/docs/federation/api-reference/extensions/v1beta1/operations/ /docs/reference/federation/extensions/v1beta1/operations/ 301 +/docs/federation/api-reference/federation/v1beta1/definitions/ /docs/reference/federation/extensions/v1beta1/definitions/ 301 +/docs/federation/api-reference/federation/v1beta1/definitions.html /docs/federation/api-reference/federation/v1beta1/definitions/ 301 +/docs/federation/api-reference/federation/v1beta1/operations/ /docs/reference/federation/extensions/v1beta1/operations/ 301 +/docs/federation/api-reference/extensions/v1beta1/operations.html /docs/federation/api-reference/extensions/v1beta1/operations/ 301 +/docs/federation/api-reference/federation/v1beta1/operations.html /docs/federation/api-reference/federation/v1beta1/operations/ 301 +/docs/federation/api-reference/README/ /docs/reference/federation/ 301 +/docs/federation/api-reference/v1/definitions/ /docs/reference/federation/v1/definitions/ 301 /docs/federation/api-reference/v1/operations/ /docs/reference/federation/v1/operations/ 301 + /docs/getting-started-guide/* /docs/setup/ 301 -/docs/getting-started-guides /docs/setup/pick-right-solution 301 -/docs/getting-started-guides/coreos/azure /docs/getting-started-guides/coreos 301 -/docs/getting-started-guides/coreos/bare_metal_calico /docs/getting-started-guides/coreos 301 +/docs/getting-started-guides/ /docs/setup/pick-right-solution/ 301 +/docs/getting-started-guides/coreos/azure/ /docs/getting-started-guides/coreos/ 301 +/docs/getting-started-guides/coreos/bare_metal_calico/ /docs/getting-started-guides/coreos/ 301 /docs/getting-started-guides/docker-multinode/* /docs/setup/independent/create-cluster-kubeadm/ 301 -/docs/getting-started-guides/juju /docs/getting-started-guides/ubuntu/installation 301 -/docs/getting-started-guides/kargo /docs/getting-started-guides/kubespray 301 -/docs/getting-started-guides/kubeadm /docs/setup/independent/create-cluster-kubeadm 301 -/docs/getting-started-guides/logging /docs/concepts/cluster-administration/logging 301 -/docs/getting-started-guides/logging-elasticsearch /docs/tasks/debug-application-cluster/logging-elasticsearch-kibana 301 +/docs/getting-started-guides/juju/ /docs/getting-started-guides/ubuntu/installation/ 301 +/docs/getting-started-guides/kargo/ /docs/getting-started-guides/kubespray/ 301 +/docs/getting-started-guides/kubeadm/ /docs/setup/independent/create-cluster-kubeadm/ 301 +/docs/getting-started-guides/logging/ /docs/concepts/cluster-administration/logging/ 301 +/docs/getting-started-guides/logging-elasticsearch/ /docs/tasks/debug-application-cluster/logging-elasticsearch-kibana/ 301 /docs/getting-started-guides/meanstack/ https://medium.com/google-cloud/running-a-mean-stack-on-google-cloud-platform-with-kubernetes-149ca81c2b5d/ 301 -/docs/getting-started-guides/network-policy/calico /docs/tasks/administer-cluster/calico-network-policy 301 -/docs/getting-started-guides/network-policy/romana /docs/tasks/administer-cluster/romana-network-policy 301 -/docs/getting-started-guides/network-policy/walkthrough /docs/tasks/administer-cluster/declare-network-policy 301 -/docs/getting-started-guides/network-policy/weave /docs/tasks/administer-cluster/weave-network-policy 301 -/docs/getting-started-guides/rackspace /docs/setup/pick-right-solution 301 -/docs/getting-started-guides/running-cloud-controller /docs/tasks/administer-cluster/running-cloud-controller 301 -/docs/getting-started-guides/ubuntu-calico /docs/getting-started-guides/ubuntu 301 -/docs/getting-started-guides/ubuntu/automated /docs/getting-started-guides/ubuntu 301 -/docs/getting-started-guides/ubuntu/calico /docs/getting-started-guides/ubuntu/ 301 -/docs/getting-started-guides/vagrant /docs/getting-started-guides/alternatives 301 -/docs/getting-started-guides/windows/While /docs/getting-started-guides/windows 301 -/docs/hellonode /docs/tutorials/stateless-application/hello-minikube 301 +/docs/getting-started-guides/network-policy/calico/ /docs/tasks/administer-cluster/calico-network-policy/ 301 +/docs/getting-started-guides/network-policy/romana/ /docs/tasks/administer-cluster/romana-network-policy/ 301 +/docs/getting-started-guides/network-policy/walkthrough/ /docs/tasks/administer-cluster/declare-network-policy/ 301 +/docs/getting-started-guides/network-policy/weave/ /docs/tasks/administer-cluster/weave-network-policy/ 301 +/docs/getting-started-guides/rackspace/ /docs/setup/pick-right-solution/ 301 +/docs/getting-started-guides/running-cloud-controller/ /docs/tasks/administer-cluster/running-cloud-controller/ 301 +/docs/getting-started-guides/ubuntu-calico/ /docs/getting-started-guides/ubuntu/ 301 +/docs/getting-started-guides/ubuntu/automated/ /docs/getting-started-guides/ubuntu/ 301 +/docs/getting-started-guides/ubuntu/calico/ /docs/getting-started-guides/ubuntu/ 301 +/docs/getting-started-guides/vagrant/ /docs/getting-started-guides/alternatives/ 301 +/docs/getting-started-guides/windows/While/ /docs/getting-started-guides/windows/ 301 + +/docs/hellonode/ /docs/tutorials/stateless-application/hello-minikube/ 301 /docs/home/coreos/ /docs/getting-started-guides/coreos/ 301 /docs/home/deprecation-policy/ /docs/reference/deprecation-policy/ 301 -/docs/reference/federation/v1beta1/definitions /docs/reference/federation/extensions/v1beta1/definitions 301 -/docs/reference/federation/v1beta1/operations /docs/reference/federation/extensions/v1beta1/operations 301 -/docs/reporting-security-issues /security 301 + +/docs/reference/federation/v1beta1/definitions/ /docs/reference/federation/extensions/v1beta1/definitions/ 301 +/docs/reference/federation/v1beta1/operations/ /docs/reference/federation/extensions/v1beta1/operations/ 301 +/docs/reporting-security-issues/ /security/ 301 + /docs/resources-reference/1_5/* /docs/resources-reference/v1.5/ 301 /docs/resources-reference/1_5/* https://v1-5.docs.kubernetes.io/docs/resources-reference/v1.5/ 301 /docs/resources-reference/1_6/* /docs/resources-reference/v1.6/ 301 /docs/resources-reference/1_7/* /docs/resources-reference/v1.7/ 301 /docs/resources-reference/v1.5/node_modules/* https://v1-5.docs.kubernetes.io/docs/resources-reference/v1.5/ 301 +/docs/resources-reference/v1.8/* /docs/api-reference/v1.8/:splat 301 + /docs/roadmap/ https://github.com/kubernetes/kubernetes/milestones/ 301 -/docs/samples /docs/tutorials/ 301 -/docs/stable/user-guide/labels /docs/concepts/overview/working-with-objects/labels 301 -/docs/tasks/access-application-cluster/access-cluster.md /docs/tasks/access-application-cluster/access-cluster 301 -/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig /docs/tasks/access-application-cluster/configure-access-multiple-clusters 301 -/docs/tasks/access-kubernetes-api/access-kubernetes-api/http-proxy-access-api /docs/tasks/access-kubernetes-api/http-proxy-access-api 301 -/docs/tasks/administer-cluster/apply-resource-quota-limit /docs/tasks/administer-cluster/quota-api-object 301 -/docs/tasks/administer-cluster/assign-pods-nodes /docs/tasks/configure-pod-container/assign-pods-nodes 301 +/docs/samples/ /docs/tutorials/ 301 +/docs/stable/user-guide/labels/ /docs/concepts/overview/working-with-objects/labels/ 301 + +/docs/tasks/access-application-cluster/access-cluster.md /docs/tasks/access-application-cluster/access-cluster/ 301 +/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/ /docs/tasks/access-application-cluster/configure-access-multiple-clusters/ 301 +/docs/tasks/access-kubernetes-api/access-kubernetes-api/http-proxy-access-api/ /docs/tasks/access-kubernetes-api/http-proxy-access-api/ 301 +/docs/tasks/administer-cluster/apply-resource-quota-limit/ /docs/tasks/administer-cluster/quota-api-object/ 301 +/docs/tasks/administer-cluster/assign-pods-nodes/ /docs/tasks/configure-pod-container/assign-pods-nodes/ 301 +/docs/tasks/administer-cluster/certificate-rotation/ /docs/admin/kubelet-tls-bootstrapping/ 301 /docs/tasks/administer-cluster/configure-namespace-isolation/ /docs/concepts/services-networking/network-policies/ 301 /docs/tasks/administer-cluster/configure-pod-disruption-budget/ /docs/tasks/run-application/configure-pdb/ 301 -/docs/tasks/administer-cluster/cpu-management-policies/ /docs/concepts/configuration/manage-compute-resources-container/ 301 -/docs/tasks/administer-cluster/cpu-memory-limit /docs/tasks/administer-cluster/memory-default-namespace 301 +/docs/tasks/administer-cluster/cpu-memory-limit/ /docs/tasks/administer-cluster/memory-default-namespace/ 301 /docs/tasks/administer-cluster/default-cpu-request-limit/ /docs/tasks/configure-pod-container/assign-cpu-resource/#specify-a-cpu-request-and-a-cpu-limit/ 301 /docs/tasks/administer-cluster/default-memory-request-limit/ /docs/tasks/configure-pod-container/assign-memory-resource/#specify-a-memory-request-and-a-memory-limit/ 301 -/docs/tasks/administer-cluster/overview /docs/concepts/cluster-administration/cluster-administration-overview 301 -/docs/tasks/administer-cluster/reserve-compute-resources/out-of-resource.md /docs/tasks/administer-cluster/out-of-resource 301 -/docs/tasks/administer-cluster/share-configuration /docs/tasks/access-application-cluster/configure-access-multiple-clusters 301 -/docs/tasks/configure-pod-container/apply-resource-quota-limit /docs/tasks/administer-cluster/apply-resource-quota-limit 301 -/docs/tasks/configure-pod-container/assign-cpu-ram-container /docs/tasks/configure-pod-container/assign-memory-resource 301 -/docs/tasks/configure-pod-container/calico-network-policy /docs/tasks/administer-cluster/calico-network-policy 301 +/docs/tasks/administer-cluster/developing-cloud-controller-manager.md /docs/tasks/administer-cluster/developing-cloud-controller-manager/ 301 +/docs/tasks/administer-cluster/out-of-resource/memory-available.sh /docs/concepts/cluster-administration/out-of-resource/memory-available.sh 301 +/docs/tasks/administer-cluster/overview/ /docs/concepts/cluster-administration/cluster-administration-overview/ 301 +/docs/tasks/administer-cluster/reserve-compute-resources/out-of-resource.md /docs/tasks/administer-cluster/out-of-resource/ 301 +/docs/tasks/administer-cluster/running-cloud-controller.md /docs/tasks/administer-cluster/running-cloud-controller/ 301 +/docs/tasks/administer-cluster/share-configuration/ /docs/tasks/access-application-cluster/configure-access-multiple-clusters/ 301 +/docs/tasks/configure-pod-container/apply-resource-quota-limit/ /docs/tasks/administer-cluster/apply-resource-quota-limit/ 301 +/docs/tasks/configure-pod-container/assign-cpu-ram-container/ /docs/tasks/configure-pod-container/assign-memory-resource/ 301 +/docs/tasks/configure-pod-container/calico-network-policy/ /docs/tasks/administer-cluster/calico-network-policy/ 301 /docs/tasks/configure-pod-container/cilium-network-policy/ /docs/tasks/administer-cluster/cilium-network-policy/ 301 -/docs/tasks/configure-pod-container/communicate-containers-same-pod /docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume 301 -/docs/tasks/configure-pod-container/configure-pod-disruption-budget /docs/tasks/run-application/configure-pdb 301 -/docs/tasks/configure-pod-container/declare-network-policy /docs/tasks/administer-cluster/declare-network-policy 301 -/docs/tasks/configure-pod-container/define-command-argument-container /docs/tasks/inject-data-application/define-command-argument-container 301 -/docs/tasks/configure-pod-container/define-environment-variable-container /docs/tasks/inject-data-application/define-environment-variable-container 301 -/docs/tasks/configure-pod-container/distribute-credentials-secure /docs/tasks/inject-data-application/distribute-credentials-secure 301 -/docs/tasks/configure-pod-container/downward-api-volume-expose-pod-information /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information 301 -/docs/tasks/configure-pod-container/environment-variable-expose-pod-information /docs/tasks/inject-data-application/environment-variable-expose-pod-information 301 -/docs/tasks/configure-pod-container/limit-range /docs/tasks/administer-cluster/cpu-memory-limit 301 +/docs/tasks/configure-pod-container/communicate-containers-same-pod/ /docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/ 301 +/docs/tasks/configure-pod-container/configure-pod-disruption-budget/ /docs/tasks/run-application/configure-pdb/ 301 +/docs/tasks/configure-pod-container/declare-network-policy/ /docs/tasks/administer-cluster/declare-network-policy/ 301 +/docs/tasks/configure-pod-container/define-command-argument-container/ /docs/tasks/inject-data-application/define-command-argument-container/ 301 +/docs/tasks/configure-pod-container/define-environment-variable-container/ /docs/tasks/inject-data-application/define-environment-variable-container/ 301 +/docs/tasks/configure-pod-container/distribute-credentials-secure/ /docs/tasks/inject-data-application/distribute-credentials-secure/ 301 +/docs/tasks/configure-pod-container/downward-api-volume-expose-pod-information/ /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ 301 +/docs/tasks/configure-pod-container/environment-variable-expose-pod-information/ /docs/tasks/inject-data-application/environment-variable-expose-pod-information/ 301 +/docs/tasks/configure-pod-container/limit-range/ /docs/tasks/administer-cluster/cpu-memory-limit/ 301 /docs/tasks/configure-pod-container/projected-volume/ /docs/tasks/configure-pod-container/configure-projected-volume-storage/ 301 -/docs/tasks/configure-pod-container/romana-network-policy /docs/tasks/administer-cluster/romana-network-policy 301 -/docs/tasks/configure-pod-container/weave-network-policy /docs/tasks/administer-cluster/weave-network-policy 301 -/docs/tasks/debug-application-cluster/sematext-logging-monitoring https://sematext.com/kubernetes/ 301 +/docs/tasks/configure-pod-container/romana-network-policy/ /docs/tasks/administer-cluster/romana-network-policy/ 301 +/docs/tasks/configure-pod-container/weave-network-policy/ /docs/tasks/administer-cluster/weave-network-policy/ 301 +/docs/tasks/debug-application-cluster/sematext-logging-monitoring/ https://sematext.com/kubernetes/ 301 /docs/tasks/federation/set-up-cluster-federation-kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301 -/docs/tasks/job/work-queue-1 /docs/concepts/workloads/controllers/jobs-run-to-completion 301 -/docs/tasks/kubectl/get-shell-running-container /docs/tasks/debug-application-cluster/get-shell-running-container 301 -/docs/tasks/kubectl/install /docs/tasks/tools/install-kubectl 301 -/docs/tasks/kubectl/list-all-running-container-images /docs/tasks/access-application-cluster/list-all-running-container-images 301 -/docs/tasks/manage-stateful-set/debugging-a-statefulset /docs/tasks/debug-application-cluster/debug-stateful-set 301 -/docs/tasks/manage-stateful-set/delete-pods /docs/tasks/run-application/delete-stateful-set 301 -/docs/tasks/manage-stateful-set/deleting-a-statefulset /docs/tasks/run-application/delete-stateful-set 301 -/docs/tasks/manage-stateful-set/scale-stateful-set /docs/tasks/run-application/scale-stateful-set 301 -/docs/tasks/manage-stateful-set/upgrade-pet-set-to-stateful-set /docs/tasks/run-application/upgrade-pet-set-to-stateful-set 301 -/docs/tasks/run-application/podpreset /docs/tasks/inject-data-application/podpreset 301 +/docs/tasks/job/work-queue-1/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301 +/docs/tasks/kubectl/get-shell-running-container/ /docs/tasks/debug-application-cluster/get-shell-running-container/ 301 +/docs/tasks/kubectl/install/ /docs/tasks/tools/install-kubectl/ 301 +/docs/tasks/kubectl/list-all-running-container-images/ /docs/tasks/access-application-cluster/list-all-running-container-images/ 301 +/docs/tasks/manage-stateful-set/debugging-a-statefulset/ /docs/tasks/debug-application-cluster/debug-stateful-set/ 301 +/docs/tasks/manage-stateful-set/delete-pods/ /docs/tasks/run-application/delete-stateful-set/ 301 +/docs/tasks/manage-stateful-set/deleting-a-statefulset/ /docs/tasks/run-application/delete-stateful-set/ 301 +/docs/tasks/manage-stateful-set/scale-stateful-set/ /docs/tasks/run-application/scale-stateful-set/ 301 +/docs/tasks/manage-stateful-set/upgrade-pet-set-to-stateful-set/ /docs/tasks/run-application/upgrade-pet-set-to-stateful-set/ 301 +/docs/tasks/run-application/podpreset/ /docs/tasks/inject-data-application/podpreset/ 301 /docs/tasks/stateful-sets/deleting-pods/ /docs/tasks/run-application/force-delete-stateful-set-pod/ 301 -/docs/tasks/troubleshoot/debug-init-containers /docs/tasks/debug-application-cluster/debug-init-containers 301 -/docs/tasks/web-ui-dashboard /docs/tasks/access-application-cluster/web-ui-dashboard 301 +/docs/tasks/troubleshoot/debug-init-containers/ /docs/tasks/debug-application-cluster/debug-init-containers/ 301 +/docs/tasks/web-ui-dashboard/ /docs/tasks/access-application-cluster/web-ui-dashboard/ 301 + /docs/templatedemos/* /docs/home/contribute/page-templates/ 301 -/docs/tools/kompose /docs/tools/kompose/user-guide 301 +/docs/tools/kompose/ /docs/tools/kompose/user-guide/ 301 /docs/troubleshooting/ /docs/tasks/debug-application-cluster/troubleshooting/ 301 -/docs/tutorials/clusters/multiple-schedulers /docs/tasks/administer-cluster/configure-multiple-schedulers 301 -/docs/tutorials/connecting-apps/connecting-frontend-backend /docs/tasks/access-application-cluster/connecting-frontend-backend 301 -/docs/tutorials/federation/set-up-cluster-federation-kubefed /docs/tasks/federation/set-up-cluster-federation-kubefed 301 + +/docs/tutorials/clusters/multiple-schedulers/ /docs/tasks/administer-cluster/configure-multiple-schedulers/ 301 +/docs/tutorials/connecting-apps/connecting-frontend-backend/ /docs/tasks/access-application-cluster/connecting-frontend-backend/ 301 +/docs/tutorials/federation/set-up-cluster-federation-kubefed/ /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301 /docs/tutorials/federation/set-up-cluster-federation-kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301 -/docs/tutorials/federation/set-up-coredns-provider-federation /docs/tasks/federation/set-up-coredns-provider-federation 301 -/docs/tutorials/federation/set-up-placement-policies-federation /docs/tasks/federation/set-up-placement-policies-federation 301 -/docs/tutorials/getting-started/cluster-intro /docs/tutorials/kubernetes-basics/cluster-intro 301 -/docs/tutorials/getting-started/create-cluster /docs/tutorials/kubernetes-basics/cluster-intro 301 -/docs/tutorials/getting-started/expose-intro /docs/tutorials/kubernetes-basics/expose-intro 301 -/docs/tutorials/getting-started/scale-app /docs/tutorials/kubernetes-basics/scale-interactive 301 -/docs/tutorials/getting-started/scale-intro /docs/tutorials/kubernetes-basics/scale-intro 301 -/docs/tutorials/getting-started/update-interactive /docs/tutorials/kubernetes-basics/update-interactive 301 -/docs/tutorials/getting-started/update-intro /docs/tutorials/kubernetes-basics/ 301 -/docs/tutorials/stateful-application/run-replicated-stateful-application /docs/tasks/run-application/run-replicated-stateful-application 301 -/docs/tutorials/stateful-application/run-stateful-application /docs/tasks/run-application/run-single-instance-stateful-application 301 -/docs/tutorials/stateless-application/expose-external-ip-address-service /docs/tasks/access-application-cluster/service-access-application-cluster 301 -/docs/tutorials/stateless-application/run-stateless-ap-replication-controller /docs/tasks/run-application/run-stateless-application-deployment 301 -/docs/tutorials/stateless-application/run-stateless-application-deployment /docs/tasks/run-application/run-stateless-application-deployment 301 -/docs/user-guide /docs/home/ 301 -/docs/user-guide/accessing-the-cluster /docs/tasks/access-application-cluster/access-cluster 301 -/docs/user-guide/add-entries-to-pod-etc-hosts-with-host-aliases /docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases 301 -/docs/user-guide/annotations /docs/concepts/overview/working-with-objects/annotations 301 -/docs/user-guide/application-troubleshooting /docs/tasks/debug-application-cluster/debug-application 301 -/docs/user-guide/compute-resources /docs/concepts/configuration/manage-compute-resources-container 301 -/docs/user-guide/config-best-practices /docs/concepts/configuration/overview 301 -/docs/user-guide/configmap /docs/tasks/configure-pod-container/configmap 301 -/docs/user-guide/configuring-containers /docs/tasks/ 301 -/docs/user-guide/connecting-applications /docs/concepts/services-networking/connect-applications-service 301 -/docs/user-guide/connecting-to-applications-port-forward /docs/tasks/access-application-cluster/port-forward-access-application-cluster 301 -/docs/user-guide/connecting-to-applications-proxy /docs/tasks/access-kubernetes-api/http-proxy-access-api 301 -/docs/user-guide/container-environment /docs/concepts/containers/container-lifecycle-hooks 301 -/docs/user-guide/containers /docs/tasks/inject-data-application/define-command-argument-container 301 -/docs/user-guide/cron-jobs /docs/concepts/workloads/controllers/cron-jobs 301 -/docs/user-guide/debugging-pods-and-replication-controllers/ /docs/tasks/debug-application-cluster/debug-pod-replication-controller/ 301 -/docs/user-guide/debugging-services /docs/tasks/debug-application-cluster/debug-service 301 -/docs/user-guide/deploying-applications /docs/tasks/run-application/run-stateless-application-deployment 301 -/docs/user-guide/deployments /docs/concepts/workloads/controllers/deployment 301 -/docs/user-guide/downward-api /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information 301 -/docs/user-guide/downward-api/volume /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information 301 -/docs/user-guide/environment-guide /docs/tasks/inject-data-application/environment-variable-expose-pod-information 301 -/docs/user-guide/federation /docs/concepts/cluster-administration/federation 301 -/docs/user-guide/federation/cluster /docs/tasks/administer-federation/cluster 301 -/docs/user-guide/federation/configmap /docs/tasks/administer-federation/configmap 301 -/docs/user-guide/federation/daemonsets /docs/tasks/administer-federation/daemonset 301 -/docs/user-guide/federation/deployment /docs/tasks/administer-federation/deployment 301 -/docs/user-guide/federation/events /docs/tasks/administer-federation/events 301 -/docs/user-guide/federation/federated-ingress /docs/tasks/administer-federation/ingress 301 -/docs/user-guide/federation/federated-services /docs/tasks/federation/federation-service-discovery 301 -/docs/user-guide/federation/namespaces /docs/tasks/administer-federation/namespaces 301 -/docs/user-guide/federation/replicasets /docs/tasks/administer-federation/replicaset 301 -/docs/user-guide/federation/secrets /docs/tasks/administer-federation/secret 301 -/docs/user-guide/garbage-collection /docs/concepts/workloads/controllers/garbage-collection 301 +/docs/tutorials/federation/set-up-coredns-provider-federation/ /docs/tasks/federation/set-up-coredns-provider-federation/ 301 +/docs/tutorials/federation/set-up-placement-policies-federation/ /docs/tasks/federation/set-up-placement-policies-federation/ 301 +/docs/tutorials/getting-started/cluster-intro/ /docs/tutorials/kubernetes-basics/cluster-intro/ 301 +/docs/tutorials/getting-started/create-cluster/ /docs/tutorials/kubernetes-basics/cluster-intro/ 301 +/docs/tutorials/getting-started/expose-intro/ /docs/tutorials/kubernetes-basics/expose-intro/ 301 +/docs/tutorials/getting-started/scale-app/ /docs/tutorials/kubernetes-basics/scale-interactive/ 301 +/docs/tutorials/getting-started/scale-intro/ /docs/tutorials/kubernetes-basics/scale-intro/ 301 +/docs/tutorials/getting-started/update-interactive/ /docs/tutorials/kubernetes-basics/update-interactive/ 301 +/docs/tutorials/getting-started/update-intro/ /docs/tutorials/kubernetes-basics/ 301 +/docs/tutorials/stateful-application/run-replicated-stateful-application/ /docs/tasks/run-application/run-replicated-stateful-application/ 301 +/docs/tutorials/stateful-application/run-stateful-application/ /docs/tasks/run-application/run-single-instance-stateful-application/ 301 +/docs/tutorials/stateless-application/expose-external-ip-address-service/ /docs/tasks/access-application-cluster/service-access-application-cluster/ 301 +/docs/tutorials/stateless-application/run-stateless-ap-replication-controller/ /docs/tasks/run-application/run-stateless-application-deployment/ 301 +/docs/tutorials/stateless-application/run-stateless-application-deployment/ /docs/tasks/run-application/run-stateless-application-deployment/ 301 +/docs/tutorials/tasks/set-up-cluster-federation-kubefed/ /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301 + +/docs/user-guide/ /docs/home/ 301 +/docs/user-guide/accessing-the-cluster/ /docs/tasks/access-application-cluster/access-cluster/ 301 +/docs/user-guide/add-entries-to-pod-etc-hosts-with-host-aliases/ /docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ 301 +/docs/user-guide/annotations/ /docs/concepts/overview/working-with-objects/annotations/ 301 +/docs/user-guide/application-troubleshooting/ /docs/tasks/debug-application-cluster/debug-application/ 301 +/docs/user-guide/compute-resources/ /docs/concepts/configuration/manage-compute-resources-container/ 301 +/docs/user-guide/config-best-practices/ /docs/concepts/configuration/overview/ 301 +/docs/user-guide/configmap/ /docs/tasks/configure-pod-container/configmap/ 301 +/docs/user-guide/configmap/README/ /docs/tasks/configure-pod-container/configure-pod-configmap/ 301 +/docs/user-guide/configuring-containers/ /docs/tasks/configure-pod-container/configmap/ 301 +/docs/user-guide/connecting-applications/ /docs/concepts/services-networking/connect-applications-service/ 301 +/docs/user-guide/connecting-to-applications-port-forward/ /docs/tasks/access-application-cluster/port-forward-access-application-cluster/ 301 +/docs/user-guide/connecting-to-applications-proxy/ /docs/tasks/access-kubernetes-api/http-proxy-access-api/ 301 +/docs/user-guide/container-environment/ /docs/concepts/containers/container-lifecycle-hooks/ 301 +/docs/user-guide/containers/ /docs/tasks/inject-data-application/define-command-argument-container/ 301 +/docs/user-guide/cron-jobs/ /docs/concepts/workloads/controllers/cron-jobs/ 301 +/docs/user-guide/debugging-pods-and-replication-controllers/ /docs/tasks/debug-application-cluster/debug-pod-replication-controller/ 301 +/docs/user-guide/debugging-services/ /docs/tasks/debug-application-cluster/debug-service/ 301 +/docs/user-guide/deploying-applications/ /docs/tasks/run-application/run-stateless-application-deployment/ 301 +/docs/user-guide/deployments/ /docs/concepts/workloads/controllers/deployment/ 301 +/docs/user-guide/docker-cli-to-kubectl/ /docs/reference/kubectl/docker-cli-to-kubectl/ +/docs/user-guide/downward-api/ /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ 301 +/docs/user-guide/downward-api/README/ /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ 301 +/docs/user-guide/downward-api/volume/ /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ 301 +/docs/user-guide/environment-guide/ /docs/tasks/inject-data-application/environment-variable-expose-pod-information/ 301 +/docs/user-guide/federation/ /docs/concepts/cluster-administration/federation/ 301 +/docs/user-guide/federation/cluster/ /docs/tasks/administer-federation/cluster/ 301 +/docs/user-guide/federation/configmap/ /docs/tasks/administer-federation/configmap/ 301 +/docs/user-guide/federation/configmap.md /docs/tasks/administer-federation/configmap/ 301 +/docs/user-guide/federation/daemonsets/ /docs/tasks/administer-federation/daemonset/ 301 +/docs/user-guide/federation/daemonsets.md /docs/tasks/administer-federation/daemonset/ 301 +/docs/user-guide/federation/deployment/ /docs/tasks/administer-federation/deployment/ 301 +/docs/user-guide/federation/deployment.md /docs/tasks/administer-federation/deployment/ 301 +/docs/user-guide/federation/events/ /docs/tasks/administer-federation/events/ 301 +/docs/user-guide/federation/federated-ingress/ /docs/tasks/administer-federation/ingress/ 301 +/docs/user-guide/federation/federated-services/ /docs/tasks/federation/federation-service-discovery/ 301 +/docs/user-guide/federation/index.md /docs/concepts/cluster-administration/federation/ 301 +/docs/user-guide/federation/namespaces/ /docs/tasks/administer-federation/namespaces/ 301 +/docs/user-guide/federation/replicasets/ /docs/tasks/administer-federation/replicaset/ 301 +/docs/user-guide/federation/secrets/ /docs/tasks/administer-federation/secret/ 301 +/docs/user-guide/garbage-collection/ /docs/concepts/workloads/controllers/garbage-collection/ 301 /docs/user-guide/garbage-collector/* /docs/concepts/workloads/controllers/garbage-collection/ 301 -/docs/user-guide/getting-into-containers /docs/tasks/debug-application-cluster/get-shell-running-container 301 -/docs/user-guide/gpus /docs/tasks/manage-gpus/scheduling-gpus 301 +/docs/user-guide/getting-into-containers/ /docs/tasks/debug-application-cluster/get-shell-running-container/ 301 +/docs/user-guide/gpus/ /docs/tasks/manage-gpus/scheduling-gpus/ 301 /docs/user-guide/horizontal-pod-autoscaler/* /docs/tasks/run-application/horizontal-pod-autoscale/ 301 -/docs/user-guide/horizontal-pod-autoscaling /docs/tasks/run-application/horizontal-pod-autoscale 301 -/docs/user-guide/horizontal-pod-autoscaling/walkthrough /docs/tasks/run-application/horizontal-pod-autoscale-walkthrough 301 +/docs/user-guide/horizontal-pod-autoscaling/ /docs/tasks/run-application/horizontal-pod-autoscale/ 301 +/docs/user-guide/horizontal-pod-autoscaling/walkthrough/ /docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ 301 /docs/user-guide/horizontal-pod-autoscaling/walkthrough.md /docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ 301 -/docs/user-guide/identifiers /docs/concepts/overview/working-with-objects/names 301 -/docs/user-guide/images /docs/concepts/containers/images 301 -/docs/user-guide/ingress /docs/concepts/services-networking/ingress 301 -/docs/user-guide/ingress.md /docs/concepts/services-networking/ingress 301 -/docs/user-guide/introspection-and-debugging /docs/tasks/debug-application-cluster/debug-application-introspection 301 -/docs/user-guide/jobs /docs/concepts/workloads/controllers/jobs-run-to-completion 301 -/docs/user-guide/jobs/expansions /docs/tasks/job/parallel-processing-expansion 301 -/docs/user-guide/jobs/work-queue-1 /docs/tasks/job/coarse-parallel-processing-work-queue/ 301 -/docs/user-guide/jobs/work-queue-2 /docs/tasks/job/fine-parallel-processing-work-queue/ 301 -/docs/user-guide/kubeconfig-file /docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig 301 +/docs/user-guide/identifiers/ /docs/concepts/overview/working-with-objects/names/ 301 +/docs/user-guide/images/ /docs/concepts/containers/images/ 301 +/docs/user-guide/ingress/ /docs/concepts/services-networking/ingress/ 301 +/docs/user-guide/ingress.md /docs/concepts/services-networking/ingress/ 301 +/docs/user-guide/introspection-and-debugging/ /docs/tasks/debug-application-cluster/debug-application-introspection/ 301 +/docs/user-guide/jsonpath/ /docs/reference/kubectl/jsonpath/ +/docs/user-guide/jobs/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301 +/docs/user-guide/jobs/expansions/ /docs/tasks/job/parallel-processing-expansion/ 301 +/docs/user-guide/jobs/work-queue-1/ /docs/tasks/job/coarse-parallel-processing-work-queue/ 301 +/docs/user-guide/jobs/work-queue-2/ /docs/tasks/job/fine-parallel-processing-work-queue/ 301 +/docs/user-guide/kubeconfig-file/ /docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/ 301 +/docs/user-guide/kubectl-overview/ /docs/reference/kubectl/overview/ +/docs/user-guide/kubectl/ /docs/reference/generated/kubectl/kubectl-options/ +/docs/user-guide/kubectl/v1.8/ /docs/reference/generated/kubectl/kubectl-commands/ +/docs/user-guide/kubectl-conventions/ /docs/reference/kubectl/conventions/ +/docs/user-guide/kubectl-cheatsheet/ /docs/reference/kubectl/cheatsheet/ /docs/user-guide/kubectl/1_5/* https://v1-5.docs.kubernetes.io/docs/user-guide/kubectl/v1.5/ 301 -/docs/user-guide/kubectl/kubectl_*/ /docs/user-guide/kubectl/v1.7/#:splat 200 +/docs/user-guide/kubectl/kubectl_*/ /docs/user-guide/kubectl/v1.7/#:splat 301 /docs/user-guide/kubectl/v1.5/node_modules/* https://v1-5.docs.kubernetes.io/docs/user-guide/kubectl/v1.5/ 301 /docs/user-guide/kubectl/v1.6/node_modules/* https://v1-6.docs.kubernetes.io/docs/user-guide/kubectl/v1.6/ 301 -/docs/user-guide/labels /docs/concepts/overview/working-with-objects/labels 301 -/docs/user-guide/liveness /docs/tasks/configure-pod-container/configure-liveness-readiness-probes 301 -/docs/user-guide/load-balancer /docs/tasks/access-application-cluster/create-external-load-balancer 301 +/docs/user-guide/labels/ /docs/concepts/overview/working-with-objects/labels/ 301 +/docs/user-guide/liveness/ /docs/tasks/configure-pod-container/configure-liveness-readiness-probes/ 301 +/docs/user-guide/load-balancer/ /docs/tasks/access-application-cluster/create-external-load-balancer/ 301 /docs/user-guide/logging/ /docs/concepts/cluster-administration/logging/ 301 -/docs/user-guide/logging/elasticsearch /docs/tasks/debug-application-cluster/logging-elasticsearch-kibana 301 -/docs/user-guide/logging/overview /docs/concepts/cluster-administration/logging 301 -/docs/user-guide/logging/stackdriver /docs/tasks/debug-application-cluster/logging-stackdriver 301 -/docs/user-guide/managing-deployments /docs/concepts/cluster-administration/manage-deployment 301 -/docs/user-guide/monitoring /docs/tasks/debug-application-cluster/resource-usage-monitoring 301 -/docs/user-guide/namespaces /docs/concepts/overview/working-with-objects/namespaces 301 -/docs/user-guide/networkpolicies /docs/concepts/services-networking/network-policies 301 -/docs/user-guide/node-selection /docs/concepts/configuration/assign-pod-node 301 +/docs/user-guide/logging/elasticsearch/ /docs/tasks/debug-application-cluster/logging-elasticsearch-kibana/ 301 +/docs/user-guide/logging/overview/ /docs/concepts/cluster-administration/logging/ 301 +/docs/user-guide/logging/stackdriver/ /docs/tasks/debug-application-cluster/logging-stackdriver/ 301 +/docs/user-guide/managing-deployments/ /docs/concepts/cluster-administration/manage-deployment/ 301 +/docs/user-guide/monitoring/ /docs/tasks/debug-application-cluster/resource-usage-monitoring/ 301 +/docs/user-guide/namespaces/ /docs/concepts/overview/working-with-objects/namespaces/ 301 +/docs/user-guide/networkpolicies/ /docs/concepts/services-networking/network-policies/ 301 +/docs/user-guide/node-selection/ /docs/concepts/configuration/assign-pod-node/ 301 +/docs/user-guide/node-selection/README /docs/concepts/configuration/assign-pod-node/ 301 /docs/user-guide/overview/ /docs/concepts/overview/what-is-kubernetes/ 301 -/docs/user-guide/persistent-volumes /docs/concepts/storage/persistent-volumes 301 +/docs/user-guide/persistent-volumes/ /docs/concepts/storage/persistent-volumes/ 301 /docs/user-guide/persistent-volumes/index /docs/concepts/storage/persistent-volumes/ 301 /docs/user-guide/persistent-volumes/index.md /docs/concepts/storage/persistent-volumes/ 301 -/docs/user-guide/persistent-volumes/walkthrough /docs/tasks/configure-pod-container/configure-persistent-volume-storage 301 -/docs/user-guide/petset /docs/concepts/workloads/controllers/statefulset 301 -/docs/user-guide/petset/bootstrapping /docs/concepts/workloads/controllers/statefulset 301 -/docs/user-guide/pod-preset/ /docs/tasks/inject-data-application/podpreset 301 -/docs/user-guide/pod-security-policy/ /docs/concepts/policy/pod-security-policy 301 -/docs/user-guide/pod-states /docs/concepts/workloads/pods/pod-lifecycle 301 -/docs/user-guide/pod-templates /docs/concepts/workloads/pods/pod-overview 301 -/docs/user-guide/pods /docs/concepts/workloads/pods/pod 301 -/docs/user-guide/pods/init-container /docs/concepts/workloads/pods/init-containers 301 -/docs/user-guide/pods/multi-container /docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume 301 -/docs/user-guide/pods/single-container /docs/tasks/run-application/run-stateless-application-deployment 301 -/docs/user-guide/prereqs /docs/tasks/tools/install-kubectl 301 -/docs/user-guide/production-pods /docs/tasks/ 301 -/docs/user-guide/projected-volume /docs/tasks/configure-pod-container/configure-projected-volume-storage 301 -/docs/user-guide/quick-start /docs/tasks/access-application-cluster/service-access-application-cluster 301 -/docs/user-guide/replicasets /docs/concepts/workloads/controllers/replicaset 301 -/docs/user-guide/replication-controller /docs/concepts/workloads/controllers/replicationcontroller 301 -/docs/user-guide/replication-controller/operations /docs/concepts/workloads/controllers/replicationcontroller 301 -/docs/user-guide/resizing-a-replication-controller /docs/concepts/workloads/controllers/replicationcontroller 301 -/docs/user-guide/rolling-updates /docs/tasks/run-application/rolling-update-replication-controller 301 -/docs/user-guide/scheduled-jobs /docs/concepts/workloads/controllers/cron-jobs 301 -/docs/user-guide/secrets /docs/concepts/configuration/secret 301 -/docs/user-guide/secrets/walkthrough /docs/tasks/inject-data-application/distribute-credentials-secure 301 -/docs/user-guide/security-context /docs/tasks/configure-pod-container/security-context 301 -/docs/user-guide/service-accounts /docs/tasks/configure-pod-container/configure-service-account 301 +/docs/user-guide/persistent-volumes/walkthrough/ /docs/tasks/configure-pod-container/configure-persistent-volume-storage/ 301 +/docs/user-guide/petset/ /docs/concepts/workloads/controllers/statefulset/ 301 +/docs/user-guide/petset/bootstrapping/ /docs/concepts/workloads/controllers/statefulset/ 301 +/docs/user-guide/pod-preset/ /docs/tasks/inject-data-application/podpreset/ 301 +/docs/user-guide/pod-security-policy/ /docs/concepts/policy/pod-security-policy/ 301 +/docs/user-guide/pod-states/ /docs/concepts/workloads/pods/pod-lifecycle/ 301 +/docs/user-guide/pod-templates/ /docs/concepts/workloads/pods/pod-overview/ 301 +/docs/user-guide/pods/ /docs/concepts/workloads/pods/pod/ 301 +/docs/user-guide/pods/init-container/ /docs/concepts/workloads/pods/init-containers/ 301 +/docs/user-guide/pods/multi-container/ /docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/ 301 +/docs/user-guide/pods/single-container/ /docs/tasks/run-application/run-stateless-application-deployment/ 301 +/docs/user-guide/prereqs/ /docs/tasks/tools/install-kubectl/ 301 +/docs/user-guide/production-pods/ /docs/tasks/ 301 +/docs/user-guide/projected-volume/ /docs/tasks/configure-pod-container/configure-projected-volume-storage/ 301 +/docs/user-guide/quick-start/ /docs/tasks/access-application-cluster/service-access-application-cluster/ 301 +/docs/user-guide/replicasets/ /docs/concepts/workloads/controllers/replicaset/ 301 +/docs/user-guide/replication-controller/ /docs/concepts/workloads/controllers/replicationcontroller/ 301 +/docs/user-guide/replication-controller/operations/ /docs/concepts/workloads/controllers/replicationcontroller/ 301 +/docs/user-guide/resizing-a-replication-controller/ /docs/concepts/workloads/controllers/replicationcontroller/ 301 +/docs/user-guide/rolling-updates/ /docs/tasks/run-application/rolling-update-replication-controller/ 301 +/docs/user-guide/scheduled-jobs/ /docs/concepts/workloads/controllers/cron-jobs/ 301 +/docs/user-guide/secrets/ /docs/concepts/configuration/secret/ 301 +/docs/user-guide/secrets/walkthrough/ /docs/tasks/inject-data-application/distribute-credentials-secure/ 301 +/docs/user-guide/security-context/ /docs/tasks/configure-pod-container/security-context/ 301 +/docs/user-guide/service-accounts/ /docs/tasks/configure-pod-container/configure-service-account/ 301 /docs/user-guide/service-accounts/working-with-resources/ /docs/tutorials/object-management-kubectl/object-management/ 301 -/docs/user-guide/services /docs/concepts/services-networking/service 301 -/docs/user-guide/services-firewalls /docs/tasks/access-application-cluster/configure-cloud-provider-firewall 301 -/docs/user-guide/services/operations /docs/tasks/access-application-cluster/connecting-frontend-backend 301 -/docs/user-guide/sharing-clusters /docs/tasks/administer-cluster/share-configuration 301 -/docs/user-guide/simple-nginx /docs/tasks/run-application/run-stateless-application-deployment 301 +/docs/user-guide/services/ /docs/concepts/services-networking/service/ 301 +/docs/user-guide/services-firewalls/ /docs/tasks/access-application-cluster/configure-cloud-provider-firewall/ 301 +/docs/user-guide/services/operations/ /docs/tasks/access-application-cluster/connecting-frontend-backend/ 301 +/docs/user-guide/sharing-clusters/ /docs/tasks/administer-cluster/share-configuration/ 301 +/docs/user-guide/simple-nginx/ /docs/tasks/run-application/run-stateless-application-deployment/ 301 /docs/user-guide/StatefulSet/ /docs/concepts/workloads/controllers/statefulset/ 301 -/docs/user-guide/thirdpartyresources /docs/tasks/access-kubernetes-api/extend-api-third-party-resource 301 -/docs/user-guide/ui /docs/tasks/access-application-cluster/web-ui-dashboard 301 +/docs/user-guide/thirdpartyresources/ /docs/tasks/access-kubernetes-api/extend-api-third-party-resource/ 301 +/docs/user-guide/ui/ /docs/tasks/access-application-cluster/web-ui-dashboard/ 301 /docs/user-guide/ui-access/ /docs/tasks/access-application-cluster/web-ui-dashboard/ 301 /docs/user-guide/update-dem/ /docs/tasks/run-application/rolling-update-replication-controller/ 301 -/docs/user-guide/update-demo /docs/tasks/run-application/rolling-update-replication-controller 301 -/docs/user-guide/volumes /docs/concepts/storage/volumes 301 -/docs/user-guide/working-with-resources /docs/tutorials/object-management-kubectl/object-management 301 -/docs/whatisk8s /docs/concepts/overview/what-is-kubernetes 301 +/docs/user-guide/update-demo/ /docs/tasks/run-application/rolling-update-replication-controller/ 301 +/docs/user-guide/volumes/ /docs/concepts/storage/volumes/ 301 + +/docs/user-guide/working-with-resources/ /docs/tutorials/object-management-kubectl/object-management/ 301 + +/docs/whatisk8s/ /docs/concepts/overview/what-is-kubernetes/ 301 +/events/ /docs/community 301 /gettingstarted/ /docs/home/ 301 /horizontal-pod-autoscaler/ /docs/tasks/run-application/horizontal-pod-autoscale/ 301 -/kubernetes /docs/ 301 +/kubernetes/ /docs/ 301 /kubernetes-bootcamp/* /docs/tutorials/kubernetes-basics/ 301 -/kubernetes/swagger-spec https://github.com/kubernetes/kubernetes/tree/master/api/swagger-spec 301 +/kubernetes/swagger-spec/ https://github.com/kubernetes/kubernetes/tree/master/api/swagger-spec/ 301 /kubernetes/third_party/swagger-ui/ /docs/reference/ 301 /latest/docs/ /docs/home/ 301 +/media/ /docs/community 301 +/news/ /docs/community 301 /resource-quota/ /docs/concepts/policy/resource-quotas/ 301 -/serviceaccount/token /docs/tasks/configure-pod-container/configure-service-account 301 +/serviceaccount/token/ /docs/tasks/configure-pod-container/configure-service-account/ 301 /swagger-spec/* https://github.com/kubernetes/kubernetes/tree/master/api/swagger-spec/ 301 /third_party/swagger-ui/* /docs/reference/ 301 -/v1.1/docs/admin/networking.html /docs/concepts/cluster-administration/networking 301 -/v1.1/docs/getting-started-guides /docs/tutorials/kubernetes-basics/ 301 +/v1.1/docs/admin/networking.html /docs/concepts/cluster-administration/networking/ 301 +/v1.1/docs/getting-started-guides/ /docs/tutorials/kubernetes-basics/ 301 + +https://kubernetes-io-v1-7.netlify.com/* https://v1-7.docs.kubernetes.io/"splat 301 + +/docs/admin/cloud-controller-manager/ /docs/reference/generated/cloud-controller-manager/ 301 +/docs/admin/kube-apiserver/ /docs/reference/generated/kube-apiserver/ 301 +/docs/admin/kube-controller-manager/ /docs/reference/generated/kube-controller-manager/ 301 +/docs/admin/kube-proxy/ /docs/reference/generated/kube-proxy/ 301 +/docs/admin/kube-scheduler/ /docs/reference/generated/kube-scheduler/ 301 +/docs/admin/kube-scheduler/ /docs/reference/generated/kube-scheduler/ 301 +/docs/admin/kubeadm/ /docs/reference/generated/kubeadm/ 301 +/docs/admin/kubelet/ /docs/reference/generated/kubelet/ 301 +/docs/admin/federation-controller-manager/ /docs/reference/generated/federation-controller-manager/ 301 +/docs/admin/federation-apiserver/ /docs/reference/generated/federation-apiserver/ 301 +/docs/admin/kubefed/ /docs/reference/generated/kubefed/ 301 +/docs/admin/kubefed_init/ /docs/reference/generated/kubefed_init/ 301 +/docs/admin/kubefed_join/ /docs/reference/generated/kubefed_join/ 301 +/docs/admin/kubefed_options/ /docs/reference/generated/kubefed_options/ 301 +/docs/admin/kubefed_unjoin/ /docs/reference/generated/kubefed_unjoin/ 301 +/docs/admin/kubefed_version/ /docs/reference/generated/kubefed_version/ 301 diff --git a/_sass/_base.sass b/_sass/_base.sass index e45c5c9600..cb6ec8b04f 100644 --- a/_sass/_base.sass +++ b/_sass/_base.sass @@ -379,12 +379,12 @@ ul.global-nav width: 100% background-color: transparentize(white, 0.9) content: '' - + &.no-sub - + h5 display: none - + h1 margin-bottom: 20px @@ -478,12 +478,12 @@ footer display: block height: 0 overflow: hidden - + &.button background-image: none width: auto height: auto - + &:hover color: $blue @@ -572,7 +572,7 @@ section height: 44px line-height: 44px position: relative - + &:before position: absolute width: 15px @@ -829,7 +829,7 @@ dd h1,h2 border-bottom: 1px solid #cccccc - + h1 font-size: 32px padding-right: 60px @@ -1009,7 +1009,7 @@ dd a.button border-radius: 2px text-decoration: none - + &:visited color: white @@ -1022,6 +1022,9 @@ dd #miceType clear: both + font-size: 11px + line-height: 18px + color: #aaa html.search #docsContent @@ -1125,7 +1128,7 @@ $feature-box-div-margin-bottom: 40px #video width: 100% position: relative - background-image: url(/images/kub_video_banner.jpg) + background-image: url(/images/kub_video_banner_box.jpg) background-position: center center background-size: cover @@ -1135,10 +1138,8 @@ $feature-box-div-margin-bottom: 40px position: absolute top: 50% left: 75% - width: 50% - max-width: 600px - min-width: 500px - padding-right: 10% + width: 525px + padding-right: 80px transform: translate(-50%, -50%) color: white @@ -1150,6 +1151,14 @@ $feature-box-div-margin-bottom: 40px p margin-bottom: 20px + #desktopKCButton + position: relative + font-size: 18px + background-color: $dark-grey + border-radius: 8px + color: $white + padding: 20px 10px 20px 10px + #desktopShowVideoButton position: relative font-size: 24px @@ -1157,6 +1166,7 @@ $feature-box-div-margin-bottom: 40px border-radius: 8px color: $blue padding: 15px 30px 15px 80px + margin-bottom: 15px &:before content: "" @@ -1332,7 +1342,7 @@ $feature-box-div-margin-bottom: 40px height: 30vw max-width: 1200px max-height: 450px - margin: 20px auto + margin: 20px auto iframe position: absolute @@ -1414,7 +1424,7 @@ $feature-box-div-margin-bottom: 40px h1,h2 border-bottom: 1px solid #cccccc - + h1 font-size: 32px padding-right: 60px @@ -1594,7 +1604,7 @@ $feature-box-div-margin-bottom: 40px a.button border-radius: 2px text-decoration: none - + &:visited color: white @@ -1696,7 +1706,7 @@ $feature-box-div-margin-bottom: 40px #talkToUs main padding: 30px 0 - + h5 font-size: 20px @@ -1705,7 +1715,7 @@ $feature-box-div-margin-bottom: 40px position: relative text-align: center margin-bottom: 30px - + div position: relative display: inline-block @@ -1728,10 +1738,10 @@ $feature-box-div-margin-bottom: 40px div:nth-child(4) background-image: url(/images/community_logos/wikimedia_foundation_logo.png) - + p font-size: 20px - + a position: absolute bottom: 0 @@ -1740,16 +1750,16 @@ $feature-box-div-margin-bottom: 40px color: $blue font-weight: 400 - + //#bigSocial // text-align: center - // + // // div // display: inline-block // float: none // padding-top: 125px // width: calc(90%) - // + // // a // margin-top: 15px // font-size: 18px diff --git a/_sass/_desktop.sass b/_sass/_desktop.sass index 27fbc46ae1..48a83596e3 100644 --- a/_sass/_desktop.sass +++ b/_sass/_desktop.sass @@ -49,7 +49,7 @@ $video-section-height: 550px #searchBox float: right - width: 320px + width: 250px #search vertical-align: middle @@ -97,12 +97,15 @@ $video-section-height: 550px section, header, footer main max-width: $main-max-width - + header, #vendorStrip, #encyclopedia, #hero h1, #hero h5, #docs #hero h1, #docs #hero h5, #community #hero h1, .gridPage #hero h1, #community #hero h5, .gridPage #hero h5 padding-left: 100px padding-right: 100px + #vendorStrip + padding-right: 10px + #home section, header, footer main @@ -135,7 +138,7 @@ $video-section-height: 550px #video height: $video-section-height position: relative - background-image: url(../images/kub_video_banner.jpg) + background-image: url(../images/kub_video_banner_box.jpg) background-position: center center background-size: cover @@ -296,7 +299,7 @@ $video-section-height: 550px width: auto background-color: $blue padding: 0 20px - + @@ -309,3 +312,7 @@ $video-section-height: 550px div width: 24% min-height: 260px + +@media screen and (min-width: 1300px) + #vendorStrip + padding-right: 100px diff --git a/case-studies/blablacar.html b/case-studies/blablacar.html new file mode 100755 index 0000000000..f326e268e1 --- /dev/null +++ b/case-studies/blablacar.html @@ -0,0 +1,100 @@ +--- +title: BlaBlaCar Case Study +layout: basic +case_study_styles: true +cid: caseStudies +css: /css/style_blablacar.css +--- + +

+

CASE STUDY:
Turning to Containerization to Support Millions of Rideshares

+ +
+ +
+ Company  BlaBlaCar     Location  Paris, France     Industry  Ridesharing Company +
+ +
+ +
+
+
+

Challenge

+ The world’s largest long-distance carpooling community, BlaBlaCar, connects 40 million members across 22 countries. The company has been experiencing exponential growth since 2012 and needed its infrastructure to keep up. "When you’re thinking about doubling the number of servers, you start thinking, ‘What should I do to be more efficient?’" says Simon Lallemand, Infrastructure Engineer at BlaBlaCar. "The answer is not to hire more and more people just to deal with the servers and installation." The team knew they had to scale the platform, but wanted to stay on their own bare metal servers. +
+
+

Solution

+ Opting not to shift to cloud virtualization or use a private cloud on their own servers, the BlaBlaCar team became early adopters of containerization, using the CoreOs runtime rkt, initially deployed using fleet cluster manager. Last year, the company switched to Kubernetes orchestration, and now also uses Prometheus for monitoring. +
+ +
+

Impact

+ "Before using containers, it would take sometimes a day, sometimes two, just to create a new service," says Lallemand. "With all the tooling that we made around the containers, copying a new service now is a matter of minutes. It’s really a huge gain. We are better at capacity planning in our data center because we have fewer constraints due to this abstraction between the services and the hardware we run on. For the developers, it also means they can focus only on the features that they’re developing, and not on the infrastructure." +
+
+
+ +
+
+ "When you’re switching to this cloud-native model and running everything in containers, you have to make sure that at any moment you can reboot without any downtime and without losing traffic. [With Kubernetes] our infrastructure is much more resilient and we have better availability than before."

- Simon Lallemand, Infrastructure Engineer at BlaBlaCar
+
+
+ +
+
+

For the 40 million users of BlaBlaCar, it’s easy to find strangers headed in the same direction to share rides and costs. You can even choose how much "bla bla" chatter you want from a long-distance ride mate.

+ Behind the scenes, though, the infrastructure was falling woefully behind the rider community’s exponential growth. Founded in 2006, the company hit its current stride around 2012. "Our infrastructure was very traditional," says Infrastructure Engineer Simon Lallemand, who began working at the company in 2014. "In the beginning, it was a bit chaotic because we had to [grow] fast. But then comes the time when you have to design things to make it manageable."

+ By 2015, the company had about 50 bare metal servers. The team was using a MySQL database and PHP, but, Lallemand says, "it was a very static way." They also utilized the configuration management system, Chef, but had little automation in its process. "When you’re thinking about doubling the number of servers, you start thinking, ‘What should I do to be more efficient?’" says Lallemand. "The answer is not to hire more and more people just to deal with the servers and installation."

+ Instead, BlaBlaCar began its cloud-native journey but wasn’t sure which route to take. "We could either decide to go into cloud virtualization or even use a private cloud on our own servers," says Lallemand. "But going into the cloud meant we had to make a lot of changes in our application work, and we were just not ready to make the switch from on premise to the cloud." They wanted to keep the great performance they got on bare metal, so they didn’t want to go to virtualization on premise.

+ The solution: containerization. This was early 2015 and containers were still relatively new. "It was a bold move at the time," says Lallemand. "We decided that the next servers that we would buy in the new data center would all be the same model, so we could outsource the maintenance of the servers. And we decided to go with containers and with CoreOS Container Linux as an abstraction for this hardware. It seemed future-proof to go with containers because we could see what companies were already doing with containers." +
+
+ +
+
+ "With all the tooling that we made around the containers, copying a new service is a matter of minutes. It’s a huge gain. For the developers, it means they can focus only on the features that they’re developing and not on the infrastructure or the hour they would test their code, or the hour that it would get deployed." +
+
+ +
+
+ Next, they needed to choose a runtime for the containers, but "there were very few deployments in production at that time," says Lallemand. They experimented with Docker but decided to go with rkt. Lallemand explains that for BlaBlaCar, it was "much simpler to integrate things that are on rkt." At the time, the project was still pre-v1.0, so "we could speak with the developers of rkt and give them feedback. It was an advantage." Plus, he notes, rkt was very stable, even at this early stage.

+ Once those decisions were made that summer, the company came up with a plan for implementation. First, they formed a task force to create a workflow that would be tested by three of the 10 members on Lallemand’s team. But they took care to run regular workshops with all 10 members to make sure everyone was on board. "When you’re focused on your product sometimes you forget if it’s really user friendly, whether other people can manage to create containers too," Lallemand says. "So we did a lot of iterations to find a good workflow."

+ After establishing the workflow, Lallemand says with a smile that "we had this strange idea that we should try the most difficult thing first. Because if it works, it will work for everything." So the first project the team decided to containerize was the database. "Nobody did that at the time, and there were really no existing tools for what we wanted to do, including building container images," he says. So the team created their own tools, such as dgr, which builds container images so that the whole team has a common framework to build on the same images with the same standards. They also revamped the service-discovery tools Nerve and Synapse; their versions, Go-Nerve and Go-Synapse, were written in Go and built to be more efficient and include new features. All of these tools were open-sourced.

+ At the same time, the company was working to migrate its entire platform to containers with a deadline set for Christmas 2015. With all the work being done in parallel, BlaBlaCar was able to get about 80 percent of its production into containers by its deadline with live traffic running on containers during December. (It’s now at 100 percent.) "It’s a really busy time for traffic," says Lallemand. "We knew that by using those new servers with containers, it would help us handle the traffic."

+ In the middle of that peak season for carpooling, everything worked well. "The biggest impact that we had was for the deployment of new services," says Lallemand. "Before using containers, we had to first deploy a new server and create configurations with Chef. It would take sometimes a day, sometimes two, just to create a new service. And with all the tooling that we made around the containers, copying a new service is a matter of minutes. So it’s really a huge gain. For the developers, it means they can focus only on the features that they’re developing and not on the infrastructure or the hour they would test their code, or the hour that it would get deployed." +
+
+ +
+
+ "We realized that there was a really strong community around it [Kubernetes], which meant we would not have to maintain a lot of tools of our own," says Lallemand. "It was better if we could contribute to some bigger project like Kubernetes." +
+
+ +
+
+ In order to meet their self-imposed deadline, one of the decisions they made was to not do any "orchestration magic" for containers in the first production alignment. Instead, they used the basic fleet tool from CoreOS to deploy their containers. (They did build a tool called GGN, which they’ve open-sourced, to make it more manageable for their system engineers to use.)

+ Still, the team knew that they’d want more orchestration. "Our tool was doing a pretty good job, but at some point you want to give more autonomy to the developer team," Lallemand says. "We also realized that we don’t want to be the single point of contact for developers when they want to launch new services." By the summer of 2016, they found their answer in Kubernetes, which had just begun supporting rkt implementation.

+ After discussing their needs with their contacts at CoreOS and Google, they were convinced that Kubernetes would work for BlaBlaCar. "We realized that there was a really strong community around it, which meant we would not have to maintain a lot of tools of our own," says Lallemand. "It was better if we could contribute to some bigger project like Kubernetes." They also started using Prometheus, as they were looking for "service-oriented monitoring that could be updated nightly." Production on Kubernetes began in December 2016. "We like to do crazy stuff around Christmas," he adds with a laugh.

+ BlaBlaCar now has about 3,000 pods, with 1200 of them running on Kubernetes. Lallemand leads a "foundations team" of 25 members who take care of the networks, databases and systems for about 100 developers. There have been some challenges getting to this point. "The rkt implementation is still not 100 percent finished," Lallemand points out. "It’s really good, but there are some features still missing. We have questions about how we do things with stateful services, like databases. We know how we will be migrating some of the services; some of the others are a bit more complicated to deal with. But the Kubernetes community is making a lot of progress on that part."

+ The team is particularly happy that they’re now able to plan capacity better in the company’s data center. "We have fewer constraints since we have this abstraction between the services and the hardware we run on," says Lallemand. "If we lose a server because there’s a hardware problem on it, we just move the containers onto another server. It’s much more efficient. We do that by just changing a line in the configuration file. And with Kubernetes, it should be automatic, so we would have nothing to do." +
+
+ +
+
+ "If we lose a server because there’s a hardware problem on it, we just move the containers onto another server. It’s much more efficient. We do that by just changing a line in the configuration file. With Kubernetes, it should be automatic, so we would have nothing to do." +
+
+ +
+
+ And these advances ultimately trickle down to BlaBlaCar’s users. "We have improved availability overall on our website," says Lallemand. "When you’re switching to this cloud-native model with running everything in containers, you have to make sure that you can at any moment reboot a server or a data container without any downtime, without losing traffic. So now our infrastructure is much more resilient and we have better availability than before."

+ Within BlaBlaCar’s technology department, the cloud-native journey has created some profound changes. Lallemand thinks that the regular meetings during the conception stage and the training sessions during implementation helped. "After that everybody took part in the migration process," he says. "Then we split the organization into different ‘tribes’—teams that gather developers, product managers, data analysts, all the different jobs, to work on a specific part of the product. Before, they were organized by function. The idea is to give all these tribes access to the infrastructure directly in a self-service way without having to ask. These people are really autonomous. They have responsibility of that part of the product, and they can make decisions faster."

+ This DevOps transformation turned out to be a positive one for the company’s staffers. "The team was very excited about the DevOps transformation because it was new, and we were working to make things more reliable, more future-proof," says Lallemand. "We like doing things that very few people are doing, other than the internet giants."

+ With these changes already making an impact, BlaBlaCar is looking to split up more and more of its application into services. "I don’t say microservices because they’re not so micro," Lallemand says. "If we can split the responsibilities between the development teams, it would be easier to manage and more reliable, because we can easily add and remove services if one fails. You can handle it easily, instead of adding a big monolith that we still have."

+ When Lallemand speaks to other European companies curious about what BlaBlaCar has done with its infrastructure, he tells them to come along for the ride. "I tell them that it’s such a pleasure to deal with the infrastructure that we have today compared to what we had before," he says. "They just need to keep in mind their real motive, whether it’s flexibility in development or reliability or so on, and then go step by step towards reaching those objectives. That’s what we’ve done. It’s important not to do technology for the sake of technology. Do it for a purpose. Our focus was on helping the developers." +
+
diff --git a/case-studies/golfnow.html b/case-studies/golfnow.html index 1d0395aad1..d2e3eb0bee 100644 --- a/case-studies/golfnow.html +++ b/case-studies/golfnow.html @@ -56,7 +56,7 @@ css: /css/style_golfnow.css

The path to those stellar results began in late 2014. In order to support GolfNow’s global growth, the team decided that the company needed to have multiple data centers and the ability to quickly and easily re-route traffic as needed. "From there we knew that we needed to go in a direction of breaking things apart, microservices, and containerization," says Sheriff. "At the time we were trying to get away from C#.NET and SQL Server since it didn’t run very well on Linux, where everything container was running smoothly."

- To that end, the team shifted to working with Node.js, the open-source, cross-platform JavaScript runtime environment for developing tools and applications, and MongoDB, the open-source database program. At the time, Docker, the platform for deploying applications in containers, was still new. But once the team began experimenting with it, Sheriff says, "we realized that was the way we wanted to go, especially since that’s the way the industry is heading." + To that end, the team shifted to working with Node.js, the open-source, cross-platform JavaScript runtime environment for developing tools and applications, and MongoDB, the open-source database program. At the time, Docker, the platform for deploying applications in containers, was still new. But once the team began experimenting with it, Sheriff says, "we realized that was the way we wanted to go, especially since that’s the way the industry is heading."
diff --git a/case-studies/index.html b/case-studies/index.html index 72d97413c0..8e91ba27d1 100644 --- a/case-studies/index.html +++ b/case-studies/index.html @@ -14,6 +14,12 @@ cid: caseStudies
+
+ blablacar +

"[With Kubernetes] our infrastructure is much more resilient and we have better availability than before."

+ + Read about BlaBlaCar +
peardeck

"In terms of the cloud, Kubernetes and Prometheus have so much to offer."

@@ -32,12 +38,6 @@ cid: caseStudies Read about Wink
-
- Ancestry -

"Kubernetes saved our time tremendously; it’s an enabler. It really is incredible."

- - Read about Ancestry.com -
@@ -61,6 +61,7 @@ cid: caseStudies
Amadeus Ancestry.com + BlaBlaCar box Buffer CCP Games diff --git a/case-studies/peardeck.html b/case-studies/peardeck.html index 18009d5e64..e19925c024 100644 --- a/case-studies/peardeck.html +++ b/case-studies/peardeck.html @@ -26,7 +26,7 @@ css: /css/style_peardeck.css

Solution

- In 2016, the company began moving their code from Heroku to Docker containers running on Google Container Engine, orchestrated by Kubernetes and monitored with Prometheus. + In 2016, the company began moving their code from Heroku to Docker containers running on Google Kubernetes Engine, orchestrated by Kubernetes and monitored with Prometheus.

Impact

@@ -51,22 +51,22 @@ But once it launched, the user base began growing steadily at a rate of 30 perce

On top of that, many of Pear Deck’s customers are behind government firewalls and connect through Firebase, not Pear Deck’s servers, making troubleshooting even more difficult.

-The team began looking around for another solution, and finally decided in early 2016 to start moving the app from Heroku to Docker containers running on Google Container Engine, orchestrated by Kubernetes and monitored with Prometheus. +The team began looking around for another solution, and finally decided in early 2016 to start moving the app from Heroku to Docker containers running on Google Kubernetes Engine, orchestrated by Kubernetes and monitored with Prometheus.
- "When it became clear that Google Container Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch. + "When it became clear that Google Kubernetes Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch.
- They had considered other options like Google’s App Engine (which they were already using for one service) and Amazon’s Elastic Compute Cloud (EC2), while experimenting with running one small service that wasn’t accessible to the Internet in Kubernetes. "When it became clear that Google Container Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch. "We didn’t really consider Terraform and the other competitors because the abstractions offered by Kubernetes just jumped off the page to us."

+ They had considered other options like Google’s App Engine (which they were already using for one service) and Amazon’s Elastic Compute Cloud (EC2), while experimenting with running one small service that wasn’t accessible to the Internet in Kubernetes. "When it became clear that Google Kubernetes Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch. "We didn’t really consider Terraform and the other competitors because the abstractions offered by Kubernetes just jumped off the page to us."

Once the team started porting its Heroku apps into Kubernetes, which was "super easy," he says, the impact was immediate. "Before, to make a new version of the app meant going to Heroku and reconfiguring 10 new services, so basically no one was willing to do it, and we never staged things," he says. "Now we can deploy our exact same configuration in lots of different clusters in 30 seconds. We have a full set up that’s always running, and then any of our developers or designers can stage new versions with one command, including their recent changes. We stage all the time now, and everyone stopped talking about how cool it is because it’s become invisible how great it is."

- Along with Kubernetes came Prometheus. "Until pretty recently we didn’t have any kind of visibility into aggregate server metrics or performance," says Eynon-Lynch. The team had tried to use GKE’s Stackdriver monitoring, but had problems making it work, and considered New Relic. When they started looking at Prometheus in the fall of 2016, "the fit between the abstractions in Prometheus and the way we think about how our system works, was so clear and obvious," he says.

+ Along with Kubernetes came Prometheus. "Until pretty recently we didn’t have any kind of visibility into aggregate server metrics or performance," says Eynon-Lynch. The team had tried to use Google Kubernetes Engine’s Stackdriver monitoring, but had problems making it work, and considered New Relic. When they started looking at Prometheus in the fall of 2016, "the fit between the abstractions in Prometheus and the way we think about how our system works, was so clear and obvious," he says.

The integration with Kubernetes made set-up easy. Once Helm installed Prometheus, "We started getting a graph of the health of all our Kubernetes nodes and pods immediately. I think we were pretty hooked at that point," Eynon-Lynch says. "Then we got our own custom instrumentation working in 15 minutes, and had an actively updated count of requests that we could do, rate on and get a sense of how many users are connected at a given point. And then it was another hour before we had alarms automatically showing up in our Slack channel. All that was in one afternoon. And it was an afternoon of gasping with delight, basically!"
diff --git a/cn/_includes/code.html b/cn/_includes/code.html new file mode 100644 index 0000000000..83a702785d --- /dev/null +++ b/cn/_includes/code.html @@ -0,0 +1,26 @@ +{% capture samplecode %}{% include_relative {{include.file}} %}{% endcapture %} +{% if include.k8slink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/kubernetes/blob/{{page.githubbranch}}{{include.k8slink}}{% endcapture %}{% endif %} +{% if include.ghlink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/website/{{page.docsbranch}}{{include.ghlink}}{% endcapture %}{% endif %} +{% capture mysample %} +```{{include.language}} +{{ samplecode | raw | strip }} +``` +{: id="{{include.file | handleize}}"} +{% endcapture %} + + + + + + + + + + + +
+ {% if ghlink %}{% endif %} + {{include.file}} + {% if ghlink %}{% endif %} + +
{{ mysample | markdownify }}
diff --git a/cn/_includes/task-tutorial-prereqs.md b/cn/_includes/task-tutorial-prereqs.md new file mode 100644 index 0000000000..a9cf90d265 --- /dev/null +++ b/cn/_includes/task-tutorial-prereqs.md @@ -0,0 +1,4 @@ +You need to have a Kubernetes cluster, and the kubectl command-line tool must +be configured to communicate with your cluster. If you do not already have a +cluster, you can create one by using +[Minikube](/docs/getting-started-guides/minikube). diff --git a/cn/_includes/templates/task.md b/cn/_includes/templates/task.md new file mode 100644 index 0000000000..e76cb7b117 --- /dev/null +++ b/cn/_includes/templates/task.md @@ -0,0 +1,55 @@ +{% if overview %} + +{{ overview }} + +{% else %} + +{% include templates/_errorthrower.md missing_block='overview' purpose='states, in one or two sentences, the purpose of this document' %} + +{% endif %} + + +* TOC +{: toc} + + +{% if prerequisites %} + +## Before you begin + +{{ prerequisites }} + +{% else %} + +{% include templates/_errorthrower.md missing_block='prerequisites' heading='Before you begin' purpose='lists action prerequisites and knowledge prerequisites' %} + +{% endif %} + + +{% if steps %} + +{{ steps }} + +{% else %} + +{% include templates/_errorthrower.md missing_block='steps' purpose='lists a sequence of numbered steps that accomplish the task.' %} + +{% endif %} + + +{% if discussion %} + +{{ discussion }} + +{% else %} + +{% endif %} + + +{% if whatsnext %} + +## What's next + +{{ whatsnext }} + +{% endif %} diff --git a/cn/_includes/templates/tutorial.md b/cn/_includes/templates/tutorial.md new file mode 100644 index 0000000000..b4c1faa0f1 --- /dev/null +++ b/cn/_includes/templates/tutorial.md @@ -0,0 +1,68 @@ +{% if overview %} + +{{ overview }} + +{% else %} + +{% include templates/_errorthrower.md missing_block='overview' purpose='states, in one or two sentences, the purpose of this document' %} + +{% endif %} + + +* TOC +{: toc} + + +{% if objectives %} + +## Objectives + +{{ objectives }} + +{% else %} + +{% include templates/_errorthrower.md missing_block='objectives' heading='Objectives' purpose='lists the objectives for this tutorial.' %} + +{% endif %} + + +{% if prerequisites %} + +## Before you begin + +{{ prerequisites }} + +{% else %} + +{% include templates/_errorthrower.md missing_block='prerequisites' heading='Before you begin' purpose='lists action prerequisites and knowledge prerequisites' %} + +{% endif %} + + +{% if lessoncontent %} + +{{ lessoncontent }} + +{% else %} + +{% include templates/_errorthrower.md missing_block='lessoncontent' purpose='provides the lesson content for this tutorial.' %} + +{% endif %} + + +{% if cleanup %} + +## Cleaning up + +{{ cleanup }} + +{% endif %} + + +{% if whatsnext %} + +## What's next + +{{ whatsnext }} + +{% endif %} diff --git a/cn/docs/admin/authorization/abac.md b/cn/docs/admin/authorization/abac.md index 1db4103ed8..bdf17e9c82 100644 --- a/cn/docs/admin/authorization/abac.md +++ b/cn/docs/admin/authorization/abac.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - erictune - lavalamp - deads2k diff --git a/cn/docs/admin/authorization/index.md b/cn/docs/admin/authorization/index.md index fdf788fd1c..ff878b6da4 100644 --- a/cn/docs/admin/authorization/index.md +++ b/cn/docs/admin/authorization/index.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - erictune - lavalamp - deads2k diff --git a/cn/docs/admin/authorization/webhook.md b/cn/docs/admin/authorization/webhook.md new file mode 100644 index 0000000000..5c4f7a13e4 --- /dev/null +++ b/cn/docs/admin/authorization/webhook.md @@ -0,0 +1,142 @@ +--- +approvers: +- erictune +- lavalamp +- deads2k +- liggitt +title: Webhook Mode +--- + +{% capture overview %} +WebHook 是一种 HTTP 回调:某些条件下触发的 HTTP POST 请求;通过 HTTP POST 发送的简单事件通知。一个基于 web 应用实现的 WebHook 会在特定事件发生时把消息发送给特定的 URL 。 +{% endcapture %} + +{% capture body %} +具体来说,当在判断用户权限时,`Webhook` 模式会使 Kubernetes 查询外部的 REST 服务。 + +## 配置文件格式 + +`Webhook` 模式需要一个 HTTP 配置文件,通过 `--authorization-webhook-config-file=SOME_FILENAME` 的参数声明。 + +配置文件的格式使用 [kubeconfig](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)。 +在文件中,"users" 代表着 API 服务器的 webhook,而 "cluster" 代表着远程服务。 + +使用 HTTPS 客户端认证的配置例子: + +```yaml +# clusters 代表远程服务。 +clusters: + - name: name-of-remote-authz-service + cluster: + certificate-authority: /path/to/ca.pem # 对远程服务进行身份认证的CA。 + server: https://authz.example.com/authorize # 远程服务的查询 URL. 必须使用 'https'。 + +# users 代表 API 服务器的 webhook 配置. +users: + - name: name-of-api-server + user: + client-certificate: /path/to/cert.pem # webhook plugin 使用的 cert。 + client-key: /path/to/key.pem # cert 所对应的 key。 + +# kubeconfig 文件必须有 context 。 需要提供一个给 API 服务器。 +current-context: webhook +contexts: +- context: + cluster: name-of-remote-authz-service + user: name-of-api-server + name: webhook +``` + + +## 请求载荷 + +在做认证决策时,API 服务器会 POST 一个 JSON 序列化的 api.authorization.v1beta1.SubjectAccessReview 对象来描述这个动作。这个对象包含了描述用户请求的字段,同时也包含了需要被访问资源或者请求特征的具体信息。 + +需要注意的是 webhook API 对象与其他 Kubernetes API 对象一样都同样都服从 [版本兼容规则](/docs/api/) 。 +实施人员应该了解 beta 对象的更宽松的兼容性承诺,同时确认请求的 "apiVersion" 字段以确保能被正确地反序列化。 +此外,API 服务器还必须启用 `authorization.k8s.io/v1beta1` API 扩展组(`--runtime-config=authorization.k8s.io/v1beta1=true`)。 + + +一个请求内容的例子: + +```json +{ + "apiVersion": "authorization.k8s.io/v1beta1", + "kind": "SubjectAccessReview", + "spec": { + "resourceAttributes": { + "namespace": "kittensandponies", + "verb": "get", + "group": "unicorn.example.org", + "resource": "pods" + }, + "user": "jane", + "group": [ + "group1", + "group2" + ] + } +} +``` + +远程服务被预期能填写请求和反馈的 SubjectAccessReviewStatus 字段,无论是允许访问还是拒绝访问。 +反馈内容的 "spec" 字段是被忽略的,也是可以被省略的。当请求是被允许的时候,返回的响应如下例所示: + +```json +{ + "apiVersion": "authorization.k8s.io/v1beta1", + "kind": "SubjectAccessReview", + "status": { + "allowed": true + } +} +``` + + +如拒绝,远程服务器会返回: + +```json +{ + "apiVersion": "authorization.k8s.io/v1beta1", + "kind": "SubjectAccessReview", + "status": { + "allowed": false, + "reason": "user does not have read access to the namespace" + } +} +``` + + +对于非资源的路径访问是这么发送的: + +```json +{ + "apiVersion": "authorization.k8s.io/v1beta1", + "kind": "SubjectAccessReview", + "spec": { + "nonResourceAttributes": { + "path": "/debug", + "verb": "get" + }, + "user": "jane", + "group": [ + "group1", + "group2" + ] + } +} +``` + + +非资源类的路径包括:`/api`, `/apis`, `/metrics`, `/resetMetrics`, +`/logs`, `/debug`, `/healthz`, `/swagger-ui/`, `/swaggerapi/`, `/ui`, and +`/version`。 客户端需要访问 `/api`, `/api/*`, `/apis`, `/apis/*`, 和 `/version` 以便 +能发现服务器上有什么资源和版本。对于其他非资源类的路径访问在没有 REST API 访问限制的情况下拒绝。 + + +更多信息可以参考 uthorization.v1beta1 API 对象和 +[webhook.go](https://git.k8s.io/kubernetes/staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go). + +{% endcapture %} + +{% include templates/concept.md %} diff --git a/cn/docs/admin/bootstrap-tokens.md b/cn/docs/admin/bootstrap-tokens.md new file mode 100644 index 0000000000..11ce1c53d7 --- /dev/null +++ b/cn/docs/admin/bootstrap-tokens.md @@ -0,0 +1,137 @@ +--- +approvers: +- jbeda +title: 使用启动引导令牌(Bootstrap Tokens)认证 +--- + +* TOC +{:toc} + +## 概述 + +启动引导令牌是一种简单的持有者令牌(Bearer Token),这种令牌是在新建集群或者在现有集群中添加新节点时使用的。 +它被设计成能够支持 [`kubeadm`](/docs/admin/kubeadm/),但是也可以被用在其他的案例中以便用户在 +不使用 `kubeadm` 的情况下启动集群。它也被设计成可以通过 RBAC 策略,结合 [Kubelet TLS +Bootstrapping](/docs/admin/kubelet-tls-bootstrapping/) 系统进行工作。 + +启动引导令牌被定义成一个特定类型的 secrets(`bootstrap.kubernetes.io/token`),并存在于 +`kube-system` 命名空间中。然后这些 secrets 会被 API 服务器上的启动引导的认证器读取。 +控制器管理器中的控制器TokenCleaner能够删除过期的令牌。在节点发现的过程中Kubernetes会使用特殊的ConfigMap对象。 +控制器管理器中的BootstrapSigner控制器也会使用启动引导令牌为这类对象生成签名信息。 + +目前,启动引导令牌处于 **alpha** 阶段,但是预期也不会有大的突破性变化。 + +## 令牌格式 + +启动引导令牌使用 `abcdef.0123456789abcdef` 的形式。 +更加规范地说,它们必须符合正则表达式 `[a-z0-9]{6}\.[a-z0-9]{16}`。 + +令牌的第一部分是 "Token ID" ,它是公共信息。用于引用某个令牌,并确保不会泄露认证所使用的秘密信息。 +第二部分是 "令牌秘密(Token Secret)",它应该被共享给收信的第三方。 + +## 启用启动引导令牌 + +所有与启动引导令牌相关的特性在 Kubernetes v1.6 版本中默认都是禁用的。 + +你可以在 API 服务器上通过 `--experimental-bootstrap-token-auth` 参数启用启动引导令牌。 +你可以设置控制管理器的 `--controllers` 参数来启用启动引导令牌相关的控制器,例如 `--controllers=*,tokencleaner,bootstrapsigner` 。 +在使用 `kubeadm` 时,这是自动完成的。 + +HTTPS 调用中的令牌是这样使用的: + +```http +Authorization: Bearer 07401b.f395accd246ae52d +``` + +## 启动引导令牌的密文格式 + +每个合法的令牌背后对应着 `kube-system` 命名空间中的某个 Secret 对象。 +你可以从 [这里](https://git.k8s.io/community/contributors/design-proposals/bootstrap-discovery.md) 找到完整设计文档。 + +这是 secret 看起来的样子。注意,`base64(string)` 表示应该通过 base64 对值进行编码。 +这里使用的是未解码的版本以便于阅读。 + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: bootstrap-token-07401b + namespace: kube-system +type: bootstrap.kubernetes.io/token +data: + description: base64(The default bootstrap token generated by 'kubeadm init'.) + token-id: base64(07401b) + token-secret: base64(f395accd246ae52d) + expiration: base64(2017-03-10T03:22:11Z) + usage-bootstrap-authentication: base64(true) + usage-bootstrap-signing: base64(true) +``` + +secret 的类型必须是 `bootstrap.kubernetes.io/token` ,而且名字必须是 `bootstrap-token-`。 +`description` 是人类可读的描述,而不应该是机器可读的信息。令牌 ID 和 Secret 是包含在数据字典中的。 + +`usage-bootstrap-*` 成员表示这个 secret 的用途。启用时,值必须设置为 `true`。 + +`usage-bootstrap-authentication` 表示令牌可以用于 API 服务器的认证。认证器会以 +`system:bootstrap:` 认证。它被包含在 `system:bootstrappers` 组中。 +命名和组是故意受限制的,以防止用户在启动引导后再使用这些令牌。 + +`usage-bootstrap-signing` 表示令牌应该被用于 `cluster-info` ConfigMap 的签名,就像下面描述的那样。 + +`expiration` 数据成员显示了令牌在失效后到现在的时间。这是遵循 RFC3339 进行编码的 UTC 时间。 +TokenCleaner 控制器会删除过期的令牌。 + +## 使用 `kubeadm` 管理令牌 + +你可以使用 `kubeadm` 工具管理正在运行集群的令牌。它会从 `kubeadm` 创建的集群(`/etc/kubernetes/admin.conf`) +自动抓取默认管理员密码。你可以通过参数 `--kubeconfig` 对下面命令指定一个另外的 kubeconfig 文件抓取密码。 + +* `kubeadm token list` 列举了令牌,同时显示了它们的过期时间和用途。 +* `kubeadm token create` 创建一个新令牌。 + * `--description` 设置新令牌的描述。 + * `--ttl duration` 设置令牌从 "现在" 起到过期时间的差值。 + 默认是 0 ,也就是不过期。 + * `--usages` 设置令牌被使用的方式。默认是 `signing,authentication`。用途在上面已经描述。 +* `kubeadm token delete |.` 删除令牌。 + 令牌可以只用 ID 来确认,也可以用整个令牌的值。如果只用 ID 的情况下,密文不匹配的令牌也会被删除。 + +### ConfigMap签名 + +除了认证之外,令牌可以用于签名 ConfigMap。这在集群启动过程的早期,在客户端信任 API 服务器之前被使用。 +被签名的 ConfigMap 可以通过共享令牌被认证。 + +被签名的 ConfigMap 是 `cluster-info`,存在于 `kube-public` 命名空间中。 +典型的工作流中,客户端在未经认证和忽略 TLS 报错的状态下读取这个 ConfigMap。 +通过 ConfigMap 中嵌入的签名校验 ConfigMap 的载荷。 + +ConfigMap 会是这个样子的: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: cluster-info + namespace: kube-public +data: + jws-kubeconfig-07401b: eyJhbGciOiJIUzI1NiIsImtpZCI6IjA3NDAxYiJ9..tYEfbo6zDNo40MQE07aZcQX2m3EB2rO3NuXtxVMYm9U + kubeconfig: | + apiVersion: v1 + clusters: + - cluster: + certificate-authority-data: + server: https://10.138.0.2:6443 + name: "" + contexts: [] + current-context: "" + kind: Config + preferences: {} + users: [] +``` + +ConfigMap 的 `kubeconfig` 成员是一个填好了集群信息的配置文件。 +这里主要交换的信息是 `certificate-authority-data`。在将来可能会有扩展。 + +签名是一个 JWS 签名,使用了 "detached" 模式。为了检验签名,用户应该按照 JWS 规则 +(base64 编码而忽略结尾的 `=`)对 `kubeconfig` 的载荷进行编码。完成编码的载荷会被通过插入 JWS 并存在于两个点的中间 +,用于形成一个完整的 JWS。可以使用令牌的完整信息(比如 `07401b.f395accd246ae52d`)作为共享密钥, +通过 `HS256` 方式 (HMAC-SHA256) 对 JWS 进行校验。 用户 _必须_ 确保使用了 HS256。 diff --git a/cn/docs/admin/cluster-large.md b/cn/docs/admin/cluster-large.md new file mode 100644 index 0000000000..9f6b33c94f --- /dev/null +++ b/cn/docs/admin/cluster-large.md @@ -0,0 +1,122 @@ +--- +approvers: +- davidopp +- lavalamp +title: 创建大规模集群 +--- + +## 支持规格 + +在 {{page.version}},Kubernetes支持最多5000节点规模的集群。 更具体地说,我们支持满足以下 *所有* 标准的配置: + +* 不超过5000节点 +* 总共不超过15000个pod +* 总共不超过300000个容器 +* 每个节点不超过100个pod + +
+ +* TOC +{:toc} + +## 创建 + +集群是一组运行Kubernetes代理组件的节点(物理或虚拟机),它们被 "master" (集群管理平面)所管理。 + +一般来说,集群的节点数量通过平台相关的 `config-default.sh` 文件中的 `NUM_NODES` 值来控制,(例如,详见 [GCE's `config-default.sh`](http://releases.k8s.io/{{page.githubbranch}}/cluster/gce/config-default.sh))。 + +对很多云提供商来说,单纯地修改`NUM_NODES` 为一个非常大的值,可能会导致集群的创建脚本失败。 例如,在GCE中部署时,会因配额不足,导致集群启动失败。 + +当建立一个大型的Kubernetes集群,以下几个问题必须考虑。 + +### 配额问题 + +为了避免出现配额问题,当创建包含大量节点的集群时,考虑: + +* 提高相关配额,如CPU,IP等。 + * 如,在 [GCE](https://cloud.google.com/compute/docs/resource-quotas)中,你可能需要提高以下资源的配额: + * CPU + * 虚机实例 + * 磁盘 + * 使用的IP地址 + * 防火墙规则 + * 转发规则 + * 路由 + * 对象池 +* 设置创建脚本,使其以较小的规模分批次拉起新的节点,并在其间设置一定的等待时间,因为一些云供应商可能对虚机的创建速率进行了限制。 + +### Etcd存储 + +为了提升大规模集群的性能,我们将事件对象存储到独立的etcd实例中。 + +创建集群时,当前的salt脚本: + +* 启动并配置额外的etcd实例 +* 配置api-server,将该etcd实例用于事件对象的存储 + +### 管理节点和组件的规格 + +在 GCE/Google Kubernetes Engine 或 AWS平台中, `kube-up` 会根据集群的节点规模合理地设置管理节点的规格。 在其他云平台上,用户需要手动配置。 作为参考,GCE使用的规格为: + +* 1-5 节点: n1-standard-1 +* 6-10 节点: n1-standard-2 +* 11-100 节点: n1-standard-4 +* 101-250 节点: n1-standard-8 +* 251-500 节点: n1-standard-16 +* 500节点以上: n1-standard-32 + +AWS使用的规格为: + +* 1-5 节点: m3.medium +* 6-10 节点: m3.large +* 11-100 节点: m3.xlarge +* 101-250 节点: m3.2xlarge +* 251-500 节点: c4.4xlarge +* 500节点以上: c4.8xlarge + +注意,管理节点的规格只会在集群创建时进行设置,后续集群规模发生变化 (如 手动增删节点或集群自动扩缩容)后不会再调整。 + +### 插件的资源占用 + +为防止 [集群插件](https://releases.k8s.io/{{page.githubbranch}}/cluster/addons) 耗尽节点资源引起内存泄漏或其他资源问题, Kubernetes 设置了插件容器资源的上限,来限制其对CPU和内存资源的占用 (参考 PR [#10653](http://pr.k8s.io/10653/files) 和 [#10778](http://pr.k8s.io/10778/files))。 + +例如: + +```yaml + containers: + - name: fluentd-cloud-logging + image: gcr.io/google_containers/fluentd-gcp:1.16 + resources: + limits: + cpu: 100m + memory: 200Mi +``` + +除 Heapster 外,这些限制是静态的,基于4个节点规模的集群上运行的插件所采集的数据 (详见 [#10335](http://issue.k8s.io/10335#issuecomment-117861225))。 而实际大规模集群中插件所消耗的资源要多得多 (详见 [#5880](http://issue.k8s.io/5880#issuecomment-113984085))。 所以如果部署大规模集群时不对这些值进行调整,插件可能会因为资源占用达到上限而不断被杀死。 + +为了避免集群插件的资源问题,创建多节点的集群时,考虑以下几点: + +* 当扩大集群规模时,如果涉及,相应扩大以下插件的内存和CPU限制 (通过一个实例处理整个集群,因此其内存和CPU使用量往往与集群的大小/负载成比例增长): + * [InfluxDB 和 Grafana](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml) + * [kubedns, dnsmasq, 和 sidecar](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/dns/kubedns-controller.yaml.in) + * [Kibana](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/kibana-controller.yaml) +* 当扩大集群规模时,如果涉及,相应扩大以下插件副本数 (每个组件有多个副本,因此增加副本将有助于处理增加的负载,但是,由于每个副本的负载也略有增加,也应考虑提高CPU /内存上限): + * [elasticsearch](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/es-controller.yaml) +* 当扩大集群规模时,如果涉及,略微扩大以下插件的内存和CPU限制 (每个节点一个副本, 但是CPU/内存使用随集群的大小/负载增长变化不明显): + * [FluentD with ElasticSearch Plugin](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/fluentd-es-ds.yaml) + * [FluentD with GCP Plugin](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-gcp/fluentd-gcp-ds.yaml) + +Heapster的资源限制是基于集群的初始规模动态设置的 (参考 [#16185](http://issue.k8s.io/16185) +和 [#22940](http://issue.k8s.io/22940))。 当发现Heapster资源耗尽,应考虑调整计算Heapster内存请求的公式 (参考上述PR)。 + +关于如何检测插件是否达到资源上限 参考 [计算资源的故障排除章节](/docs/concepts/configuration/manage-compute-resources-container/#troubleshooting)。 + +[将来](http://issue.k8s.io/13048),我们期望基于集群规模来设置集群插件的资源限制,并且在集群规模增长或缩小时能够动态调整。 +欢迎提出PR来实现这些特性。 + +### 启动时允许部分失败 + +因为种种原因 (详见 [#18969](https://github.com/kubernetes/kubernetes/issues/18969)),在 `NUM_NODES` 值很大的情况下执行 +`kube-up.sh`, 可能因为其中一小部分节点没有正常启动而失败。 +这时我们有两种选择:重启集群 (`kube-down.sh` 然后再 `kube-up.sh`),或者在执行 `kube-up.sh`之前, +将环境变量 `ALLOWED_NOTREADY_NODES` 设置为合适的值。 这将允许 `kube-up.sh` 以少于 `NUM_NODES` 的节点数量启动集群。 依据失败的具体原因,另外的节点可能在后面加入集群,或者集群节点数量将保持在 `NUM_NODES - ALLOWED_NOTREADY_NODES`。 diff --git a/cn/docs/admin/high-availability/index.md b/cn/docs/admin/high-availability/index.md index f8d851e236..2994680cfa 100644 --- a/cn/docs/admin/high-availability/index.md +++ b/cn/docs/admin/high-availability/index.md @@ -9,7 +9,7 @@ title: 构建高可用集群 本文描述了如何构建一个高可用(high-availability, HA)的Kubernetes集群。这是一个非常高级的主题。 对于仅希望使用Kubernetes进行试验的用户,推荐使用更简单的配置工具进行搭建,例如: -[Minikube](/docs/getting-started-guides/minikube/),或者尝试使用[Google Container Engine](https://cloud.google.com/container-engine/) 来运行Kubernetes。 +[Minikube](/docs/getting-started-guides/minikube/),或者尝试使用[Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine/) 来运行Kubernetes。 此外,当前在我们的端到端(e2e)测试环境中,没有对Kubernetes高可用的支持进行连续测试。我们将会增加这个连续测试项,但当前对单节点master的安装测试得更加严格。 diff --git a/cn/docs/admin/kubelet-authentication-authorization.md b/cn/docs/admin/kubelet-authentication-authorization.md index 6d26b1c670..03ab5fd64b 100644 --- a/cn/docs/admin/kubelet-authentication-authorization.md +++ b/cn/docs/admin/kubelet-authentication-authorization.md @@ -36,6 +36,8 @@ To enable API bearer tokens (including service account tokens) to be used to aut * start the kubelet with the `--authentication-token-webhook`, `--kubeconfig`, and `--require-kubeconfig` flags * the kubelet calls the `TokenReview` API on the configured API server to determine user information from bearer tokens +**Note:** The flag `--require-kubeconfig` is deprecated as of Kubernetes 1.8, this will be removed in a future version. You no longer need to use `--require-kubeconfig` in Kubernetes 1.8. + ## Kubelet authorization Any request that is successfully authenticated (including an anonymous request) is then authorized. The default authorization mode is `AlwaysAllow`, which allows all requests. @@ -52,6 +54,8 @@ To subdivide access to the kubelet API, delegate authorization to the API server * start the kubelet with the `--authorization-mode=Webhook`, `--kubeconfig`, and `--require-kubeconfig` flags * the kubelet calls the `SubjectAccessReview` API on the configured API server to determine whether each request is authorized +**Note:** The flag `--require-kubeconfig` is deprecated as of Kubernetes 1.8, this will be removed in a future version. You no longer need to use `--require-kubeconfig` in Kubernetes 1.8. + The kubelet authorizes API requests using the same [request attributes](/docs/admin/authorization/#request-attributes) approach as the apiserver. The verb is determined from the incoming request's HTTP verb: diff --git a/cn/docs/admin/multiple-zones.md b/cn/docs/admin/multiple-zones.md index 4eac17c49f..daf2d53d86 100644 --- a/cn/docs/admin/multiple-zones.md +++ b/cn/docs/admin/multiple-zones.md @@ -10,13 +10,13 @@ title: 多区域运行 Kubernetes 从v1.2开始支持将集群运行在多个故障域中。 (GCE 中称其为 "区(Zones)", AWS 中称其为 "可用区(Availability Zones)",这里我们也称其为 "区")。 -它是广泛意义上的集群联邦特性的轻量级版本 (之前被称为 ["Ubernetes"](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/federation/federation.md))。 +它是广泛意义上的集群联邦特性的轻量级版本 (之前被称为 ["Ubernetes"](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/multicluster/federation.md))。 完整的集群联邦能够将多个分别运行在不同区或云供应商(或本地数据中心)的集群集中管理。 然而,很多用户只是希望通过将单一云供应商上的Kubernetes集群运行在多个区域,来提高集群的可用性, 这就是1.2版本中提供的对多区域的支持。 (之前被称为 "Ubernetes Lite")。 -多区域的支持是有明确限制的: Kubernetes集群能够运行在多个区,但必须在同一个地域内 (云供应商也须一致)。 +多区域的支持是有明确限制的: Kubernetes集群能够运行在多个区,但必须在同一个地域内 (云供应商也须一致)。 目前只有GCE和AWS自动支持 (尽管在其他云甚至裸机上,也很容易通过为节点和卷添加合适的标签来实现类似的支持)。 @@ -59,7 +59,7 @@ Kubernetes 从v1.2开始支持将集群运行在多个故障域中。 ## 演练 -接下来我们将介绍如何同时在 GCE 和 AWS 上创建和使用多区域的集群。 为此,你需要创建一个完整的集群 +接下来我们将介绍如何同时在 GCE 和 AWS 上创建和使用多区域的集群。 为此,你需要创建一个完整的集群 (指定 `MULTIZONE=true`),然后再次执行 `kube-up`(指定 `KUBE_USE_EXISTING_MASTER=true`)来添加其他区域的节点。 ### 创建集群 diff --git a/cn/docs/admin/node-conformance.md b/cn/docs/admin/node-conformance.md new file mode 100644 index 0000000000..6be4ba50a0 --- /dev/null +++ b/cn/docs/admin/node-conformance.md @@ -0,0 +1,84 @@ +--- +approvers: +- Random-Liu +title: 节点设置校验 +--- + +* TOC +{:toc} + +## 节点合规性测试 + +*节点合规性测试* 是一个容器化的测试框架,提供了针对节点的系统验证和功能测试。 该测试主要检测节点是否满足 Kubernetes 的最低要求,通过检测的节点有资格加入 Kubernetes 集群。 + +## 限制 + +在 Kubernetes 1.5版本中,节点合规性测试存在以下限制: + +* 节点合规性测试只支持 Docker 作为容器运行时环境。 + +## 节点的前提条件 + +为运行节点合规性测试,节点必须满足与标准的 Kubernetes 节点同样的前提条件。最基本地, 节点应安装以下组件: + +* 容器运行时 (Docker) +* Kubelet + +## 运行节点合规性测试 + +执行以下步骤来运行节点合规性测试: + +1. 因为测试框架会启动一个本地的 master 来测试 Kubelet, +所以将 Kubelet 指向本机 `--api-servers="http://localhost:8080"。 还有一些其他 Kubelet 参数可能需要注意: + * `--pod-cidr`: 如果使用 `kubenet`, 需要为 Kubelet 任意指定一个 CIDR, 例如 `--pod-cidr=10.180.0.0/24`。 + * `--cloud-provider`: 如果使用 `--cloud-provider=gce`,需要移除这个参数来运行测试。 + +2. 执行以下命令来运行节点合规性测试: + +```shell +# $CONFIG_DIR 是 Kubelet 的 manifest 文件路径。 +# $LOG_DIR 是测试结果输出的路径。 +sudo docker run -it --rm --privileged --net=host \ + -v /:/rootfs -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \ + gcr.io/google_containers/node-test:0.2 +``` + +## 针对其他硬件体系结构运行节点合规性测试 + +Kubernetes 也为其他硬件体系结构的系统提供了节点合规性测试的 Docker 镜像: + + Arch | Image | +--------|:-----------------:| + amd64 | node-test-amd64 | + arm | node-test-arm | + arm64 | node-test-arm64 | + +## 运行选定的测试 + +为运行指定的测试,用正则表达式来描述将要运行的测试,并重载 `FOCUS` 环境变量。 + +```shell +sudo docker run -it --rm --privileged --net=host \ + -v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \ + -e FOCUS=MirrorPod \ # 只运行MirrorPod测试 + gcr.io/google_containers/node-test:0.2 +``` + +为跳过指定的测试,用正则表达式来描述将要跳过的测试,并重载 `SKIP` 环境变量。 + +```shell +sudo docker run -it --rm --privileged --net=host \ + -v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \ + -e SKIP=MirrorPod \ # 运行除MirrorPod外的所有测试 + gcr.io/google_containers/node-test:0.2 +``` + +节点合规性测试是[节点端到端测试](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/devel/e2e-node-tests.md)的一个容器化的版本。 +默认情况下, 它会运行所有的合规性测试用例。 + +理论上,只要合理地配置容器和挂载所需的卷,就可以运行任何的节点端到端测试用例。 但是这里 **强烈建议只运行合规性测试**,因为运行非合规性测试需要很多复杂的配置。 + +## 注意事项 + +* 测试会在节点上遗留一些Docker镜像, 包括节点合规性测试本身的镜像,和功能测试相关的镜像。 +* 测试会在节点上遗留一些死的容器。这些容器是在功能测试的过程中创建的。 diff --git a/cn/docs/admin/ovs-networking.md b/cn/docs/admin/ovs-networking.md index 7153f2a7b1..5b4fe7f5f8 100644 --- a/cn/docs/admin/ovs-networking.md +++ b/cn/docs/admin/ovs-networking.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - thockin title: Kubernetes OpenVSwitch GRE/VxLAN 网络 --- diff --git a/cn/docs/admin/service-accounts-admin.md b/cn/docs/admin/service-accounts-admin.md new file mode 100644 index 0000000000..bf3e0783f9 --- /dev/null +++ b/cn/docs/admin/service-accounts-admin.md @@ -0,0 +1,89 @@ +--- +approvers: +- bprashanth +- davidopp +- lavalamp +- liggitt +title: 管理Service Accounts +--- + +*这是一篇针对service accounts(服务账户)的集群管理员指南。 它呈现了 [User Guide to Service Accounts](/docs/user-guide/service-accounts)中的信息。* + +*对授权和用户账户的支持已在规划中,当前并不完备,为了更好地描述service accounts,有时这些不完善的特性也会被提及。* + +## 用户账户与服务账户 + +Kubernetes 区分用户账户和服务账户的概念主要基于以下原因: + + - 用户账户是针对人而言的。 服务账户是针对运行在pod中的进程而言的。 + - 用户账户是全局性的。 其名称在集群各namespace中都是全局唯一的,未来的用户资源不会做namespace隔离, + 服务账户是namespace隔离的。 + - 通常情况下,集群的用户账户可能会从企业数据库进行同步,其创建需要特殊权限,并且涉及到复杂的业务流程。 服务账户创建的目的是为了更轻量,允许集群用户为了具体的任务创建服务账户 (即权限最小化原则)。 + - 对人员和服务账户审计所考虑的因素可能不同。 + - 针对复杂系统的配置可能包含系统组件相关的各种服务账户的定义。 因为服务账户可以定制化地创建,并且有namespace级别的名称,这种配置是很轻量的。 + +## 服务账户的自动化 + +三个独立组件协作完成服务账户相关的自动化: + + - 服务账户准入控制器(Service account admission controller) + - Token控制器(Token controller) + - 服务账户控制器(Service account controller) + +### 服务账户准入控制器 + +对pod的改动通过一个被称为[Admission Controller](/docs/admin/admission-controllers)的插件来实现。它是apiserver的一部分。 +当pod被创建或更新时,它会同步地修改pod。 当该插件处于激活状态(在大多数发行版中都是默认的),当pod被创建或更新时它会进行以下动作: + + 1. 如果该pod没有 `ServiceAccount` 设置,将其 `ServiceAccount` 设为 `default`。 + 2. 保证pod所关联的 `ServiceAccount` 存在,否则拒绝该pod。 + 4. 如果pod不包含 `ImagePullSecrets`设置,那么 将 `ServiceAccount`中的`ImagePullSecrets` 信息添加到pod中。 + 5. 将一个包含用于API访问的token的 `volume` 添加到pod中。 + 6. 将挂载于 `/var/run/secrets/kubernetes.io/serviceaccount` 的 `volumeSource`添加到pod下的每个容器中。 + +### Token管理器 + +Token管理器是controller-manager的一部分。 以异步的形式工作: + +- 检测服务账户的创建,并且创建相应的Secret以支持API访问。 +- 检测服务账户的删除,并且删除所有相应的服务账户Token Secret。 +- 检测Secret的增加,保证相应的服务账户存在,如有需要,为Secret增加token。 +- 检测Secret的删除,如有需要,从相应的服务账户中移除引用。 + +你需要通过 `--service-account-private-key-file` 参数项传入一个服务账户私钥文件至Token管理器。 私钥用于为生成的服务账户token签名。 +同样地,你需要通过 `--service-account-key-file` 参数将对应的公钥传入kube-apiserver。 公钥用于认证过程中的token校验。 + +#### 创建额外的 API tokens + +控制器中有专门的循环来保证每个服务账户中都存在API token对应的Secret。 当需要为服务账户创建额外的API token时,创建一个类型为 `ServiceAccountToken` 的Secret,并在annotation中引用服务账户,控制器会生成token并更新: + +secret.json: + +```json +{ + "kind": "Secret", + "apiVersion": "v1", + "metadata": { + "name": "mysecretname", + "annotations": { + "kubernetes.io/service-account.name": "myserviceaccount" + } + }, + "type": "kubernetes.io/service-account-token" +} +``` + +```shell +kubectl create -f ./secret.json +kubectl describe secret mysecretname +``` + +#### 删除/失效 服务账户token + +```shell +kubectl delete secret mysecretname +``` + +### 服务账户管理器 + +服务账户管理器管理各命名空间下的服务账户,并且保证每个活跃的命名空间下存在一个名为 "default" 的服务账户 diff --git a/cn/docs/concepts/architecture/cloud-controller.md b/cn/docs/concepts/architecture/cloud-controller.md new file mode 100644 index 0000000000..644e3e7d0a --- /dev/null +++ b/cn/docs/concepts/architecture/cloud-controller.md @@ -0,0 +1,248 @@ +title: 云控制器管理器的基本概念 + +## 云控制器管理器 + +云控制器管理器(CCM)这个概念创建的初衷是为了让特定的云服务供应商代码和Kubernetes核心相互独立演化。云控制器管理器与其他主要组件如Kubernetes控制器管理器,API服务器和调度程序同时运行。云控制器管理器也可以作为Kubernetes的插件启动,这种情况下,CCM运行在Kubernetes系统之上。 + +云控制器管理器基于插件机制设计,允许新的云服务供应商通过插件轻松地与Kubernetes集成。目前已经有在Kubernetes上加入新的云服务供应商计划,并为云服务供应商提供从原先的旧模式迁移到新CCM模式的方案。 + +本文讨论了云控制器管理器背后的概念,并提供了相关功能的详细信息。 + +下面这张图描述了没有云控制器管理器的Kubernetes集群架构: + +![无云控制器管理器的 K8s 集群架构](/images/docs/pre-ccm-arch.png) + +## 设计 + +在上图中,Kubernetes和云服务供应商通过几个不同的组件进行了集成,分别是: + +* Kubelet +* Kubernetes 控制管理器 +* Kubernetes API服务器 + +而CCM整合了前三个组件中的所有依赖于云的逻辑,用来创建与云的单点集成。新架构如下图所示: + +![有云控制器管理器的 K8s 集群架构](/images/docs/post-ccm-arch.png) + +## CCM的组件 + +CCM突破了Kubernetes控制器管理器(KCM)的一些功能,并将其作为一个独立的进程运行。具体而言,它打破了KCM中与云相关的控制器。KCM具有以下依赖于云的控制器引擎: + +* 节点控制器 +* 卷控制器 +* 路由控制器 +* 服务控制器 + +在1.8版本中,当前运行中的CCM从上面的列表中运行以下控制器: + +* 节点控制器 +* 路由控制器 +* 服务控制器 + +另外,它运行另一个名为 PersistentVolumeLabels Controller 的控制器。这个控制器负责对在GCP和AWS云里创建的PersistentVolumes的域(Zone)和区(Region)标签进行设置。 + +**注意**:卷控制器被特意设计为CCM之外的一部分。由于其中涉及到的复杂性和对现有供应商特定卷的逻辑抽象,因此决定了卷控制器不会被移动到CCM之中。 + +原本计划使用CCM来支持卷的目的是为了引入FlexVolume卷来支持可插拔卷。然而,官方正在计划使用更具备竞争力的CSI来取代FlexVolume卷。 + +考虑到这些正在进行中的变化,我们决定暂时停止当前工作直至CSI准备就绪。 + +云服务供应商工作组(wg-cloud-provider)正在开展相关工作,以实现通过CCM支持PersistentVolume的功能。详细信息请参见[kubernetes/kubernetes#52371](https://github.com/kubernetes/kubernetes/pull/52371)。 + +## CCM功能 + +CCM从Kubernetes组件中继承了与云服务供应商相关的功能。本节基于被CCM继承其功能的组件展开描述。 + +### 1. Kubernetes 控制器管理器 + +CCM的大部分功能都来自KCM。 如上一节所述,CCM运行以下控制引擎: + +* 节点控制器 +* 路由控制器 +* 服务控制器 +* PersistentVolumeLabels控制器 + +#### 节点控制器 + +节点控制器负责通过从云服务供应商获得有关在集群中运行的节点的信息来初始化节点。节点控制器执行以下功能: + +1.使用云特定域(Zone)/区(Region)标签初始化节点。 + +1.使用特定于云的实例详细信息初始化节点,例如类型和大小。 + +1.获取节点的网络地址和主机名。 + +1.如果节点无响应,检查该节点是否已从云中删除。如果该节点已从云中删除,则删除Kubernetes节点对象。 + +#### 路由控制器 + +路由控制器负责为云配置正确的路由,以便Kubernetes集群中不同节点上的容器可以相互通信。路由控制器仅适用于Google Compute Engine平台。 + +#### 服务控制器 + +服务控制器负责监听服务的创建、更新和删除事件。根据Kubernetes中各个服务的当前状态,它将配置云负载平衡器(如ELB或Google LB)以反映Kubernetes中的服务状态。此外,它还确保云负载均衡器的服务后端保持最新。 + +#### PersistentVolumeLabels 控制器 + +PersistentVolumeLabels控制器在AWS的EBS卷、GCE的PD卷创建时申请标签,这使得用户不再需要手动设置这些卷标签。 + +这些标签对于pod的调度工作是非常重要的,因为这些卷只能在它们所在的域(Zone)/区(Region)内工作,因此所有使用这些卷的pod都必须要在同一个域/区中才能保证进行调度正常进行。 + +PersistentVolumeLabels控制器是专门为CCM创建的; 也就是说,在CCM创建之前它是不存在的。这样做是为了将Kubernetes API服务器(它是一个许可控制器)中的PV标签逻辑移动到CCM。 它不在KCM上运行。 + +### 2. Kubelet + +Node控制器包含kubelet中依赖于云的功能。在系统引入CCM组件之前,是由kubelet采用包含云特定信息的方式对节点进行初始化,如IP地址、区(Region)/域(Zone)标签和实例类型信息;引入CCM之后,这部分的初始化操作就从kubelet转移到了CCM中。 + +在引入CCM后的新的模型中,kubelet采用不包含云特定信息的方式初始化一个节点。但是,它会为新创建的节点添加一个污点,使得该节点不可被立即调度,直到CCM使用包含云的特定信息初始化节点后,才会删除该污点,使得该节点可被调度。 + +### 3. Kubernetes API服务器 + +PersistentVolumeLabels控制器将Kubernetes API服务器的依赖于云的功能移至CCM,如前面部分所述。 + +## 插件机制 + +云控制器管理器使用Go接口与外部对接从而实现功能扩展。具体来说,它使用了[这里](https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/cloud.go)定义的CloudProvider接口。 + +上面强调的四个共享控制器的实现,以及一些辅助设施(scaffolding)和共享的云服务供应商接口,将被保留在Kubernetes核心当中。但云服务供应商特有的实现将会建立在核心之外,并实现核心中定义的接口。 + +有关开发插件的更多信息,请参阅 +[开发云控制器管理器](/docs/tasks/administrators-cluster/developing-cloud-controller-manager/)。 + +## 授权 + +本节分解了CCM对各种API对象的访问,以执行其操作。 + +### 节点控制器 + +节点控制器仅适用于节点对象。它需要完全访问权限来获取、列出、创建、更新、修补、监视和删除节点对象。 + +v1/Node: +- Get +- List +- Create +- Update +- Patch +- Watch + +### 路由控制器 + +路由控制器监听节点对象的创建并配置合适的路由。它需要对节点对象的访问权限。 + +v1/Node: +- Get + +### 服务控制器 + +服务控制器侦听服务对象创建、更新和删除事件,然后对这些服务的端点进行恰当的配置。 + +要访问服务,它需要罗列和监控权限。要更新服务,它需要修补和更新权限。 + +要为服务设置端点,需要访问创建、列表、获取、监视和更新。 + +v1/Service: +- List +- Get +- Watch +- Patch +- Update + +### PersistentVolumeLabels 控制器 + +PersistentVolumeLabels控制器监听PersistentVolume(PV)创建事件并更新它们。该控制器需要访问列表、查看、获取和更新PV的权限。 + +v1/PersistentVolume: +- Get +- List +- Watch +- Update + +### 其它 + +CCM核心的实现需要创建事件的权限,为了确保安全操作,需要创建ServiceAccounts的权限。 + +v1/Event: +- Create +- Patch +- Update + +v1/ServiceAccount: +- Create + +针对CCM的RBAC ClusterRole如下所示: + +```yaml +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: cloud-controller-manager +rules: +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - update +- apiGroups: + - "" + resources: + - nodes + verbs: + - '*' +- apiGroups: + - "" + resources: + - nodes/status + verbs: + - patch +- apiGroups: + - "" + resources: + - services + verbs: + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create +- apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - update + - watch +- apiGroups: + - "" + resources: + - endpoints + verbs: + - create + - get + - list + - watch + - update +``` + +## 供应商实施 + +以下云服务供应商为自己的云部署了CCM。 + +* [Digital Ocean]() +* [Oracle]() +* [Azure]() +* [GCE]() +* [AWS]() + +## 群集管理 + +[这里](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager)提供了配置和运行CCM的完整说明。 diff --git a/cn/docs/concepts/architecture/master-node-communication.md b/cn/docs/concepts/architecture/master-node-communication.md index e090ed3197..41db6abf44 100644 --- a/cn/docs/concepts/architecture/master-node-communication.md +++ b/cn/docs/concepts/architecture/master-node-communication.md @@ -68,4 +68,4 @@ Master 组件通过非安全(没有加密或认证)端口和集群的 apiser ### SSH 隧道 -[Google Container Engine](https://cloud.google.com/container-engine/docs/) 使用 SSH 隧道保护 Master -> Cluster 通信路径。在这种配置下,apiserver 发起一个到集群中每个节点的 SSH 隧道(连接到在 22 端口监听的 ssh 服务)并通过这个隧道传输所有到 kubelet、node、pod 或者 service 的流量。这个隧道保证流量不会在集群运行的私有 GCE 网络之外暴露。 +[Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine/docs/) 使用 SSH 隧道保护 Master -> Cluster 通信路径。在这种配置下,apiserver 发起一个到集群中每个节点的 SSH 隧道(连接到在 22 端口监听的 ssh 服务)并通过这个隧道传输所有到 kubelet、node、pod 或者 service 的流量。这个隧道保证流量不会在集群运行的私有 GCE 网络之外暴露。 diff --git a/cn/docs/concepts/architecture/nodes.md b/cn/docs/concepts/architecture/nodes.md index f5159814d7..5ddc4ee7e4 100644 --- a/cn/docs/concepts/architecture/nodes.md +++ b/cn/docs/concepts/architecture/nodes.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - caesarxuchao - dchen1107 diff --git a/cn/docs/concepts/cluster-administration/certificates.md b/cn/docs/concepts/cluster-administration/certificates.md new file mode 100644 index 0000000000..6de8e29fda --- /dev/null +++ b/cn/docs/concepts/cluster-administration/certificates.md @@ -0,0 +1,248 @@ +--- +cn-approvers: +- lichuqiang +title: 证书 +--- + +* TOC +{:toc} + +## 创建证书 + +当使用客户端证书进行认证时,用户可以使用现有部署脚本,或者通过 `easyrsa`、`openssl` 或 +`cfssl` 手动生成证书。 + +### 使用现有部署脚本 + +**现有部署脚本** 位于 +`cluster/saltbase/salt/generate-cert/make-ca-cert.sh`。 + +执行该脚本时需传入两个参数。 第一个参数为 API 服务器的 IP 地址,第二个参数为对象的候补名称列表, +形如 `IP: 或 DNS:`。 + +脚本生成三个文件: `ca.crt`、`server.crt` 和 `server.key`。 + +最后,将以下参数加入到 API 服务器的启动参数中: + +``` +--client-ca-file=/srv/kubernetes/ca.crt +--tls-cert-file=/srv/kubernetes/server.crt +--tls-private-key-file=/srv/kubernetes/server.key +``` + +### easyrsa + +使用 **easyrsa** 能够手动地为集群生成证书。 + +1. 下载、解压并初始化 easyrsa3 的补丁版本。 + + curl -L -O https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz + tar xzf easy-rsa.tar.gz + cd easy-rsa-master/easyrsa3 + ./easyrsa init-pki +1. 生成 CA(通过 `--batch` 参数设置自动模式。 通过 `--req-cn` 设置默认使用的 CN) + + ./easyrsa --batch "--req-cn=${MASTER_IP}@`date +%s`" build-ca nopass +1. 生成服务器证书和密钥。 + 参数 `--subject-alt-name` 设置了访问 API 服务器时可能使用的 IP 和 DNS 名称。 `MASTER_CLUSTER_IP` + 通常为 `--service-cluster-ip-range` 参数中指定的服务 CIDR 的 首个 IP 地址,`--service-cluster-ip-range`同时用于 + API 服务器和控制器管理器组件。 `--days` 参数用于设置证书的有效期限。 + 下面的示例还假设用户使用 `cluster.local` 作为默认的 DNS 域名。 + + ./easyrsa --subject-alt-name="IP:${MASTER_IP}"\ + "IP:${MASTER_CLUSTER_IP},"\ + "DNS:kubernetes,"\ + "DNS:kubernetes.default,"\ + "DNS:kubernetes.default.svc,"\ + "DNS:kubernetes.default.svc.cluster,"\ + "DNS:kubernetes.default.svc.cluster.local" \ + --days=10000 \ + build-server-full server nopass +1. 拷贝 `pki/ca.crt`、 `pki/issued/server.crt` 和 `pki/private/server.key` 至您的目录。 +1. 填充并在 API 服务器的启动参数中添加以下参数: + + --client-ca-file=/yourdirectory/ca.crt + --tls-cert-file=/yourdirectory/server.crt + --tls-private-key-file=/yourdirectory/server.key + +### openssl + +使用 **openssl** 能够手动地为集群生成证书。 + +1. 生成密钥位数为 2048 的 ca.key: + + openssl genrsa -out ca.key 2048 +1. 依据 ca.key 生成 ca.crt (使用 -days 参数来设置证书有效时间): + + openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt +1. 生成密钥位数为 2048 的 server.key: + + openssl genrsa -out server.key 2048 +1. 创建用于生成证书签名请求(CSR)的配置文件。 + 确保在将其保存至文件(如`csr.conf`)之前将尖括号标记的值(如``) + 替换为你想使用的真实值。 注意:`MASTER_CLUSTER_IP` 是前面小节中描述的 API 服务器的服务集群 IP + (service cluster IP)。 下面的示例也假设用户使用 `cluster.local` 作为默认的 DNS 域名。 + + [ req ] + default_bits = 2048 + prompt = no + default_md = sha256 + req_extensions = req_ext + distinguished_name = dn + + [ dn ] + C = + ST = + L = + O = + OU = + CN = + + [ req_ext ] + subjectAltName = @alt_names + + [ alt_names ] + DNS.1 = kubernetes + DNS.2 = kubernetes.default + DNS.3 = kubernetes.default.svc + DNS.4 = kubernetes.default.svc.cluster + DNS.5 = kubernetes.default.svc.cluster.local + IP.1 = + IP.2 = + + [ v3_ext ] + authorityKeyIdentifier=keyid,issuer:always + basicConstraints=CA:FALSE + keyUsage=keyEncipherment,dataEncipherment + extendedKeyUsage=serverAuth,clientAuth + subjectAltName=@alt_names +1. 基于配置文件生成证书签名请求: + + openssl req -new -key server.key -out server.csr -config csr.conf +1. 使用 ca.key、ca.crt 和 server.csr 生成服务器证书: + + openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \ + -CAcreateserial -out server.crt -days 10000 \ + -extensions v3_ext -extfile csr.conf +1. 查看证书: + + openssl x509 -noout -text -in ./server.crt + +最后,添加同样的参数到 API 服务器的启动参数中。 + +### cfssl + +**cfssl** 是另一种用来生成证书的工具。 + +1. 按如下所示的方式下载、解压并准备命令行工具。 + 注意:你可能需要基于硬件架构和你所使用的 cfssl 版本对示例命令进行修改。 + + curl -LO https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o cfssl + chmod +x cfssl + curl -LO https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o cfssljson + chmod +x cfssljson + curl -LO https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o cfssl-certinfo + chmod +x cfssl-certinfo +1. 创建目录来存放物料,并初始化 cfssl: + + mkdir cert + cd cert + ../cfssl print-defaults config > config.json + ../cfssl print-defaults csr > csr.json +1. 创建用来生成 CA 文件的 JSON 配置文件,例如 `ca-config.json`: + + { + "signing": { + "default": { + "expiry": "8760h" + }, + "profiles": { + "kubernetes": { + "usages": [ + "signing", + "key encipherment", + "server auth", + "client auth", + ], + "expiry": "8760h" + } + } + } + } +1. 创建用来生成 CA 证书签名请求(CSR)的 JSON 配置文件,例如 `ca-csr.json`。 + 确保将尖括号标记的值替换为你想使用的真实值。 + + { + "CN": "kubernetes", + "key": { + "algo": "rsa", + "size": 2048 + }, + "names":[{ + "C": "", + "ST": "", + "L": "", + "O": "", + "OU": "", + }] + } +1. 生成 CA 密钥(`ca-key.pem`)和证书(`ca.pem`): + + ../cfssl gencert -initca ca-csr.json | ../cfssljson -bare ca +1. 按如下所示的方式创建用来为 API 服务器生成密钥和证书的 JSON 配置文件。 + 确保将尖括号标记的值替换为你想使用的真实值。 `MASTER_CLUSTER_IP` 是前面小节中描述的 + API 服务器的服务集群 IP。 下面的示例也假设用户使用 `cluster.local` 作为默认的 DNS 域名。 + + { + "CN": "kubernetes", + "hosts": [ + "127.0.0.1", + "", + "", + "kubernetes", + "kubernetes.default", + "kubernetes.default.svc", + "kubernetes.default.svc.cluster", + "kubernetes.default.svc.cluster.local" + ], + "key": { + "algo": "rsa", + "size": 2048 + }, + "names": [{ + "C": "", + "ST": "", + "L": "", + "O": "", + "OU": "" + }] + } +1. 为 API 服务器生成密钥和证书,生成的秘钥和证书分别默认保存在文件 `server-key.pem` + 和 `server.pem` 中: + + ../cfssl gencert -ca=ca.pem -ca-key=ca-key.pem \ + --config=ca-config.json -profile=kubernetes \ + server-csr.json | ../cfssljson -bare server + + +## 分发自签名 CA 证书 + +客户端节点可能拒绝承认自签名 CA 证书有效。 +对于非生产环境的部署,或运行在企业防火墙后的部署,用户可以向所有客户端分发自签名 CA 证书, +并刷新本地的有效证书列表。 + +在每个客户端上执行以下操作: + +```bash +$ sudo cp ca.crt /usr/local/share/ca-certificates/kubernetes.crt +$ sudo update-ca-certificates +Updating certificates in /etc/ssl/certs... +1 added, 0 removed; done. +Running hooks in /etc/ca-certificates/update.d.... +done. +``` + +## 证书 API + +您可以按照[这里](/docs/tasks/tls/managing-tls-in-a-cluster)记录的方式, +使用 `certificates.k8s.io` API 来准备 x509 证书,用于认证。 diff --git a/cn/docs/concepts/cluster-administration/cloud-providers.md b/cn/docs/concepts/cluster-administration/cloud-providers.md new file mode 100644 index 0000000000..130acd2916 --- /dev/null +++ b/cn/docs/concepts/cluster-administration/cloud-providers.md @@ -0,0 +1,108 @@ +--- +title: 云供应商 +--- + +{% capture overview %} +本文介绍了如何管理运行在特定云供应商上的 Kubernetes 集群。 +{% endcapture %} + +{% capture body %} +# AWS +本节介绍在 Amazon Web Services 上运行 Kubernetes 时可以使用的所有配置。 + +## 负载均衡器 +用户可以通过配置注解(annotations)来设置 [外部负载均衡器](/docs/tasks/access-application-cluster/create-external-load-balancer/),以在 AWS 中使用特定功能,如下所示: + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: example + namespace: kube-system + labels: + run: example + annotations: + service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:xx-xxxx-x:xxxxxxxxx:xxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx #replace this value + service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http +spec: + type: LoadBalancer + ports: + - port: 443 + targetPort: 5556 + protocol: TCP + selector: + app: example +``` +可以使用 _注解_ 将不同的设置应用于 AWS 中的负载平衡器服务。 下面描述了 AWS ELB 所支持的注解: + +* `service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval`:用于指定访问日志的间隔。 +* `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled`:用于在服务中启用或禁用日志访问。 +* `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name`:用于指定访问日志的 S3 桶名称。 +* `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix`:用于指定访问日志的 S3 桶前缀。 +* `service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags`:用于在服务中指定一个逗号分隔的键值对列表,它将作为附加标签被记录在 ELB 中。 例如: `"Key1=Val1,Key2=Val2,KeyNoVal1=,KeyNoVal2"`。 +* `service.beta.kubernetes.io/aws-load-balancer-backend-protocol`:用于在服务中指定监听器后端(pod)所使用的协议。 如果指定 `http` (默认) 或 `https`, 将创建一个终止连接和解析头的 HTTPS 监听器。 如果设置为 `ssl` 或 `tcp`, 将会使用 “原生的” SSL 监听器。 如果设置为 `http` 且不使用 `aws-load-balancer-ssl-cert`,将使用 HTTP 监听器。 +* `service.beta.kubernetes.io/aws-load-balancer-ssl-cert`:用于在服务中请求安全监听器,其值为合法的证书 ARN(Amazon Resource Name)。 更多内容,请参考 [ELB 监听器配置](http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-listener-config.html)。 证书 ARN 是 IAM(身份和访问管理) 或 CM(证书管理)类型的 ARN,例如 `arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012`。 +* `service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled`:用于在服务中启用或禁用连接耗尽(connection draining)。 +* `service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout`:用于在服务中指定连接耗尽超时时间。 +* `service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout`:用于在服务中指定空闲连接超时时间。 +* `service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled`:用于在服务中启用或禁用跨区域负载平衡。 +* `service.beta.kubernetes.io/aws-load-balancer-extra-security-groups`:用于在服务中指定要添加到创建的 ELB 中的其他安全组。 +* `service.beta.kubernetes.io/aws-load-balancer-internal`:用于在服务中表明需要内部 ELB。 +* `service.beta.kubernetes.io/aws-load-balancer-proxy-protocol`:用于在 ELB 上启用代理协议。 当前仅接受 `*` 值,也就是在所有 ELB 后端启用代理协议。 将来可能进行调整,只允许特定的后端设置代理协议。 +* `service.beta.kubernetes.io/aws-load-balancer-ssl-ports`:用于在服务中指定一个逗号分隔的端口列表,这些端口会使用 SSL/HTTPS 监听器。 默认为 `*`(全部) + +AWS 相关的注解信息取自 [aws.go](https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/aws/aws.go) 文件的注释。 + +# OpenStack +本节介绍了使用 OpenStack 运行 Kubernetes 时所有可用的配置。 + +## cloud.conf +Kubernetes 知道如何通过文件 cloud.conf 与 OpenStack 进行交互。 该文件会为 Kubernetes 提供证书和 OpenStack 认证端点的区位信息。 +用户可以通过在其中指定以下信息来创建 cloud.conf 文件。 + +### 最小配置 +这是一个最小配置的例子,它涉及最常用的值: + +```yaml +[Global] +username=user +password=pass +auth-url=https:///identity/v3 +tenant-id=c869168a828847f39f7f06edd7305637 +domain-id=2a73b8f597c04551a0fdc8e95544be8a + +[LoadBalancer] +subnet-id=6937f8fa-858d-4bc9-a3a5-18d2c957166a +``` + +#### 全局配置 +* `username`:指 keystone 中设置的一个合法用户的用户名。 +* `password`:指 keystone 中设置的一个合法用户的密码。 +* `auth-url`:用于认证的 keystone API 的 URL 。 在 OpenStack 控制面板上,可以在 “访问和安全(Access and Security)> api 访问(API Access)> 凭证(Credentials)” 路径下找到它。 +* `tenant-id`:用于指定要创建资源的项目 ID。 +* `domain-id`:用于指定用户所属的域(domain)ID。 + +#### 负载均衡器 +* `subnet-id`:用于指定要创建的负载均衡器所在的子网 ID。 可以在 “Network > Networks” 路径下找到它。 点击相应的网络获取其子网。 + +### 可选配置 + +#### 块存储 + +Kubernetes 利用 OpenStack 服务目录对它知道如何使用的服务进行定位,包括 Cinder 块存储服务。 然而,云供应商的配置中包含一个附加选项,可以影响块存储 API 的使用方式: + +* `bs-version`:指所使用的块存储 API 版本。 其合法值为 + `v1`、 `v2`、 `v3` 和 `auto`。 `auto` 为默认值,将使用底层 Openstack 所支持的块存储 API 的最新版本。 + +如果在 OpenStack 上部署 Kubernetes <= 1.8 的版本,同时使用路径而不是端口来区分端点(endpoints),那么可能需要显式设置 `bs-version` 参数。 基于路径的端点形如 `http://foo.bar/volume` ,而基于端口的的端点形如 +`http://foo.bar:xxx`。 + +在使用基于路径的端点,并且 Kubernetes 使用较旧的自动检索逻辑的环境中,尝试卷卸载(detachment)会返回 `BS API version autodetection failed.` 错误。 为了解决这个问题,可以通过添加以下内容到云供应商配置中,来强制使用 Cinder API V2 版本。 + +```yaml +[BlockStorage] +bs-version=v2 +``` +{% endcapture %} + +{% include templates/concept.md %} diff --git a/cn/docs/concepts/cluster-administration/device-plugins.md b/cn/docs/concepts/cluster-administration/device-plugins.md new file mode 100644 index 0000000000..656df45899 --- /dev/null +++ b/cn/docs/concepts/cluster-administration/device-plugins.md @@ -0,0 +1,96 @@ +--- +approvers: +title: 设备插件 +description: 使用 Kubernetes 设备插件框架来为 GPUs、 NICs、 FPGAs、 InfiniBand 和其他类似的需要供应商特别设置的资源开发插件。 +--- + +{% include feature-state-alpha.md %} + +{% capture overview %} +从1.8版本开始,Kubernetes 提供了一套 +[设备插件框架](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/resource-management/device-plugin.md), +使得供应商能够在不改动 Kubernetes 核心代码的情况下,向 kubelet 发布它们的资源。 +供应商可以实现一个手动或以 DaemonSet 形式部署的插件,而不是编写自定义的 Kubernetes 代码。 +插件的目标设备包括 GPUs、 高性能 NICs、 FPGAs、 InfiniBand +和其他类似的可能需要供应商特定的初始化和设置的计算资源。 +{% endcapture %} + +{% capture body %} + +## 设备插件注册 + +设备插件功能通过 `DevicePlugins` 功能入口控制, 该功能默认是禁用的。 +当设备插件功能被启用时,kubelet 会对外提供一个 `Registration` gRPC 服务: + +```gRPC +service Registration { + rpc Register(RegisterRequest) returns (Empty) {} +} +``` +设备插件通过该 gRPC 服务将自身注册到 kubelet 。 +注册过程中,设备插件需要发送: + + * 它的 Unix 套接字名称。 + * 所基于的设备插件 API 版本。 + * 希望发布的 `ResourceName` 。 这里的 `ResourceName` 需要符合 + [扩展资源命名方案](https://github.com/kubernetes/kubernetes/pull/48922), + 形如 `vendor-domain/resource` 。 + 例如,Nvidia GPU 资源被发布为 `nvidia.com/gpu` 。 + +注册成功后,设备插件将其管理的设备列表发送至 kubelet ,然后 kubelet 负责将这些资源作为 kubelet 节点状态更新的一部分,通知 apiserver 。 +例如, 设备插件注册 `vendor-domain/foo` 到 kubelet , +并上报了节点上的两个健康的设备后,节点状态将更新, 发布2个 `vendor-domain/foo` 。 + +然后,开发者可以在 [容器](/docs/api-reference/{{page.version}}/#container-v1-core) +规格中通过使用与 +[不透明整数型资源](/docs/tasks/configure-pod-container/opaque-integer-resource/) +中同样的流程来请求使用设备。 +在1.8版本中, 扩展资源仅支持整型的资源,且容器规格中声明的 `limit` 与 `request` 必须相等。 + +## 设备插件实现 + +设备插件的工作流程一般包括以下步骤: + +* 初始化。 在这个阶段,设备插件执行供应商特定的初始化和设置,以确保设备处于就绪状态。 + +* 插件通过主机路径 `/var/lib/kubelet/device-plugins/` 下的一个 Unix 套接字启动 gRPC 服务,该服务实现了以下接口: + + ```gRPC + service DevicePlugin { + // ListAndWatch returns a stream of List of Devices + // Whenever a Device state change or a Device disapears, ListAndWatch + // returns the new list + rpc ListAndWatch(Empty) returns (stream ListAndWatchResponse) {} + + // Allocate is called during container creation so that the Device + // Plugin can run device specific operations and instruct Kubelet + // of the steps to make the Device available in the container + rpc Allocate(AllocateRequest) returns (AllocateResponse) {} + } + ``` + +* 插件通过主机路径 `/var/lib/kubelet/device-plugins/kubelet.sock` 下的 Unix 套接字将自身注册到 kubelet 。 + +* 注册成功之后,设备插件以服务模式运行,其间持续监测设备健康状态,并在任何设备状态变化时上报到 kubelet 。 +插件也负责服务 `Allocate` gRPC 请求。 在 `Allocate` 过程中,插件可能会做设备特定的准备动作; 如 GPU 清理 或 QRNG 初始化。 +如操作成功,设备插件会返回一个 `AllocateResponse` ,它包含了用于访问分配的设备的容器运行时配置信息。 kubelet 将该信息传递到容器运行时。 + +我们期望设备插件能够监测到 kubelet 重启,并将自身重新注册到新的 kubelet 实例中。 在1.8版本中,新的 kubelet 实例启动时,会清理当前 `/var/lib/kubelet/device-plugins` 路径下已存在的 Unix 套接字。 通过这一事件,设备插件能够监测到其 Unix 套接字被删除,并重新对自身进行注册。 + +## 设备插件部署 + +设备插件可以手动部署,也可以作为 DaemonSet 进行部署。 以 DaemonSet 形式部署的好处是设备插件故障时, +Kubernetes能够重新启动 Pods 。 否则就需要额外的设备插件故障恢复机制。 +目录 `/var/lib/kubelet/device-plugins` 需要访问特权, +所以设备插件必须在特权的安全上下文环境下运行。 +如果设备插件以 DaemonSet 形式运行, `/var/lib/kubelet/device-plugins` +目录必须在插件的 [PodSpec](/docs/api-reference/{{page.version}}/#podspec-v1-core) 中以 [Volume](/docs/api-reference/{{page.version}}/#volume-v1-core) 的形式挂载。 + +## 示例 + +设备插件实现的示例,参考 +[基于 COS 操作系统的 nvidia GPU 设备插件](https://github.com/GoogleCloudPlatform/container-engine-accelerators/tree/master/cmd/nvidia_gpu)。 + +{% endcapture %} + +{% include templates/concept.md %} diff --git a/cn/docs/concepts/cluster-administration/federation.md b/cn/docs/concepts/cluster-administration/federation.md index f9a51dfb6c..752a4e30ce 100644 --- a/cn/docs/concepts/cluster-administration/federation.md +++ b/cn/docs/concepts/cluster-administration/federation.md @@ -107,7 +107,7 @@ Kubernetes集群数量选择也许是一个相对静止的选择,因为对其 {% endcapture %} {% capture whatsnext %} -* 进一步学习[联邦提案](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/federation.md)。 +* 进一步学习[联邦提案](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/multicluster/federation.md)。 * 集群联邦参考该[配置指导](/docs/tutorials/federation/set-up-cluster-federation-kubefed/)。 * 查看[Kubecon2016浅谈联邦](https://www.youtube.com/watch?v=pq9lbkmxpS8) {% endcapture %} diff --git a/cn/docs/concepts/cluster-administration/proxies.md b/cn/docs/concepts/cluster-administration/proxies.md new file mode 100644 index 0000000000..76637b7a58 --- /dev/null +++ b/cn/docs/concepts/cluster-administration/proxies.md @@ -0,0 +1,63 @@ +--- +title: Kubernetes 中的代理 +--- + +{% capture overview %} +本文讲述了 Kubernetes 中所使用的代理。 +{% endcapture %} + +{% capture body %} + +## 代理 + +用户在使用 Kubernetes 的过程中可能遇到几种不同的代理(proxy): + + 1. [kubectl proxy](/docs/tasks/access-application-cluster/access-cluster/#directly-accessing-the-rest-api): + + - 运行在用户的桌面或 pod 中 + - 从本机地址到 Kubernetes apiserver 的代理 + - 客户端到代理使用 HTTP 协议 + - 代理到 apiserver 使用 HTTPS 协议 + - 指向 apiserver + - 添加认证头信息 + + 1. [apiserver proxy](/docs/tasks/access-application-cluster/access-cluster/#discovering-builtin-services): + + - 是一个建立在 apiserver 内部的“堡垒” + - 将集群外部的用户与群集 IP 相连接,这些IP是无法通过其他方式访问的 + - 运行在 apiserver 进程内 + - 客户端到代理使用 HTTPS 协议 (如果配置 apiserver 使用 HTTP 协议,则使用 HTTP 协议) + - 通过可用信息进行选择,代理到目的地可能使用 HTTP 或 HTTPS 协议 + - 可以用来访问 Node、 Pod 或 Service + - 当用来访问 Service 时,会进行负载均衡 + + 1. [kube proxy](/docs/concepts/services-networking/service/#ips-and-vips): + + - 在每个节点上运行 + - 代理 UDP 和 TCP + - 不支持 HTTP + - 提供负载均衡能力 + - 只用来访问 Service + + 1. apiserver 之前的代理/负载均衡器: + + - 在不同集群间的存在形式和实现不同 (如 nginx) + - 位于所有客户端和一个或多个 apiserver 之间 + - 存在多个 apiserver 时,扮演负载均衡器的角色 + + 1. 外部服务的云负载均衡器: + + - 由一些云供应商提供 (如AWS ELB、 Google Cloud Load Balancer) + - Kubernetes service 为 `LoadBalancer` 类型时自动创建 + - 只使用 UDP/TCP 协议 + - 不同云供应商的实现不同。 + +Kubernetes 用户通常只需要关心前两种类型的代理,集群管理员通常需要确保后面几种类型的代理设置正确。 + +## 请求重定向 + +代理已经取代重定向功能,重定向已被弃用。 + +{% endcapture %} + +{% include templates/concept.md %} diff --git a/cn/docs/concepts/configuration/commands.yaml b/cn/docs/concepts/configuration/commands.yaml index 8d58007db4..2327d25827 100644 --- a/cn/docs/concepts/configuration/commands.yaml +++ b/cn/docs/concepts/configuration/commands.yaml @@ -10,3 +10,4 @@ spec: image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"] + restartPolicy: OnFailure diff --git a/cn/docs/concepts/configuration/manage-compute-resources-container.md b/cn/docs/concepts/configuration/manage-compute-resources-container.md new file mode 100644 index 0000000000..1e15f39e3f --- /dev/null +++ b/cn/docs/concepts/configuration/manage-compute-resources-container.md @@ -0,0 +1,298 @@ +--- +title: Managing Compute Resources for Containers +--- + +{% capture overview %} + +当您定义 [Pod](/docs/user-guide/pods) 的时候可以选择为每个容器指定需要的 CPU 和内存(RAM)大小。当为容器指定了资源请求后,调度器就能够更好的判断出将容器调度到哪个节点上。如果您还为容器指定了资源限制,节点上的资源就可以按照指定的方式做竞争。关于资源请求和限制的不同点和更多资料请参考 [Resource QoS](https://git.k8s.io/community/contributors/design-proposals/resource-qos.md)。 + +{% endcapture %} + + +{% capture body %} + +## 资源类型 + +*CPU* 和 *内存* 都是 *资源类型*。资源类型具有基本单位。CPU 的单位是 core,内存的单位是 byte。 + +CPU和内存统称为*计算资源*,也可以称为*资源*。计算资源的数量是可以被请求、分配和消耗的可测量的。它们与 [API 资源](/docs/api/) 不同。 API 资源(如 Pod 和 [Service](/docs/user-guide/services))是可通过 Kubernetes API server 读取和修改的对象。 + +## Pod 和 容器的资源请求和限制 + +Pod 中的每个容器都可以指定以下的一个或者多个值: + +- `spec.containers[].resources.limits.cpu` +- `spec.containers[].resources.limits.memory` +- `spec.containers[].resources.requests.cpu` +- `spec.containers[].resources.requests.memory` + +尽管只能在个别容器上指定请求和限制,但是我们可以方便地计算出 Pod 资源请求和限制。特定资源类型的Pod 资源请求/限制是 Pod 中每个容器的该类型的资源请求/限制的总和。 + +## CPU 的含义 + +CPU 资源的限制和请求以 *cpu* 为单位。 + +Kubernetes 中的一个 cpu 等于: + +- 1 AWS vCPU +- 1 GCP Core +- 1 Azure vCore +- 1 *Hyperthread* 在带有超线程的裸机 Intel 处理器上 + +允许浮点数请求。具有 `spec.containers[].resources.requests.cpu` 为 0.5 的容器保证了一半 CPU 要求 1 CPU的一半。表达式 `0.1` 等价于表达式 `100m`,可以看作 “100 millicpu”。有些人说成是“一百毫 cpu”,其实说的是同样的事情。具有小数点(如 `0.1`)的请求由 API 转换为`100m`,精度不超过 `1m`。因此,可能会优先选择 `100m` 的形式。 + +CPU 总是要用绝对数量,不可以使用相对数量;0.1 的 CPU 在单核、双核、48核的机器中的意义是一样的。 + +## 内存的含义 + +内存的限制和请求以字节为单位。您可以使用以下后缀之一作为平均整数或定点整数表示内存:E,P,T,G,M,K。您还可以使用两个字母的等效的幂数:Ei,Pi,Ti ,Gi,Mi,Ki。例如,以下代表大致相同的值: + +```shell +128974848, 129e6, 129M, 123Mi +``` + +下面是个例子。 + +以下 Pod 有两个容器。每个容器的请求为 0.25 cpu 和 64MiB(226 字节)内存,每个容器的限制为 0.5 cpu 和 128MiB 内存。您可以说该 Pod 请求 0.5 cpu 和 128 MiB 的内存,限制为 1 cpu 和 256MiB 的内存。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: frontend +spec: + containers: + - name: db + image: mysql + resources: + requests: + memory: "64Mi" + cpu: "250m" + limits: + memory: "128Mi" + cpu: "500m" + - name: wp + image: wordpress + resources: + requests: + memory: "64Mi" + cpu: "250m" + limits: + memory: "128Mi" + cpu: "500m" +``` + +## 具有资源请求的 Pod 如何调度 + +当您创建一个 Pod 时,Kubernetes 调度程序将为 Pod 选择一个节点。每个节点具有每种资源类型的最大容量:可为 Pod 提供的 CPU 和内存量。调度程序确保对于每种资源类型,调度的容器的资源请求的总和小于节点的容量。请注意,尽管节点上的实际内存或 CPU 资源使用量非常低,但如果容量检查失败,则调度程序仍然拒绝在该节点上放置 Pod。当资源使用量稍后增加时,例如在请求率的每日峰值期间,这可以防止节点上的资源短缺。 + +## 具有资源限制的 Pod 如何运行 + +当 kubelet 启动一个 Pod 的容器时,它会将 CPU 和内存限制传递到容器运行时。 + +当使用 Docker 时: + +- `spec.containers[].resources.requests.cpu` 的值将转换成 millicore 值,这是个浮点数,并乘以1024,这个数字中的较大者或2用作 `docker run` 命令中的[ `--cpu-shares`](https://docs.docker.com/engine/reference/run/#/cpu-share-constraint) 标志的值。 +- `spec.containers[].resources.limits.cpu` 被转换成 millicore 值。被乘以 100000 然后 除以 1000。这个数字用作 `docker run` 命令中的 [`--cpu-quota`](https://docs.docker.com/engine/reference/run/#/cpu-quota-constraint) 标志的值。[`--cpu-quota` ] 标志被设置成了 100000,表示测量配额使用的默认100ms 周期。如果 [`--cpu-cfs-quota`] 标志设置为 true,则 kubelet 会强制执行 cpu 限制。从 Kubernetes 1.2 版本起,此标志默认为 true。 +- `spec.containers[].resources.limits.memory` 被转换为整型,作为 `docker run` 命令中的 [`--memory`](https://docs.docker.com/engine/reference/run/#/user-memory-constraints) 标志的值。 + +如果容器超过其内存限制,则可能会被终止。如果可重新启动,则与所有其他类型的运行时故障一样,kubelet 将重新启动它。 + +如果一个容器超过其内存请求,那么当节点内存不足时,它的 Pod 可能被逐出。 + +容器可能被允许也可能不被允许超过其 CPU 限制时间。但是,由于 CPU 使用率过高,不会被杀死。 + +要确定容器是否由于资源限制而无法安排或被杀死,请参阅 [疑难解答](#troubleshooting) 部分。 + +## 监控计算资源使用 + +Pod 的资源使用情况被报告为 Pod 状态的一部分。 + +如果为集群配置了 [可选监控](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/cluster-monitoring/README.md),则可以从监控系统检索 Pod 资源的使用情况。 + +## 疑难解答 + +### 我的 Pod 处于 pending 状态且事件信息显示 failedScheduling + +如果调度器找不到任何该 Pod 可以匹配的节点,则该 Pod 将保持不可调度状态,直到找到一个可以被调度到的位置。每当调度器找不到 Pod 可以调度的地方时,会产生一个事件,如下所示: + +```shell +$ kubectl describe pod frontend | grep -A 3 Events +Events: + FirstSeen LastSeen Count From Subobject PathReason Message + 36s 5s 6 {scheduler } FailedScheduling Failed for reason PodExceedsFreeCPU and possibly others +``` + +在上述示例中,由于节点上的 CPU 资源不足,名为 “frontend” 的 Pod 将无法调度。由于内存不足(PodExceedsFreeMemory),类似的错误消息也可能会导致失败。一般来说,如果有这种类型的消息而处于 pending 状态,您可以尝试如下几件事情: + +```shell +$ kubectl describe nodes e2e-test-minion-group-4lw4 +Name: e2e-test-minion-group-4lw4 +[ ... lines removed for clarity ...] +Capacity: + alpha.kubernetes.io/nvidia-gpu: 0 + cpu: 2 + memory: 7679792Ki + pods: 110 +Allocatable: + alpha.kubernetes.io/nvidia-gpu: 0 + cpu: 1800m + memory: 7474992Ki + pods: 110 +[ ... lines removed for clarity ...] +Non-terminated Pods: (5 in total) + Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits + --------- ---- ------------ ---------- --------------- ------------- + kube-system fluentd-gcp-v1.38-28bv1 100m (5%) 0 (0%) 200Mi (2%) 200Mi (2%) + kube-system kube-dns-3297075139-61lj3 260m (13%) 0 (0%) 100Mi (1%) 170Mi (2%) + kube-system kube-proxy-e2e-test-... 100m (5%) 0 (0%) 0 (0%) 0 (0%) + kube-system monitoring-influxdb-grafana-v4-z1m12 200m (10%) 200m (10%) 600Mi (8%) 600Mi (8%) + kube-system node-problem-detector-v0.1-fj7m3 20m (1%) 200m (10%) 20Mi (0%) 100Mi (1%) +Allocated resources: + (Total limits may be over 100 percent, i.e., overcommitted.) + CPU Requests CPU Limits Memory Requests Memory Limits + ------------ ---------- --------------- ------------- + 680m (34%) 400m (20%) 920Mi (12%) 1070Mi (14%) +``` + +在上面的输出中,您可以看到如果 Pod 请求超过 1120m CPU 或者 6.23Gi 内存,节点将无法满足。 + +通过查看 `Pods` 部分,您将看到哪些 Pod 占用的节点上的资源。 + +Pod 可用的资源量小于节点容量,因为系统守护程序使用一部分可用资源。 [NodeStatus](/docs/resources-reference/{{page.version}}/#nodestatus-v1-core) 的 `allocatable` 字段给出了可用于 Pod 的资源量。有关更多信息,请参阅 [节点可分配资源](https://git.k8s.io/community/contributors/design-proposals/node-allocatable.md)。 + +可以将 [资源配额](/docs/concepts/policy/resource-quotas/) 功能配置为限制可以使用的资源总量。如果与 namespace 配合一起使用,就可以防止一个团队占用所有资源。 + +## 我的容器被终止了 + +您的容器可能因为资源枯竭而被终止了。要查看容器是否因为遇到资源限制而被杀死,请在相关的 Pod 上调用 `kubectl describe pod`: + +```shell +[12:54:41] $ kubectl describe pod simmemleak-hra99 +Name: simmemleak-hra99 +Namespace: default +Image(s): saadali/simmemleak +Node: kubernetes-node-tf0f/10.240.216.66 +Labels: name=simmemleak +Status: Running +Reason: +Message: +IP: 10.244.2.75 +Replication Controllers: simmemleak (1/1 replicas created) +Containers: + simmemleak: + Image: saadali/simmemleak + Limits: + cpu: 100m + memory: 50Mi + State: Running + Started: Tue, 07 Jul 2015 12:54:41 -0700 + Last Termination State: Terminated + Exit Code: 1 + Started: Fri, 07 Jul 2015 12:54:30 -0700 + Finished: Fri, 07 Jul 2015 12:54:33 -0700 + Ready: False + Restart Count: 5 +Conditions: + Type Status + Ready False +Events: + FirstSeen LastSeen Count From SubobjectPath Reason Message + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {scheduler } scheduled Successfully assigned simmemleak-hra99 to kubernetes-node-tf0f + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {kubelet kubernetes-node-tf0f} implicitly required container POD pulled Pod container image "gcr.io/google_containers/pause:0.8.0" already present on machine + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {kubelet kubernetes-node-tf0f} implicitly required container POD created Created with docker id 6a41280f516d + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {kubelet kubernetes-node-tf0f} implicitly required container POD started Started with docker id 6a41280f516d + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {kubelet kubernetes-node-tf0f} spec.containers{simmemleak} created Created with docker id 87348f12526a +``` + +在上面的例子中,`Restart Count: 5` 意味着 Pod 中的 `simmemleak` 容器被终止并重启了五次。 + +您可以使用 `kubectl get pod` 命令加上 `-o go-template=...` 选项来获取之前终止容器的状态。 + +```shell{% raw %} +[13:59:01] $ kubectl get pod -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}' simmemleak-60xbc +Container Name: simmemleak +LastState: map[terminated:map[exitCode:137 reason:OOM Killed startedAt:2015-07-07T20:58:43Z finishedAt:2015-07-07T20:58:43Z containerID:docker://0e4095bba1feccdfe7ef9fb6ebffe972b4b14285d5acdec6f0d3ae8a22fad8b2]]{% endraw %} +``` + +您可以看到容器因为 `reason:OOM killed` 被终止,`OOM` 表示 Out Of Memory。 + +## 不透明整型资源(Alpha功能) + +Kubernetes 1.5 版本中引入不透明整型资源。不透明的整数资源允许集群运维人员发布新的节点级资源,否则系统将不了解这些资源。 + +用户可以在 Pod 的 spec 中消费这些资源,就像 CPU 和内存一样。调度器负责资源计量,以便在不超过可用量的同时分配给 Pod。 + +**注意:** 不透明整型资源在 kubernetes 1.5 中还是 Alpha 版本。只实现了资源计量,节点级别的隔离还处于积极的开发阶段。 + +不透明整型资源是以 `pod.alpha.kubernetes.io/opaque-int-resource-` 为前缀的资源。API server 将限制这些资源的数量为整数。*有效* 数量的例子有 `3`、`3000m` 和 `3Ki`。*无效*数量的例子有 `0.5` 和 `1500m`。 + +申请使用不透明整型资源需要两步。首先,集群运维人员必须在一个或多个节点上通告每个节点不透明的资源。然后,用户必须在 Pod 中请求不透明资源。 + +要发布新的不透明整型资源,集群运维人员应向 API server 提交 `PATCH` HTTP请求,以指定集群中节点的`status.capacity` 的可用数量。在此操作之后,节点的 `status.capacity` 将包括一个新的资源。 `status.allocatable` 字段由 kubelet 异步地使用新资源自动更新。请注意,由于调度器在评估 Pod 适应度时使用节点 `status.allocatable` 值,所以在使用新资源修补节点容量和请求在该节点上调度资源的第一个 pod 之间可能会有短暂的延迟。 + +**示例** + +这是一个 HTTP 请求,master 节点是 k8s-master,在 k8s-node-1 节点上通告 5 个 “foo” 资源。 + +```http +PATCH /api/v1/nodes/k8s-node-1/status HTTP/1.1 +Accept: application/json +Content-Type: application/json-patch+json +Host: k8s-master:8080 + +[ + { + "op": "add", + "path": "/status/capacity/pod.alpha.kubernetes.io~1opaque-int-resource-foo", + "value": "5" + } +] +``` + +```shell +curl --header "Content-Type: application/json-patch+json" \ +--request PATCH \ +--data '[{"op": "add", "path": "/status/capacity/pod.alpha.kubernetes.io~1opaque-int-resource-foo", "value": "5"}]' \ +http://k8s-master:8080/api/v1/nodes/k8s-node-1/status +``` + +**注意:** 在前面的请求中,`~1` 是 patch 路径中 `/` 字符的编码。JSON-Patch 中的操作路径值被解释为 JSON-Pointer。更多详细信息请参阅 [IETF RFC 6901, section 3](https://tools.ietf.org/html/rfc6901#section-3)。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: my-pod +spec: + containers: + - name: my-container + image: myimage + resources: + requests: + cpu: 2 + pod.alpha.kubernetes.io/opaque-int-resource-foo: 1 +``` + +## 计划改进 + +在 kubernetes 1.5 版本中仅允许在容器上指定资源量。计划改进对所有容器在 Pod 中共享资源的计量,如 [emptyDir volume](/docs/concepts/storage/volumes/#emptydir)。 + +在 kubernetes 1.5 版本中仅支持容器对 CPU 和内存的申请和限制。计划增加新的资源类型,包括节点磁盘空间资源和一个可支持自定义 [资源类型](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/resources.md) 的框架。 + +Kubernetes 通过支持通过多级别的 [服务质量](http://issue.k8s.io/168) 来支持资源的过度使用。 + +在 kubernetes 1.5 版本中,一个 CPU 单位在不同的云提供商和同一云提供商的不同机器类型中的意味都不同。例如,在 AWS 上,节点的容量报告为 [ECU](http://aws.amazon.com/ec2/faqs/),而在 GCE 中报告为逻辑内核。我们计划修改 cpu 资源的定义,以便在不同的提供商和平台之间保持一致。 + +{% endcapture %} + +{% capture whatsnext %} + +- 获取将 [CPU 和内存资源分配给容器](/docs/tasks/configure-pod-container/assign-cpu-ram-container/) 的实践经验 +- [容器](/docs/api-reference/{{page.version}}/#container-v1-core) +- [ResourceRequirements](/docs/resources-reference/{{page.version}}/#resourcerequirements-v1-core) + +{% endcapture %} + +{% include templates/concept.md %} + diff --git a/cn/docs/concepts/configuration/overview.md b/cn/docs/concepts/configuration/overview.md deleted file mode 100644 index febbc6726f..0000000000 --- a/cn/docs/concepts/configuration/overview.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -approvers: -- mikedanese -title: Configuration Best Practices ---- - -{% capture overview %} -This document highlights and consolidates configuration best practices that are introduced throughout the user-guide, getting-started documentation, and examples. - -This is a living document. If you think of something that is not on this list but might be useful to others, please don't hesitate to file an issue or submit a PR. -{% endcapture %} - -{% capture body %} -## General Config Tips - -- When defining configurations, specify the latest stable API version (currently v1). - -- Configuration files should be stored in version control before being pushed to the cluster. This allows quick roll-back of a configuration if needed. It also aids with cluster re-creation and restoration if necessary. - -- Write your configuration files using YAML rather than JSON. Though these formats can be used interchangeably in almost all scenarios, YAML tends to be more user-friendly. - -- Group related objects into a single file whenever it makes sense. One file is often easier to manage than several. See the [guestbook-all-in-one.yaml](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/guestbook/all-in-one/guestbook-all-in-one.yaml) file as an example of this syntax. - - Note also that many `kubectl` commands can be called on a directory, so you can also call `kubectl create` on a directory of config files. See below for more details. - -- Don't specify default values unnecessarily, in order to simplify and minimize configs, and to reduce error. For example, omit the selector and labels in a `ReplicationController` if you want them to be the same as the labels in its `podTemplate`, since those fields are populated from the `podTemplate` labels by default. See the [guestbook app's](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/guestbook/) .yaml files for some [examples](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/guestbook/frontend-deployment.yaml) of this. - -- Put an object description in an annotation to allow better introspection. - - -## "Naked" Pods vs Replication Controllers and Jobs - -- If there is a viable alternative to naked pods (in other words: pods not bound to a [replication controller](/docs/user-guide/replication-controller)), go with the alternative. Naked pods will not be rescheduled in the event of node failure. - - Replication controllers are almost always preferable to creating pods, except for some explicit [`restartPolicy: Never`](/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy) scenarios. A [Job](/docs/concepts/jobs/run-to-completion-finite-workloads/) object (currently in Beta) may also be appropriate. - - -## Services - -- It's typically best to create a [service](/docs/concepts/services-networking/service/) before corresponding [replication controllers](/docs/concepts/workloads/controllers/replicationcontroller/). This lets the scheduler spread the pods that comprise the service. - - You can also use this process to ensure that at least one replica works before creating lots of them: - - 1. Create a replication controller without specifying replicas (this will set replicas=1); - 2. Create a service; - 3. Then scale up the replication controller. - -- Don't use `hostPort` unless it is absolutely necessary (for example: for a node daemon). It specifies the port number to expose on the host. When you bind a Pod to a `hostPort`, there are a limited number of places to schedule a pod due to port conflicts— you can only schedule as many such Pods as there are nodes in your Kubernetes cluster. - - If you only need access to the port for debugging purposes, you can use the [kubectl proxy and apiserver proxy](/docs/tasks/access-kubernetes-api/http-proxy-access-api/) or [kubectl port-forward](/docs/tasks/access-application-cluster/port-forward-access-application-cluster/). - You can use a [Service](/docs/concepts/services-networking/service/) object for external service access. - - If you explicitly need to expose a pod's port on the host machine, consider using a [NodePort](/docs/user-guide/services/#type-nodeport) service before resorting to `hostPort`. - -- Avoid using `hostNetwork`, for the same reasons as `hostPort`. - -- Use _headless services_ for easy service discovery when you don't need kube-proxy load balancing. See [headless services](/docs/user-guide/services/#headless-services). - -## Using Labels - -- Define and use [labels](/docs/user-guide/labels/) that identify __semantic attributes__ of your application or deployment. For example, instead of attaching a label to a set of pods to explicitly represent some service (For example, `service: myservice`), or explicitly representing the replication controller managing the pods (for example, `controller: mycontroller`), attach labels that identify semantic attributes, such as `{ app: myapp, tier: frontend, phase: test, deployment: v3 }`. This will let you select the object groups appropriate to the context— for example, a service for all "tier: frontend" pods, or all "test" phase components of app "myapp". See the [guestbook](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/guestbook/) app for an example of this approach. - - A service can be made to span multiple deployments, such as is done across [rolling updates](/docs/tasks/run-application/rolling-update-replication-controller/), by simply omitting release-specific labels from its selector, rather than updating a service's selector to match the replication controller's selector fully. - -- To facilitate rolling updates, include version info in replication controller names, for example as a suffix to the name. It is useful to set a 'version' label as well. The rolling update creates a new controller as opposed to modifying the existing controller. So, there will be issues with version-agnostic controller names. See the [documentation](/docs/tasks/run-application/rolling-update-replication-controller/) on the rolling-update command for more detail. - - Note that the [Deployment](/docs/concepts/workloads/controllers/deployment/) object obviates the need to manage replication controller 'version names'. A desired state of an object is described by a Deployment, and if changes to that spec are _applied_, the deployment controller changes the actual state to the desired state at a controlled rate. (Deployment objects are currently part of the [`extensions` API Group](/docs/concepts/overview/kubernetes-api/#api-groups).) - -- You can manipulate labels for debugging. Because Kubernetes replication controllers and services match to pods using labels, this allows you to remove a pod from being considered by a controller, or served traffic by a service, by removing the relevant selector labels. If you remove the labels of an existing pod, its controller will create a new pod to take its place. This is a useful way to debug a previously "live" pod in a quarantine environment. See the [`kubectl label`](/docs/concepts/overview/working-with-objects/labels/) command. - -## Container Images - -- The [default container image pull policy](/docs/concepts/containers/images/) is `IfNotPresent`, which causes the [Kubelet](/docs/admin/kubelet/) to not pull an image if it already exists. If you would like to always force a pull, you must specify a pull image policy of `Always` in your .yaml file (`imagePullPolicy: Always`) or specify a `:latest` tag on your image. - - That is, if you're specifying an image with other than the `:latest` tag, for example `myimage:v1`, and there is an image update to that same tag, the Kubelet won't pull the updated image. You can address this by ensuring that any updates to an image bump the image tag as well (for example, `myimage:v2`), and ensuring that your configs point to the correct version. - - **Note:** You should avoid using `:latest` tag when deploying containers in production, because this makes it hard to track which version of the image is running and hard to roll back. - -- To work only with a specific version of an image, you can specify an image with its digest (SHA256). This approach guarantees that the image will never update. For detailed information about working with image digests, see [the Docker documentation](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier). - -## Using kubectl - -- Use `kubectl create -f ` where possible. This looks for config objects in all `.yaml`, `.yml`, and `.json` files in `` and passes them to `create`. - -- Use `kubectl delete` rather than `stop`. `Delete` has a superset of the functionality of `stop`, and `stop` is deprecated. - -- Use kubectl bulk operations (via files and/or labels) for get and delete. See [label selectors](/docs/user-guide/labels/#label-selectors) and [using labels effectively](/docs/concepts/cluster-administration/manage-deployment/#using-labels-effectively). - -- Use `kubectl run` and `expose` to quickly create and expose single container Deployments. See the [quick start guide](/docs/user-guide/quick-start/) for an example. - -{% endcapture %} - -{% include templates/concept.md %} diff --git a/cn/docs/concepts/configuration/secret.md b/cn/docs/concepts/configuration/secret.md new file mode 100644 index 0000000000..9b61a725eb --- /dev/null +++ b/cn/docs/concepts/configuration/secret.md @@ -0,0 +1,587 @@ +--- +approvers: +- mikedanese +title: Secret +--- + +`Secret` 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 ssh key。将这些信息放在 `secret` 中比放在 `pod` 的定义或者 docker 镜像中来说更加安全和灵活。参阅 [Secret 设计文档](https://git.k8s.io/community/contributors/design-proposals/secrets.md) 获取更多详细信息。 + +* TOC +{:toc} +## Secret 概览 + +Secret 是一种包含少量敏感信息例如密码、token 或 key 的对象。这样的信息可能会被放在 Pod spec 中或者镜像中;将其放在一个 secret 对象中可以更好地控制它的用途,并降低意外暴露的风险。 + +用户可以创建 secret,同时系统也创建了一些 secret。 + +要使用 secret,pod 需要引用 secret。Pod 可以用两种方式使用 secret:作为 [volume](/docs/concepts/storage/volumes/) 中的文件被挂载到 pod 中的一个或者多个容器里,或者当 kubelet 为 pod 拉取镜像时使用。 + +### 内置 secret + +#### Service Account 使用 API 凭证自动创建和附加 secret + +Kubernetes 自动创建包含访问 API 凭据的 secret,并自动修改您的 pod 以使用此类型的 secret。 + +如果需要,可以禁用或覆盖自动创建和使用API凭据。但是,如果您需要的只是安全地访问 apiserver,我们推荐这样的工作流程。 + +参阅 [Service Account](/docs/user-guide/service-accounts) 文档获取关于 Service Account 如何工作的更多信息。 + +### 创建您自己的 Secret + +#### 使用 kubectl 创建 Secret + +假设有些 pod 需要访问数据库。这些 pod 需要使用的用户名和密码在您本地机器的 `./username.txt` 和 `./password.txt` 文件里。 + +```shell +# Create files needed for rest of example. +$ echo -n "admin" > ./username.txt +$ echo -n "1f2d1e2e67df" > ./password.txt +``` + +`kubectl create secret` 命令将这些文件打包到一个 Secret 中并在 API server 中创建了一个对象。 + +```shell +$ kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt +secret "db-user-pass" created +``` + +您可以这样检查刚创建的 secret: + +```shell +$ kubectl get secrets +NAME TYPE DATA AGE +db-user-pass Opaque 2 51s + +$ kubectl describe secrets/db-user-pass +Name: db-user-pass +Namespace: default +Labels: +Annotations: + +Type: Opaque + +Data +==== +password.txt: 12 bytes +username.txt: 5 bytes +``` + +请注意,默认情况下,`get` 和 `describe` 命令都不会显示文件的内容。这是为了防止将 secret 中的内容被意外暴露给从终端日志记录中刻意寻找它们的人。 + +请参阅 [解码 secret](#decoding-a-secret) 了解如何查看它们的内容。 + +#### 手动创建 Secret + +您也可以先以 json 或 yaml 格式在文件中创建一个 secret 对象,然后创建该对象。 + +每一项必须是 base64 编码: + +```shell +$ echo -n "admin" | base64 +YWRtaW4= +$ echo -n "1f2d1e2e67df" | base64 +MWYyZDFlMmU2N2Rm +``` + +现在可以像这样写一个 secret 对象: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: mysecret +type: Opaque +data: + username: YWRtaW4= + password: MWYyZDFlMmU2N2Rm +``` + +数据字段是一个映射。它的键必须匹配 [`DNS_SUBDOMAIN`](https://git.k8s.io/community/contributors/design-proposals/identifiers.md),前导点也是可以的。这些值可以是任意数据,使用 base64 进行编码。 + +使用 [`kubectl create`](/docs/user-guide/kubectl/v1.7/#create) 创建 secret: + +```shell +$ kubectl create -f ./secret.yaml +secret "mysecret" created +``` + +**编码注意:** secret 数据的序列化 JSON 和 YAML 值使用 base64 编码成字符串。换行符在这些字符串中无效,必须省略。当在 Darwin/OS X 上使用 `base64` 实用程序时,用户应避免使用 `-b` 选项来拆分长行。另外,对于 Linux 用户如果 `-w` 选项不可用的话,应该添加选项 `-w 0` 到 `base64` 命令或管道 `base64 | tr -d '\n' ` 。 + +#### 解码 Secret + +可以使用 `kubectl get secret` 命令获取 secret。例如,获取在上一节中创建的 secret: + +```shell +$ kubectl get secret mysecret -o yaml +apiVersion: v1 +data: + username: YWRtaW4= + password: MWYyZDFlMmU2N2Rm +kind: Secret +metadata: + creationTimestamp: 2016-01-22T18:41:56Z + name: mysecret + namespace: default + resourceVersion: "164619" + selfLink: /api/v1/namespaces/default/secrets/mysecret + uid: cfee02d6-c137-11e5-8d73-42010af00002 +type: Opaque +``` + +解码密码字段: + +```shell +$ echo "MWYyZDFlMmU2N2Rm" | base64 --decode +1f2d1e2e67df +``` + +### 使用 Secret + +Secret 可以作为数据卷被挂载,或作为环境变量暴露出来以供 pod 中的容器使用。它们也可以被系统的其他部分使用,而不直接暴露在 pod 内。例如,它们可以保存凭据,系统的其他部分应该用它来代表您与外部系统进行交互。 + +#### 在 Pod 中使用 Secret 文件 + +在 Pod 中的 volume 里使用 Secret: + +1. 创建一个 secret 或者使用已有的 secret。多个 pod 可以引用同一个 secret。 +2. 修改您的 pod 的定义在 `spec.volumes[]` 下增加一个 volume。可以给这个 volume 随意命名,它的 `spec.volumes[].secret.secretName` 必须等于 secret 对象的名字。 +3. 将 `spec.containers[].volumeMounts[]` 加到需要用到该 secret 的容器中。指定 `spec.containers[].volumeMounts[].readOnly = true` 和 `spec.containers[].volumeMounts[].mountPath` 为您想要该 secret 出现的尚未使用的目录。 +4. 修改您的镜像并且/或者命令行让程序从该目录下寻找文件。Secret 的 `data` 映射中的每一个键都成为了 `mountPath` 下的一个文件名。 + +这是一个在 pod 中使用 volume 挂在 secret 的例子: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: mypod +spec: + containers: + - name: mypod + image: redis + volumeMounts: + - name: foo + mountPath: "/etc/foo" + readOnly: true + volumes: + - name: foo + secret: + secretName: mysecret +``` + +您想要用的每个 secret 都需要在 `spec.volumes` 中指明。 + +如果 pod 中有多个容器,每个容器都需要自己的 `volumeMounts` 配置块,但是每个 secret 只需要一个 `spec.volumes`。 + +您可以打包多个文件到一个 secret 中,或者使用的多个 secret,怎样方便就怎样来。 + +**向特性路径映射 secret 密钥** + +我们还可以控制 Secret key 映射在 volume 中的路径。您可以使用 `spec.volumes[].secret.items` 字段修改每个 key 的目标路径: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: mypod +spec: + containers: + - name: mypod + image: redis + volumeMounts: + - name: foo + mountPath: "/etc/foo" + readOnly: true + volumes: + - name: foo + secret: + secretName: mysecret + items: + - key: username + path: my-group/my-username +``` + +将会发生什么呢: + +- `username` secret 存储在 `/etc/foo/my-group/my-username` 文件中而不是 `/etc/foo/username` 中。 +- `password` secret 没有被映射 + +如果使用了 `spec.volumes[].secret.items`,只有在 `items` 中指定的 key 被映射。要使用 secret 中所有的 key,所有这些都必须列在 `items` 字段中。所有列出的密钥必须存在于相应的 secret 中。否则,不会创建卷。 + +**Secret 文件权限** + +您还可以指定 secret 将拥有的权限模式位文件。如果不指定,默认使用 `0644`。您可以为整个保密卷指定默认模式,如果需要,可以覆盖每个密钥。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: mypod +spec: + containers: + - name: mypod + image: redis + volumeMounts: + - name: foo + mountPath: "/etc/foo" + volumes: + - name: foo + secret: + secretName: mysecret + defaultMode: 256 +``` + +然后,secret 将被挂载到 `/etc/foo` 目录,所有通过该 secret volume 挂载创建的文件的权限都是 `0400`。 + +请注意,JSON 规范不支持八进制符号,因此使用 256 值作为 0400 权限。如果您使用 yaml 而不是 json 作为 pod,则可以使用八进制符号以更自然的方式指定权限。 + +您还可以使用映射,如上一个示例,并为不同的文件指定不同的权限,如下所示: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: mypod +spec: + containers: + - name: mypod + image: redis + volumeMounts: + - name: foo + mountPath: "/etc/foo" + volumes: + - name: foo + secret: + secretName: mysecret + items: + - key: username + path: my-group/my-username + mode: 511 +``` + +在这种情况下,导致 `/etc/foo/my-group/my-username` 的文件的权限值为 `0777`。由于 JSON 限制,必须以十进制格式指定模式。 + +请注意,如果稍后阅读此权限值可能会以十进制格式显示。 + +**从 Volume 中消费 secret 值** + +在挂载的 secret volume 的容器内,secret key 将作为文件,并且 secret 的值使用 base-64 解码并存储在这些文件中。这是在上面的示例容器内执行的命令的结果: + +```shell +$ ls /etc/foo/ +username +password +$ cat /etc/foo/username +admin +$ cat /etc/foo/password +1f2d1e2e67df +``` + +容器中的程序负责从文件中读取 secret。 + +**挂载的 secret 被自动更新** + +当已经在 volume 中被消费的 secret 被更新时,被映射的 key 也将被更新。 + +Kubelet 在周期性同步时检查被挂载的 secret 是不是最新的。但是,它正在使用其基于本地 ttl 的缓存来获取当前的 secret 值。结果是,当 secret 被更新的时刻到将新的 secret 映射到 pod 的时刻的总延迟可以与 kubelet 中的secret 缓存的 kubelet sync period + ttl 一样长。 + +#### Secret 作为环境变量 + +将 secret 作为 pod 中的环境变量使用: + +1. 创建一个 secret 或者使用一个已存在的 secret。多个 pod 可以引用同一个 secret。 +2. 修改 Pod 定义,为每个要使用 secret 的容器添加对应 secret key 的环境变量。消费secret key 的环境变量应填充 secret 的名称,并键入 `env[x].valueFrom.secretKeyRef`。 +3. 修改镜像并/或者命令行,以便程序在指定的环境变量中查找值。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: secret-env-pod +spec: + containers: + - name: mycontainer + image: redis + env: + - name: SECRET_USERNAME + valueFrom: + secretKeyRef: + name: mysecret + key: username + - name: SECRET_PASSWORD + valueFrom: + secretKeyRef: + name: mysecret + key: password + restartPolicy: Never +``` + +**消费环境变量里的 Secret 值** + +在一个消耗环境变量 secret 的容器中,secret key 作为包含 secret 数据的 base-64 解码值的常规环境变量。这是从上面的示例在容器内执行的命令的结果: + +```shell +$ echo $SECRET_USERNAME +admin +$ echo $SECRET_PASSWORD +1f2d1e2e67df +``` + +#### 使用 imagePullSecret + +imagePullSecret 是将包含 Docker(或其他)镜像注册表密码的 secret 传递给 Kubelet 的一种方式,因此可以代表您的 pod 拉取私有镜像。 + +**手动指定 imagePullSecret** + +imagePullSecret 的使用在 [镜像文档](/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod) 中说明。 + +### 安排 imagePullSecrets 自动附加 + +您可以手动创建 imagePullSecret,并从 serviceAccount 引用它。使用该 serviceAccount 创建的任何 pod 和默认使用该 serviceAccount 的 pod 将会将其的 imagePullSecret 字段设置为服务帐户的 imagePullSecret 字段。有关该过程的详细说明,请参阅 [将 ImagePullSecrets 添加到服务帐户](/docs/tasks/configure-pod-container/configure-service-account/#adding-imagepullsecrets-to-a-service-account)。 + +#### 自动挂载手动创建的 Secret + +手动创建的 secret(例如包含用于访问 github 帐户的令牌)可以根据其服务帐户自动附加到 pod。请参阅 [使用 PodPreset 向 Pod 中注入信息](/docs/tasks/run-application/podpreset/) 以获取该进程的详细说明。 + +## 详细 + +### 限制 + +验证 secret volume 来源确保指定的对象引用实际上指向一个类型为 Secret 的对象。因此,需要在依赖于它的任何 pod 之前创建一个 secret。 + +Secret API 对象驻留在命名空间中。它们只能由同一命名空间中的 pod 引用。 + +每个 secret 的大小限制为1MB。这是为了防止创建非常大的 secret 会耗尽 apiserver 和 kubelet 的内存。然而,创建许多较小的 secret 也可能耗尽内存。更全面得限制 secret 对内存使用的功能还在计划中。 + +Kubelet 仅支持从 API server 获取的 Pod 使用 secret。这包括使用 kubectl 创建的任何 pod,或间接通过 replication controller 创建的 pod。它不包括通过 kubelet `--manifest-url` 标志,其 `--config` 标志或其 REST API 创建的pod(这些不是创建 pod 的常用方法)。 + +必须先创建 secret,除非将它们标记为可选项,否则必须在将其作为环境变量在 pod 中使用之前创建 secret。对不存在的 secret 的引用将阻止其启动。 + +使用 `secretKeyRef` ,引用指定的 secret 中的不存在的 key ,这会阻止 pod 的启动。 + +对于通过 `envFrom` 填充环境变量的 secret,这些环境变量具有被认为是无效环境变量名称的 key 将跳过这些键。该 pod 将被允许启动。将会有一个事件,其原因是 `InvalidVariableNames`,该消息将包含被跳过的无效键的列表。该示例显示一个 pod,它指的是包含2个无效键,1badkey 和 2alsobad 的默认/mysecret ConfigMap。 + +```shell +$ kubectl get events +LASTSEEN FIRSTSEEN COUNT NAME KIND SUBOBJECT TYPE REASON +0s 0s 1 dapi-test-pod Pod Warning InvalidEnvironmentVariableNames kubelet, 127.0.0.1 Keys [1badkey, 2alsobad] from the EnvFrom secret default/mysecret were skipped since they are considered invalid environment variable names. +``` + +### Secret 与 Pod 生命周期的联系 + +通过 API 创建 Pod 时,不会检查应用的 secret 是否存在。一旦 Pod 被调度,kubelet 就会尝试获取该 secret 的值。如果获取不到该 secret,或者暂时无法与 API server 建立连接,kubelet 将会定期重试。Kubelet 将会报告关于 pod 的事件,并解释它无法启动的原因。一旦获取到 secret,kubelet将创建并装载一个包含它的卷。在所有 pod 的卷被挂载之前,都不会启动 pod 的容器。 + +## 使用案例 + +### 使用案例:包含 ssh 密钥的 pod + +创建一个包含 ssh key 的 secret: + +```shell +$ kubectl create secret generic ssh-key-secret --from-file=ssh-privatekey=/path/to/.ssh/id_rsa --from-file=ssh-publickey=/path/to/.ssh/id_rsa.pub +``` + +**安全性注意事项**:发送自己的 ssh 密钥之前要仔细思考:集群的其他用户可能有权访问该密钥。使用您想要共享 Kubernetes 群集的所有用户可以访问的服务帐户,如果它们遭到入侵,可以撤销。 + +现在我们可以创建一个使用 ssh 密钥引用 secret 的pod,并在一个卷中使用它: + +```yaml +kind: Pod +apiVersion: v1 +metadata: + name: secret-test-pod + labels: + name: secret-test +spec: + volumes: + - name: secret-volume + secret: + secretName: ssh-key-secret + containers: + - name: ssh-test-container + image: mySshImage + volumeMounts: + - name: secret-volume + readOnly: true + mountPath: "/etc/secret-volume" +``` + +当容器中的命令运行时,密钥的片段将可在以下目录: + +```shell +/etc/secret-volume/ssh-publickey +/etc/secret-volume/ssh-privatekey +``` + +然后容器可以自由使用密钥数据建立一个 ssh 连接。 + +### 使用案例:包含 prod/test 凭据的 pod + +下面的例子说明一个 pod 消费一个包含 prod 凭据的 secret,另一个 pod 使用测试环境凭据消费 secret。 + +创建 secret: + +```shell +$ kubectl create secret generic prod-db-secret --from-literal=username=produser --from-literal=password=Y4nys7f11 +secret "prod-db-secret" created +$ kubectl create secret generic test-db-secret --from-literal=username=testuser --from-literal=password=iluvtests +secret "test-db-secret" created +``` + +创建 pod : + +```yaml +apiVersion: v1 +kind: List +items: +- kind: Pod + apiVersion: v1 + metadata: + name: prod-db-client-pod + labels: + name: prod-db-client + spec: + volumes: + - name: secret-volume + secret: + secretName: prod-db-secret + containers: + - name: db-client-container + image: myClientImage + volumeMounts: + - name: secret-volume + readOnly: true + mountPath: "/etc/secret-volume" +- kind: Pod + apiVersion: v1 + metadata: + name: test-db-client-pod + labels: + name: test-db-client + spec: + volumes: + - name: secret-volume + secret: + secretName: test-db-secret + containers: + - name: db-client-container + image: myClientImage + volumeMounts: + - name: secret-volume + readOnly: true + mountPath: "/etc/secret-volume" +``` + +这两个容器将在其文件系统上显示以下文件,其中包含每个容器环境的值: + +```shell +/etc/secret-volume/username +/etc/secret-volume/password +``` + +请注意,两个 pod 的 spec 配置中仅有一个字段有所不同;这有助于使用普通的 pod 配置模板创建具有不同功能的 pod。您可以使用两个 service account 进一步简化基本 pod spec:一个名为 `prod-user` 拥有 `prod-db-secret` ,另一个称为 `test-user` 拥有 `test-db-secret` 。然后,pod spec 可以缩短为,例如: + +```yaml +kind: Pod +apiVersion: v1 +metadata: + name: prod-db-client-pod + labels: + name: prod-db-client +spec: + serviceAccount: prod-db-client + containers: + - name: db-client-container + image: myClientImage +``` + +### 使用案例:Secret 卷中以点号开头的文件 + +为了将数据“隐藏”起来(即文件名以点号开头的文件),简单地说让该键以一个点开始。例如,当如下 secret 被挂载到卷中: + +```yaml +kind: Secret +apiVersion: v1 +metadata: + name: dotfile-secret +data: + .secret-file: dmFsdWUtMg0KDQo= +--- +kind: Pod +apiVersion: v1 +metadata: + name: secret-dotfiles-pod +spec: + volumes: + - name: secret-volume + secret: + secretName: dotfile-secret + containers: + - name: dotfile-test-container + image: gcr.io/google_containers/busybox + command: + - ls + - "-l" + - "/etc/secret-volume" + volumeMounts: + - name: secret-volume + readOnly: true + mountPath: "/etc/secret-volume" +``` + +`Secret-volume` 将包含一个单独的文件,叫做 `.secret-file`,`dotfile-test-container` 的 `/etc/secret-volume/.secret-file` 路径下将有该文件。 + +**注意** + +以点号开头的文件在 `ls -l` 的输出中被隐藏起来了;列出目录内容时,必须使用 `ls -la` 才能查看它们。 + +### 使用案例:Secret 仅对 pod 中的一个容器可见 + +考虑以下一个需要处理 HTTP 请求的程序,执行一些复杂的业务逻辑,然后使用 HMAC 签署一些消息。因为它具有复杂的应用程序逻辑,所以在服务器中可能会出现一个未被注意的远程文件读取漏洞,这可能会将私钥暴露给攻击者。 + +这可以在两个容器中分为两个进程:前端容器,用于处理用户交互和业务逻辑,但无法看到私钥;以及可以看到私钥的签名者容器,并且响应来自前端的简单签名请求(例如通过本地主机网络)。 + +使用这种分割方法,攻击者现在必须欺骗应用程序服务器才能进行任意的操作,这可能比使其读取文件更难。 + + + +## 最佳实践 + +### 客户端使用 Secret API + +当部署与 secret API 交互的应用程序时,应使用诸如 [RBAC](https://kubernetes.io/docs/admin/authorization/rbac/) 之类的 [授权策略](https://kubernetes.io/docs/admin/authorization/) 来限制访问。 + +Secret 中的值对于不同的环境来说重要性可能不同,例如对于 Kubernetes 集群内部(例如 service account 令牌)和集群外部来说就不一样。即使一个应用程序可以理解其期望的与之交互的 secret 有多大的能力,但是同一命名空间中的其他应用程序却可能不这样认为。 + +由于这些原因,在命名空间中 `watch` 和 `list` secret 的请求是非常强大的功能,应该避免这样的行为,因为列出 secret 可以让客户端检查所有 secret 是否在该命名空间中。在群集中`watch` 和 `list` 所有 secret 的能力应该只保留给最有特权的系统级组件。 + +需要访问 secrets API 的应用程序应该根据他们需要的 secret 执行 `get` 请求。这允许管理员限制对所有 secret 的访问,同时设置 [白名单访问](https://kubernetes.io/docs/admin/authorization/rbac/#referring-to-resources) 应用程序需要的各个实例。 + +为了提高循环获取的性能,客户端可以设计引用 secret 的资源,然后 `watch` 资源,在引用更改时重新请求 secret。此外,还提出了一种 [”批量监控“ API](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/bulk_watch.md) 来让客户端 `watch` 每个资源,该功能可能会在将来的 Kubernetes 版本中提供。 + +## 安全属性 + +### 保护 + +因为 `secret` 对象可以独立于使用它们的 `pod` 而创建,所以在创建、查看和编辑 pod 的流程中 secret 被暴露的风险较小。系统还可以对 `secret` 对象采取额外的预防措施,例如避免将其写入到磁盘中可能的位置。 + +只有当节点上的 pod 需要用到该 secret 时,该 secret 才会被发送到该节点上。它不会被写入磁盘,而是存储在 tmpfs 中。一旦依赖于它的 pod 被删除,它就被删除。 + +在大多数 Kubernetes 项目维护的发行版中,用户与 API server 之间的通信以及从 API server 到 kubelet 的通信都受到 SSL/TLS 的保护。通过这些通道传输时,secret 受到保护。 + +节点上的 secret 数据存储在 tmpfs 卷中,因此不会传到节点上的其他磁盘。 + +同一节点上的很多个 pod 可能拥有多个 secret。但是,只有 pod 请求的 secret 在其容器中才是可见的。因此,一个 pod 不能访问另一个 Pod 的 secret。 + +Pod 中有多个容器。但是,pod 中的每个容器必须请求其挂载卷中的 secret 卷才能在容器内可见。这可以用于 [在 Pod 级别构建安全分区](#使用案例secret-仅对-pod-中的一个容器可见)。 + +### 风险 + +- API server 的 secret 数据以纯文本的方式存储在 etcd 中,因此: + - 管理员应该限制 admin 用户访问 etcd; + - API server 中的 secret 数据位于 etcd 使用的磁盘上;管理员可能希望在不再使用时擦除/粉碎 etcd 使用的磁盘 +- 如果您将 secret 数据编码为 base64 的清单(JSON 或 YAML)文件,共享该文件或将其检入代码库,这样的话该密码将会被泄露。 Base64 编码不是一种加密方式,一样也是纯文本。 +- 应用程序在从卷中读取 secret 后仍然需要保护 secret 的值,例如不会意外记录或发送给不信任方。 +- 可以创建和使用 secret 的 pod 的用户也可以看到该 secret 的值。即使 API server 策略不允许用户读取 secret 对象,用户也可以运行暴露 secret 的 pod。 +- 如果运行了多个副本,那么这些 secret 将在它们之间共享。默认情况下,etcd 不能保证与 SSL/TLS 的对等通信,尽管可以进行配置。 +- 目前,任何节点的 root 用户都可以通过模拟 kubelet 来读取 API server 中的任何 secret。只有向实际需要它们的节点发送 secret 才能限制单个节点的根漏洞的影响,该功能还在计划中。 \ No newline at end of file diff --git a/cn/docs/concepts/containers/container-environment-variables.md b/cn/docs/concepts/containers/container-environment-variables.md new file mode 100644 index 0000000000..354115ddea --- /dev/null +++ b/cn/docs/concepts/containers/container-environment-variables.md @@ -0,0 +1,61 @@ +--- +approvers: +- mikedanese +- thockin +title: 容器环境变量 +--- + +{% capture overview %} + +本文介绍容器环境中对容器可用的资源。 + +{% endcapture %} + +{:toc} + +{% capture body %} + +## 容器环境 + +Kubernetes 容器环境为容器提供了几类重要的资源: + +* 一个文件系统,其中包含一个[镜像](/docs/concepts/containers/images/)和一个或多个[卷](/docs/concepts/storage/volumes/)。 +* 容器本身相关的信息。 +* 集群中其他对象相关的信息。 + +### 容器信息 + +容器的 *hostname* 是容器所在的 Pod 名称。 可以通过 `hostname` 命令或调用 libc 中的 +[`gethostname`](http://man7.org/linux/man-pages/man2/gethostname.2.html) +函数来获取。 + +Pod 名称和名字空间可以通过 +[downward API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/) 以环境变量方式访问。 + +与 Docker 镜像中静态指定的环境变量一样,Pod 中用户定义的环境变量也可用于容器。 + +### 集群信息 + +容器创建时运行的所有服务的列表都会作为环境变量提供给容器。 +这些环境变量与 Docker 链接语法相匹配。 + +对一个名为 *foo*,映射到名为 *bar* 的容器端口的服务, +会定义如下变量: + +```shell +FOO_SERVICE_HOST=<服务所在的主机地址> +FOO_SERVICE_PORT=<服务所启用的端口> +``` + +服务具有专用 IP 地址,如果启用了 [DNS 插件](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/dns/),还可以在容器中通过 DNS 进行访问。 + +{% endcapture %} + +{% capture whatsnext %} + +* 查看[容器生命周期挂钩(hooks)](/docs/concepts/containers/container-lifecycle-hooks/)了解更多。 +* 获取[为容器生命周期事件附加处理程序](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/)的实践经验。 + +{% endcapture %} + +{% include templates/concept.md %} diff --git a/cn/docs/concepts/containers/images.md b/cn/docs/concepts/containers/images.md index a50c57b5a0..19dfa52de4 100644 --- a/cn/docs/concepts/containers/images.md +++ b/cn/docs/concepts/containers/images.md @@ -31,7 +31,7 @@ title: 镜像 - 使用Google Container Registry - 每个集群分别配置 - - 在Google Compute Engine 或者 Google Container Engine上自动配置 + - 在Google Compute Engine 或者 Google Kubernetes Engine上自动配置 - 所有的pod都能读取项目的私有仓库 - 使用 AWS EC2 Container Registry (ECR) - 使用IAM角色和策略来控制对ECR仓库的访问 @@ -51,7 +51,7 @@ title: 镜像 ### 使用 Google Container Registry Kuberetes运行在Google Compute Engine (GCE)时原生支持[Google ContainerRegistry (GCR)] (https://cloud.google.com/tools/container-registry/)。如果kubernetes集群运行在GCE -或者Google Container Engine (GKE)上,使用镜像全名(e.g. gcr.io/my_project/image:tag)即可。 +或者Google Kubernetes Engine 上,使用镜像全名(e.g. gcr.io/my_project/image:tag)即可。 集群中的所有pod都会有读取这个仓库中镜像的权限。 @@ -112,7 +112,7 @@ Kubelet会获取并且定期刷新ECR的凭证。它需要以下权限 ### 配置Nodes对私有仓库认证 -**注意:** 如果在Google Container Engine (GKE)上运行集群,每个节点上都会有`.dockercfg`文件,它包含对Google Container Registry的凭证。 +**注意:** 如果在Google Kubernetes Engine 上运行集群,每个节点上都会有`.dockercfg`文件,它包含对Google Container Registry的凭证。 不需要使用以下方法。 **注意:** 如果在AWS EC2上运行集群且准备使用EC2 Container Registry (ECR),每个node上的kubelet会管理和更新ECR的登录凭证。不需要使用以下方法。 @@ -175,7 +175,7 @@ $ kubectl describe pods/private-image-test-1 | grep "Failed" ### 提前拉取镜像 -**注意:** 如果在Google Container Engine (GKE)上运行集群,每个节点上都会有`.dockercfg`文件,它包含对Google Container Registry的凭证。 +**注意:** 如果在Google Kubernetes Engine 上运行集群,每个节点上都会有`.dockercfg`文件,它包含对Google Container Registry的凭证。 不需要使用以下方法。 **注意:** 该方法适用于能够对节点进行配置的情况。该方法在GCE及在其它能自动配置节点的云平台上并不适合。 @@ -193,7 +193,7 @@ $ kubectl describe pods/private-image-test-1 | grep "Failed" ### 在pod上指定ImagePullSecrets -**注意:** GKE,GCE及其他自动创建node的云平台上,推荐使用本方法。 +**注意:** Google Kubernetes Engine,GCE及其他自动创建node的云平台上,推荐使用本方法。 Kuberentes支持在pod中指定仓库密钥。 @@ -262,7 +262,7 @@ spec: 也可以在[serviceAccount](/docs/user-guide/service-accounts) 资源中设置imagePullSecrets自动设置`imagePullSecrets` -`imagePullSecrets`可以和每个node上的`.docker/config.json`一起使用,他们将共同生效。本方法在Google Container Engine (GKE) +`imagePullSecrets`可以和每个node上的`.docker/config.json`一起使用,他们将共同生效。本方法在Google Kubernetes Engine 也能正常工作。 ### 使用场景 diff --git a/cn/docs/concepts/overview/components.md b/cn/docs/concepts/overview/components.md index 8275ba4df6..75a9bd0d46 100644 --- a/cn/docs/concepts/overview/components.md +++ b/cn/docs/concepts/overview/components.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - lavalamp title: Kubernetes 组件 redirect_from: @@ -39,7 +39,7 @@ Master 组件可以在集群中的任何节点上运行。然而,为了简单 ### 云控制器管理器-(cloud-controller-manager) -cloud-controller-manager 是用于与底层云提供商交互的控制器。云控制器管理器二进制是 Kubernetes v1.6 版本中引入的 Alpha 功能。 +cloud-controller-manager 是用于与底层云提供商交互的控制器。云控制器管理器可执行组件是 Kubernetes v1.6 版本中引入的 Alpha 功能。 cloud-controller-manager 仅运行云提供商特定的控制器循环。您必须在 kube-controller-manager 中禁用这些控制器循环,您可以通过在启动 kube-controller-manager 时将 `--cloud-provider` 标志设置为`external`来禁用控制器循环。 diff --git a/cn/docs/concepts/overview/kubernetes-api.md b/cn/docs/concepts/overview/kubernetes-api.md new file mode 100644 index 0000000000..d164080b4e --- /dev/null +++ b/cn/docs/concepts/overview/kubernetes-api.md @@ -0,0 +1,98 @@ +# Kubernetes API 概述 + +[API协议文档](https://git.k8s.io/community/contributors/devel/api-conventions.md)描述了主系统和API概念。 + +[API参考文档](https://kubernetes.io/docs/reference)描述了API整体规范。 + +[访问文档](https://kubernetes.io/docs/admin/accessing-the-api)讨论了通过远程访问API的相关问题。 + +Kubernetes API是系统描述性配置的基础。 [Kubectl](https://kubernetes.io/docs/user-guide/kubectl/) 命令行工具被用于创建、更新、删除、获取API对象。 + +Kubernetes 通过API资源存储自己序列化状态(现在存储在[etcd](https://coreos.com/docs/distributed-configuration/getting-started-with-etcd/))。 + +Kubernetes 被分成多个组件,各部分通过API相互交互。 + +## API 变更 + +根据经验,任何成功的系统都需要随着新的用例出现或现有用例发生变化的情况下,进行相应的进化与调整。因此,我们希望Kubernetes API也可以保持持续的进化和调整。同时,在较长一段时间内,我们也希望与现有客户端版本保持良好的向下兼容性。一般情况下,增加新的API资源和资源字段不会导致向下兼容性问题发生;但如果是需要删除一个已有的资源或者字段,那么必须通过[API废弃流程](/docs/reference/deprecation-policy/)来进行。 + +参考[API变更文档](https://git.k8s.io/community/contributors/devel/api_changes.md),了解兼容性变更的要素以及如何变更API的流程。 + +## API Swagger 定义 + +Kubernetes使用 [Swagger v1.2](http://swagger.io/) 与 [OpenAPI](https://www.openapis.org/) 记录API所有细节。Kubernetes apiserver (即 “master”)提供了一个API接口用于获取 Swagger 1.2 Kubernetes API 规范 ,默认在路径 **`/swaggerapi`** 下。你也可以为API服务器可以设置 **`-enable-swagger-ui=true`** 来启用API界面,之后使用浏览器访问 **`/swagger-ui`**,浏览API文档。 + + +Kubernetes从1.4版本开始,也支持通过 [**`/swagger.json`**](https://git.k8s.io/kubernetes/api/openapi-spec/swagger.json) 来访问 OpenAPI 形式给出的API文档。在我们将 Swagger v1.2 切换到 OpenAPI (aka Swagger v2.0) 期间,一部分工具(如 kubectl 与 swagger-ui )会继续使用 1.2 版本规范。Kubernetes 1.5 版本中的 OpenAPI 规范是 Beta 版本。 + +Kubernetes实现了另一种基于Protobuf的序列化格式,该格式主要用于集群内通信,并在[设计方案](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/protobuf.md)中进行了说明,每个模式的IDL文件位于定义API对象的Go软件包中。 + +## API 版本 + +为了使删除字段或者重构资源表示更加容易,Kubernetes 支持多个API版本。每一个版本都在不同API路径下,例如 **`/api/v1`** 或者 **`/apis/extensions/v1beta1`**。 + +我们选择在API级别进行版本化,而不是在资源或字段级别进行版本化,以确保API提供清晰,一致的系统资源和行为视图,并控制对已废止的API和/或实验性API的访问。 JSON和Protobuf序列化模式遵循架构更改的相同准则 - 下面的所有描述都同时适用于这两种格式。 + +请注意,API版本控制和软件版本控制只有间接相关性。 [API和发行版本建议](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md)描述了API版本与软件版本之间的关系。 + +不同的API版本名称意味着不同级别的软件稳定性和支持程度。 每个级别的标准在[API变更文档](https://git.k8s.io/community/contributors/devel/api_changes.md#alpha-beta-and-stable-versions)中有更详细的描述。 内容主要概括如下: + +* Alpha 测试版本: + + * 版本名称包含了 **`alpha`** (例如:**`v1alpha1`**)。 + + * 可能是有缺陷的。启用该功能可能会带来隐含的问题,默认情况是关闭的。 + + * 支持的功能可能在没有通知的情况下随时删除。 + + * API的更改可能会带来兼容性问题,但是在后续的软件发布中不会有任何通知。 + + * 由于bugs风险的增加和缺乏长期的支持,推荐在短暂的集群测试中使用。 + +* Beta 测试版本: + + * 版本名称包含了 **`beta`** (例如: **`v2beta3`**)。 + + * 代码已经测试过。启用该功能被认为是安全的,功能默认已启用。 + + * 所有已支持的功能不会被删除,细节可能会发生变化。 + + * 对象的模式和/或语义可能会在后续的beta测试版或稳定版中以不兼容的方式进行更改。 发生这种情况时,我们将提供迁移到下一个版本的说明。 这可能需要删除、编辑和重新创建API对象。执行编辑操作时需要谨慎行事,这可能需要停用依赖该功能的应用程序。 + + * 建议仅用于非业务关键型用途,因为后续版本中可能存在不兼容的更改。 如果您有多个可以独立升级的群集,则可以放宽此限制。 + + * **请尝试我们的 beta 版本功能并且给出反馈!一旦他们退出 beta 测试版,我们可能不会做出更多的改变。** + +* 稳定版本: + + * 版本名称是 **`vX`**,其中 **`X`** 是整数。 + + * 功能的稳定版本将出现在许多后续版本的发行软件中。 + +## API 组 + +为了更容易地扩展Kubernetes API,我们实现了[*`API组`*](https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md)。 API组在REST路径和序列化对象的 **`apiVersion`** 字段中指定。 + +目前有几个API组正在使用中: + +1. 核心组(通常被称为遗留组)位于REST路径 **`/api/v1`** 并使用 **`apiVersion:v1`**。 + +1. 指定的组位于REST路径 **`/apis/$GROUP_NAME/$VERSION`**,并使用 **`apiVersion:$GROUP_NAME/$VERSION`**(例如 **`apiVersion:batch/v1`**)。 在[Kubernetes API参考](https://kubernetes.io/docs/reference/)中可以看到支持的API组的完整列表。 + +社区支持使用以下两种方式来提供自定义资源对API进行扩展[自定义资源](https://kubernetes.io/docs/concepts/api-extension/custom-resources/): + +1. [CustomResourceDefinition](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/)适用于具有非常基本的CRUD需求的用户。 + +1. 即将推出:需要全套Kubernetes API语义的用户可以实现自己的apiserver,并使用[聚合器](https://git.k8s.io/community/contributors/design-proposals/api-machinery/aggregated-api-servers.md)为客户提供无缝的服务。 + +## 启用 API 组 + +某些资源和API组默认情况下处于启用状态。 可以通过在apiserver上设置 **`--runtime-config`** 来启用或禁用它们。 **`--runtime-config`** 接受逗号分隔的值。 例如:要禁用batch/v1,请设置**`--runtime-config=batch/v1=false`**,以启用batch/v2alpha1,请设置**`--runtime-config=batch/v2alpha1`**。 该标志接受描述apiserver的运行时配置的逗号分隔的一组键值对。 + +重要:启用或禁用组或资源需要重新启动apiserver和控制器管理器来使得 **`--runtime-config`** 更改生效。 + +## 启用组中资源 + +DaemonSets,Deployments,HorizontalPodAutoscalers,Ingress,Jobs和ReplicaSets是默认启用的。 其他扩展资源可以通过在apiserver上设置 **`--runtime-config`** 来启用。**`--runtime-config`** 接受逗号分隔的值。 + +例如:要禁用 Deployment 和 Ingress,请设置 **`--runtime-config=extensions/v1beta1/deployments=false,extensions/v1beta1/ingress=false`** \ No newline at end of file diff --git a/cn/docs/concepts/policy/pod-security-policy.md b/cn/docs/concepts/policy/pod-security-policy.md index 6d269c89b2..5cc7ab07f3 100644 --- a/cn/docs/concepts/policy/pod-security-policy.md +++ b/cn/docs/concepts/policy/pod-security-policy.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - pweil- title: Pod 安全策略 redirect_from: diff --git a/cn/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md b/cn/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md index dc0fec24cd..3ad1239021 100644 --- a/cn/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md +++ b/cn/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - rickypai - thockin title: 使用 HostAliases 向 Pod /etc/hosts 文件添加条目 diff --git a/cn/docs/concepts/services-networking/dns-pod-service.md b/cn/docs/concepts/services-networking/dns-pod-service.md index e1792c4657..1ce39cde26 100644 --- a/cn/docs/concepts/services-networking/dns-pod-service.md +++ b/cn/docs/concepts/services-networking/dns-pod-service.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - davidopp - thockin title: DNS Pod 与 Service diff --git a/cn/docs/concepts/services-networking/ingress.md b/cn/docs/concepts/services-networking/ingress.md deleted file mode 100644 index f77b809e67..0000000000 --- a/cn/docs/concepts/services-networking/ingress.md +++ /dev/null @@ -1,298 +0,0 @@ ---- -approvers: -- bprashanth -title: Ingress Resources ---- - -* TOC -{:toc} - -__Terminology__ - -Throughout this doc you will see a few terms that are sometimes used interchangeably elsewhere, that might cause confusion. This section attempts to clarify them. - -* Node: A single virtual or physical machine in a Kubernetes cluster. -* Cluster: A group of nodes firewalled from the internet, that are the primary compute resources managed by Kubernetes. -* Edge router: A router that enforces the firewall policy for your cluster. This could be a gateway managed by a cloud provider or a physical piece of hardware. -* Cluster network: A set of links, logical or physical, that facilitate communication within a cluster according to the [Kubernetes networking model](/docs/concepts/cluster-administration/networking/). Examples of a Cluster network include Overlays such as [flannel](https://github.com/coreos/flannel#flannel) or SDNs such as [OVS](/docs/admin/ovs-networking/). -* Service: A Kubernetes [Service](/docs/concepts/services-networking/service/) that identifies a set of pods using label selectors. Unless mentioned otherwise, Services are assumed to have virtual IPs only routable within the cluster network. - -## What is Ingress? - -Typically, services and pods have IPs only routable by the cluster network. All traffic that ends up at an edge router is either dropped or forwarded elsewhere. Conceptually, this might look like: - -``` - internet - | - ------------ - [ Services ] -``` - -An Ingress is a collection of rules that allow inbound connections to reach the cluster services. - -``` - internet - | - [ Ingress ] - --|-----|-- - [ Services ] -``` - -It can be configured to give services externally-reachable URLs, load balance traffic, terminate SSL, offer name based virtual hosting etc. Users request ingress by POSTing the Ingress resource to the API server. An [Ingress controller](#ingress-controllers) is responsible for fulfilling the Ingress, usually with a loadbalancer, though it may also configure your edge router or additional frontends to help handle the traffic in an HA manner. - -## Prerequisites - -Before you start using the Ingress resource, there are a few things you should understand. The Ingress is a beta resource, not available in any Kubernetes release prior to 1.1. You need an Ingress controller to satisfy an Ingress, simply creating the resource will have no effect. - -GCE/GKE deploys an ingress controller on the master. You can deploy any number of custom ingress controllers in a pod. You must annotate each ingress with the appropriate class, as indicated [here](https://git.k8s.io/ingress/controllers/nginx#running-multiple-ingress-controllers) and [here](https://git.k8s.io/ingress/controllers/gce/BETA_LIMITATIONS.md#disabling-glbc). - -Make sure you review the [beta limitations](https://git.k8s.io/ingress/controllers/gce/BETA_LIMITATIONS.md) of this controller. In environments other than GCE/GKE, you need to [deploy a controller](https://git.k8s.io/ingress/controllers) as a pod. - -## The Ingress Resource - -A minimal Ingress might look like: - -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: test-ingress - annotations: - ingress.kubernetes.io/rewrite-target: / -spec: - rules: - - http: - paths: - - path: /testpath - backend: - serviceName: test - servicePort: 80 -``` - -*POSTing this to the API server will have no effect if you have not configured an [Ingress controller](#ingress-controllers).* - -__Lines 1-6__: As with all other Kubernetes config, an Ingress needs `apiVersion`, `kind`, and `metadata` fields. For general information about working with config files, see [deploying applications](/docs/tasks/run-application/run-stateless-application-deployment/), [configuring containers](/docs/tasks/configure-pod-container/configmap/), [managing resources](/docs/concepts/cluster-administration/manage-deployment/) and [ingress configuration rewrite](https://github.com/kubernetes/ingress/blob/master/controllers/nginx/configuration.md#rewrite). - -__Lines 7-9__: Ingress [spec](https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status) has all the information needed to configure a loadbalancer or proxy server. Most importantly, it contains a list of rules matched against all incoming requests. Currently the Ingress resource only supports http rules. - -__Lines 10-11__: Each http rule contains the following information: A host (e.g.: foo.bar.com, defaults to * in this example), a list of paths (e.g.: /testpath) each of which has an associated backend (test:80). Both the host and path must match the content of an incoming request before the loadbalancer directs traffic to the backend. - -__Lines 12-14__: A backend is a service:port combination as described in the [services doc](/docs/concepts/services-networking/service/). Ingress traffic is typically sent directly to the endpoints matching a backend. - -__Global Parameters__: For the sake of simplicity the example Ingress has no global parameters, see the [API reference](https://releases.k8s.io/{{page.githubbranch}}/staging/src/k8s.io/api/extensions/v1beta1/types.go) for a full definition of the resource. One can specify a global default backend in the absence of which requests that don't match a path in the spec are sent to the default backend of the Ingress controller. - -## Ingress controllers - -In order for the Ingress resource to work, the cluster must have an Ingress controller running. This is unlike other types of controllers, which typically run as part of the `kube-controller-manager` binary, and which are typically started automatically as part of cluster creation. You need to choose the ingress controller implementation that is the best fit for your cluster, or implement one. Examples and instructions can be found [here](https://git.k8s.io/ingress/controllers). - -## Before you begin - -The following document describes a set of cross platform features exposed through the Ingress resource. Ideally, all Ingress controllers should fulfill this specification, but we're not there yet. The docs for the GCE and nginx controllers are [here](https://git.k8s.io/ingress/controllers/gce/README.md) and [here](https://git.k8s.io/ingress/controllers/nginx/README.md) respectively. **Make sure you review controller specific docs so you understand the caveats of each one**. - -## Types of Ingress - -### Single Service Ingress - -There are existing Kubernetes concepts that allow you to expose a single service (see [alternatives](#alternatives)), however you can do so through an Ingress as well, by specifying a *default backend* with no rules. - -{% include code.html language="yaml" file="ingress.yaml" ghlink="/docs/concepts/services-networking/ingress.yaml" %} - -If you create it using `kubectl create -f` you should see: - -```shell -$ kubectl get ing -NAME RULE BACKEND ADDRESS -test-ingress - testsvc:80 107.178.254.228 -``` - -Where `107.178.254.228` is the IP allocated by the Ingress controller to satisfy this Ingress. The `RULE` column shows that all traffic send to the IP is directed to the Kubernetes Service listed under `BACKEND`. - -### Simple fanout - -As described previously, pods within kubernetes have IPs only visible on the cluster network, so we need something at the edge accepting ingress traffic and proxying it to the right endpoints. This component is usually a highly available loadbalancer. An Ingress allows you to keep the number of loadbalancers down to a minimum, for example, a setup like: - -```shell -foo.bar.com -> 178.91.123.132 -> / foo s1:80 - / bar s2:80 -``` - -would require an Ingress such as: - -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: test - annotations: - ingress.kubernetes.io/rewrite-target: / -spec: - rules: - - host: foo.bar.com - http: - paths: - - path: /foo - backend: - serviceName: s1 - servicePort: 80 - - path: /bar - backend: - serviceName: s2 - servicePort: 80 -``` - -When you create the Ingress with `kubectl create -f`: - -```shell -$ kubectl get ing -NAME RULE BACKEND ADDRESS -test - - foo.bar.com - /foo s1:80 - /bar s2:80 -``` -The Ingress controller will provision an implementation specific loadbalancer that satisfies the Ingress, as long as the services (s1, s2) exist. When it has done so, you will see the address of the loadbalancer under the last column of the Ingress. - -### Name based virtual hosting - -Name-based virtual hosts use multiple host names for the same IP address. - -``` -foo.bar.com --| |-> foo.bar.com s1:80 - | 178.91.123.132 | -bar.foo.com --| |-> bar.foo.com s2:80 -``` - -The following Ingress tells the backing loadbalancer to route requests based on the [Host header](https://tools.ietf.org/html/rfc7230#section-5.4). - -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: test -spec: - rules: - - host: foo.bar.com - http: - paths: - - backend: - serviceName: s1 - servicePort: 80 - - host: bar.foo.com - http: - paths: - - backend: - serviceName: s2 - servicePort: 80 -``` - -__Default Backends__: An Ingress with no rules, like the one shown in the previous section, sends all traffic to a single default backend. You can use the same technique to tell a loadbalancer where to find your website's 404 page, by specifying a set of rules *and* a default backend. Traffic is routed to your default backend if none of the Hosts in your Ingress match the Host in the request header, and/or none of the paths match the URL of the request. - -### TLS - -You can secure an Ingress by specifying a [secret](/docs/user-guide/secrets) that contains a TLS private key and certificate. Currently the Ingress only supports a single TLS port, 443, and assumes TLS termination. If the TLS configuration section in an Ingress specifies different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension (provided the Ingress controller supports SNI). The TLS secret must contain keys named `tls.crt` and `tls.key` that contain the certificate and private key to use for TLS, e.g.: - -```yaml -apiVersion: v1 -data: - tls.crt: base64 encoded cert - tls.key: base64 encoded key -kind: Secret -metadata: - name: testsecret - namespace: default -type: Opaque -``` - -Referencing this secret in an Ingress will tell the Ingress controller to secure the channel from the client to the loadbalancer using TLS: - -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: no-rules-map -spec: - tls: - - secretName: testsecret - backend: - serviceName: s1 - servicePort: 80 -``` - -Note that there is a gap between TLS features supported by various Ingress controllers. Please refer to documentation on [nginx](https://git.k8s.io/ingress/controllers/nginx/README.md#https), [GCE](https://git.k8s.io/ingress/controllers/gce/README.md#tls), or any other platform specific Ingress controller to understand how TLS works in your environment. - -### Loadbalancing - -An Ingress controller is bootstrapped with some loadbalancing policy settings that it applies to all Ingress, such as the loadbalancing algorithm, backend weight scheme etc. More advanced loadbalancing concepts (e.g.: persistent sessions, dynamic weights) are not yet exposed through the Ingress. You can still get these features through the [service loadbalancer](https://git.k8s.io/contrib/service-loadbalancer). With time, we plan to distill loadbalancing patterns that are applicable cross platform into the Ingress resource. - -It's also worth noting that even though health checks are not exposed directly through the Ingress, there exist parallel concepts in Kubernetes such as [readiness probes](/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/) which allow you to achieve the same end result. Please review the controller specific docs to see how they handle health checks ([nginx](https://git.k8s.io/ingress/controllers/nginx/README.md), [GCE](https://git.k8s.io/ingress/controllers/gce/README.md#health-checks)). - -## Updating an Ingress - -Say you'd like to add a new Host to an existing Ingress, you can update it by editing the resource: - -```shell -$ kubectl get ing -NAME RULE BACKEND ADDRESS -test - 178.91.123.132 - foo.bar.com - /foo s1:80 -$ kubectl edit ing test -``` - -This should pop up an editor with the existing yaml, modify it to include the new Host. - -```yaml -spec: - rules: - - host: foo.bar.com - http: - paths: - - backend: - serviceName: s1 - servicePort: 80 - path: /foo - - host: bar.baz.com - http: - paths: - - backend: - serviceName: s2 - servicePort: 80 - path: /foo -.. -``` - -saving it will update the resource in the API server, which should tell the Ingress controller to reconfigure the loadbalancer. - -```shell -$ kubectl get ing -NAME RULE BACKEND ADDRESS -test - 178.91.123.132 - foo.bar.com - /foo s1:80 - bar.baz.com - /foo s2:80 -``` - -You can achieve the same by invoking `kubectl replace -f` on a modified Ingress yaml file. - -## Failing across availability zones - -Techniques for spreading traffic across failure domains differs between cloud providers. Please check the documentation of the relevant Ingress controller for details. Please refer to the federation [doc](/docs/concepts/cluster-administration/federation/) for details on deploying Ingress in a federated cluster. - -## Future Work - -* Various modes of HTTPS/TLS support (e.g.: SNI, re-encryption) -* Requesting an IP or Hostname via claims -* Combining L4 and L7 Ingress -* More Ingress controllers - -Please track the [L7 and Ingress proposal](https://github.com/kubernetes/kubernetes/pull/12827) for more details on the evolution of the resource, and the [Ingress repository](https://github.com/kubernetes/ingress/tree/master) for more details on the evolution of various Ingress controllers. - -## Alternatives - -You can expose a Service in multiple ways that don't directly involve the Ingress resource: - -* Use [Service.Type=LoadBalancer](/docs/user-guide/services/#type-loadbalancer) -* Use [Service.Type=NodePort](/docs/user-guide/services/#type-nodeport) -* Use a [Port Proxy](https://git.k8s.io/contrib/for-demos/proxy-to-service) -* Deploy the [Service loadbalancer](https://git.k8s.io/contrib/service-loadbalancer). This allows you to share a single IP among multiple Services and achieve more advanced loadbalancing through Service Annotations. diff --git a/cn/docs/concepts/services-networking/service.md b/cn/docs/concepts/services-networking/service.md index c6f2581062..2f7f139377 100644 --- a/cn/docs/concepts/services-networking/service.md +++ b/cn/docs/concepts/services-networking/service.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - bprashanth title: Service redirect_from: diff --git a/cn/docs/concepts/workloads/controllers/cron-jobs.md b/cn/docs/concepts/workloads/controllers/cron-jobs.md index ba64ea4032..6d3d990c07 100644 --- a/cn/docs/concepts/workloads/controllers/cron-jobs.md +++ b/cn/docs/concepts/workloads/controllers/cron-jobs.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - erictune - soltysh - janetkuo diff --git a/cn/docs/concepts/workloads/controllers/daemonset.md b/cn/docs/concepts/workloads/controllers/daemonset.md index bad6109558..e7058e4bc4 100644 --- a/cn/docs/concepts/workloads/controllers/daemonset.md +++ b/cn/docs/concepts/workloads/controllers/daemonset.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - erictune title: DaemonSet redirect_from: @@ -95,7 +95,7 @@ DaemonSet 也需要一个 [`.spec`](https://git.k8s.io/community/contributors/de -Daemon Pod 关心 [Taint 和 Toleration](/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature),它们会为没有指定 `tolerationSeconds` 的 `node.alpha.kubernetes.io/notReady` 和 `node.alpha.kubernetes.io/unreachable` 的 Taint,创建具有 `NoExecute` 的 Toleration。这确保了当 alpha 特性的 `TaintBasedEvictions` 被启用时,发生节点故障,比如网络分区,这时它们将不会被清除掉(当 `TaintBasedEvictions` 特性没有启用,在这些场景下也不会被清除,但会因为 NodeController 的硬编码行为而被清除,而不会因为 Toleration 导致被清除)。 +Daemon Pod 关心 [Taint 和 Toleration](/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature),它们会为没有指定 `tolerationSeconds` 的 `node.kubernetes.io/not-ready` 和 `node.alpha.kubernetes.io/unreachable` 的 Taint,创建具有 `NoExecute` 的 Toleration。这确保了当 alpha 特性的 `TaintBasedEvictions` 被启用时,发生节点故障,比如网络分区,这时它们将不会被清除掉(当 `TaintBasedEvictions` 特性没有启用,在这些场景下也不会被清除,但会因为 NodeController 的硬编码行为而被清除,而不会因为 Toleration 导致被清除)。 diff --git a/cn/docs/concepts/workloads/controllers/deployment.md b/cn/docs/concepts/workloads/controllers/deployment.md index acc21c984e..361b3d528f 100644 --- a/cn/docs/concepts/workloads/controllers/deployment.md +++ b/cn/docs/concepts/workloads/controllers/deployment.md @@ -686,7 +686,7 @@ Conditions: <...> ``` -If you run `kubectl get deployment nginx-deployment -o yaml`, the Deployement status might look like this: +If you run `kubectl get deployment nginx-deployment -o yaml`, the Deployment status might look like this: ``` status: diff --git a/cn/docs/concepts/workloads/controllers/garbage-collection.md b/cn/docs/concepts/workloads/controllers/garbage-collection.md index 1d8a921490..c9af3905b7 100644 --- a/cn/docs/concepts/workloads/controllers/garbage-collection.md +++ b/cn/docs/concepts/workloads/controllers/garbage-collection.md @@ -45,7 +45,7 @@ Kubernetes 垃圾收集器的角色是删除指定的对象,这些对象曾经 如果创建该 ReplicaSet,然后查看 Pod 的 metadata 字段,能够看到 OwnerReferences 字段: ```shell -kubectl create -f https://k8s.io/docs/concepts/abstractions/controllers/my-repset.yaml +kubectl create -f https://k8s.io/docs/concepts/controllers/my-repset.yaml kubectl get pods --output=yaml ``` diff --git a/cn/docs/concepts/workloads/controllers/statefulset.md b/cn/docs/concepts/workloads/controllers/statefulset.md deleted file mode 100644 index 689fea6255..0000000000 --- a/cn/docs/concepts/workloads/controllers/statefulset.md +++ /dev/null @@ -1,234 +0,0 @@ ---- -approvers: -- enisoc -- erictune -- foxish -- janetkuo -- kow3ns -- smarterclayton -title: StatefulSets ---- - -{% capture overview %} -**StatefulSet is the workload API object used to manage stateful applications. -StatefulSets are beta in 1.8.** - -{% include templates/glossary/snippet.md term="statefulset" length="long" %} -{% endcapture %} - -{% capture body %} - -## Using StatefulSets - -StatefulSets are valuable for applications that require one or more of the -following. - -* Stable, unique network identifiers. -* Stable, persistent storage. -* Ordered, graceful deployment and scaling. -* Ordered, graceful deletion and termination. -* Ordered, automated rolling updates. - -In the above, stable is synonymous with persistence across Pod (re)scheduling. -If an application doesn't require any stable identifiers or ordered deployment, -deletion, or scaling, you should deploy your application with a controller that -provides a set of stateless replicas. Controllers such as -[Deployment](/docs/concepts/workloads/controllers/deployment/) or -[ReplicaSet](/docs/concepts/workloads/controllers/replicaset/) may be better suited to your stateless needs. - -## Limitations - -* StatefulSet is a beta resource, not available in any Kubernetes release prior to 1.5. -* As with all alpha/beta resources, you can disable StatefulSet through the `--runtime-config` option passed to the apiserver. -* The storage for a given Pod must either be provisioned by a [PersistentVolume Provisioner](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/staging/persistent-volume-provisioning/README.md) based on the requested `storage class`, or pre-provisioned by an admin. -* Deleting and/or scaling a StatefulSet down will *not* delete the volumes associated with the StatefulSet. This is done to ensure data safety, which is generally more valuable than an automatic purge of all related StatefulSet resources. -* StatefulSets currently require a [Headless Service](/docs/concepts/services-networking/service/#headless-services) to be responsible for the network identity of the Pods. You are responsible for creating this Service. - -## Components -The example below demonstrates the components of a StatefulSet. - -* A Headless Service, named nginx, is used to control the network domain. -* The StatefulSet, named web, has a Spec that indicates that 3 replicas of the nginx container will be launched in unique Pods. -* The volumeClaimTemplates will provide stable storage using [PersistentVolumes](/docs/concepts/storage/volumes/) provisioned by a PersistentVolume Provisioner. - -```yaml -apiVersion: v1 -kind: Service -metadata: - name: nginx - labels: - app: nginx -spec: - ports: - - port: 80 - name: web - clusterIP: None - selector: - app: nginx ---- -apiVersion: apps/v1beta2 -kind: StatefulSet -metadata: - name: web -spec: - selector: - matchLabels: - app: nginx # has to match .spec.template.metadata.labels - serviceName: "nginx" - replicas: 3 # by default is 1 - template: - metadata: - labels: - app: nginx # has to match .spec.selector.matchLabels - spec: - terminationGracePeriodSeconds: 10 - containers: - - name: nginx - image: gcr.io/google_containers/nginx-slim:0.8 - ports: - - containerPort: 80 - name: web - volumeMounts: - - name: www - mountPath: /usr/share/nginx/html - volumeClaimTemplates: - - metadata: - name: www - spec: - accessModes: [ "ReadWriteOnce" ] - storageClassName: my-storage-class - resources: - requests: - storage: 1Gi -``` - -## Pod Selector -You must set the `spec.selector` field of a StatefulSet to match the labels of its `.spec.template.metadata.labels`. Prior to Kubernetes 1.8, the `spec.selector` field was defaulted when omitted. In 1.8 and later versions, failing to specify a matching Pod Selector will result in a validation error during StatefulSet creation. - -## Pod Identity -StatefulSet Pods have a unique identity that is comprised of an ordinal, a -stable network identity, and stable storage. The identity sticks to the Pod, -regardless of which node it's (re)scheduled on. - -### Ordinal Index - -For a StatefulSet with N replicas, each Pod in the StatefulSet will be -assigned an integer ordinal, in the range [0,N), that is unique over the Set. - -### Stable Network ID - -Each Pod in a StatefulSet derives its hostname from the name of the StatefulSet -and the ordinal of the Pod. The pattern for the constructed hostname -is `$(statefulset name)-$(ordinal)`. The example above will create three Pods -named `web-0,web-1,web-2`. -A StatefulSet can use a [Headless Service](/docs/concepts/services-networking/service/#headless-services) -to control the domain of its Pods. The domain managed by this Service takes the form: -`$(service name).$(namespace).svc.cluster.local`, where "cluster.local" -is the [cluster domain](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/dns/README.md). -As each Pod is created, it gets a matching DNS subdomain, taking the form: -`$(podname).$(governing service domain)`, where the governing service is defined -by the `serviceName` field on the StatefulSet. - -Here are some examples of choices for Cluster Domain, Service name, -StatefulSet name, and how that affects the DNS names for the StatefulSet's Pods. - -Cluster Domain | Service (ns/name) | StatefulSet (ns/name) | StatefulSet Domain | Pod DNS | Pod Hostname | --------------- | ----------------- | ----------------- | -------------- | ------- | ------------ | - cluster.local | default/nginx | default/web | nginx.default.svc.cluster.local | web-{0..N-1}.nginx.default.svc.cluster.local | web-{0..N-1} | - cluster.local | foo/nginx | foo/web | nginx.foo.svc.cluster.local | web-{0..N-1}.nginx.foo.svc.cluster.local | web-{0..N-1} | - kube.local | foo/nginx | foo/web | nginx.foo.svc.kube.local | web-{0..N-1}.nginx.foo.svc.kube.local | web-{0..N-1} | - -Note that Cluster Domain will be set to `cluster.local` unless -[otherwise configured](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/dns/README.md). - -### Stable Storage - -Kubernetes creates one [PersistentVolume](/docs/concepts/storage/volumes/) for each -VolumeClaimTemplate. In the nginx example above, each Pod will receive a single PersistentVolume -with a StorageClass of `my-storage-class` and 1 Gib of provisioned storage. If no StorageClass -is specified, then the default StorageClass will be used. When a Pod is (re)scheduled -onto a node, its `volumeMounts` mount the PersistentVolumes associated with its -PersistentVolume Claims. Note that, the PersistentVolumes associated with the -Pods' PersistentVolume Claims are not deleted when the Pods, or StatefulSet are deleted. -This must be done manually. - -## Deployment and Scaling Guarantees - -* For a StatefulSet with N replicas, when Pods are being deployed, they are created sequentially, in order from {0..N-1}. -* When Pods are being deleted, they are terminated in reverse order, from {N-1..0}. -* Before a scaling operation is applied to a Pod, all of its predecessors must be Running and Ready. -* Before a Pod is terminated, all of its successors must be completely shutdown. - -The StatefulSet should not specify a `pod.Spec.TerminationGracePeriodSeconds` of 0. This practice is unsafe and strongly discouraged. For further explanation, please refer to [force deleting StatefulSet Pods](/docs/tasks/run-application/force-delete-stateful-set-pod/). - -When the nginx example above is created, three Pods will be deployed in the order -web-0, web-1, web-2. web-1 will not be deployed before web-0 is -[Running and Ready](/docs/user-guide/pod-states), and web-2 will not be deployed until -web-1 is Running and Ready. If web-0 should fail, after web-1 is Running and Ready, but before -web-2 is launched, web-2 will not be launched until web-0 is successfully relaunched and -becomes Running and Ready. - -If a user were to scale the deployed example by patching the StatefulSet such that -`replicas=1`, web-2 would be terminated first. web-1 would not be terminated until web-2 -is fully shutdown and deleted. If web-0 were to fail after web-2 has been terminated and -is completely shutdown, but prior to web-1's termination, web-1 would not be terminated -until web-0 is Running and Ready. - -### Pod Management Policies -In Kubernetes 1.7 and later, StatefulSet allows you to relax its ordering guarantees while -preserving its uniqueness and identity guarantees via its `.spec.podManagementPolicy` field. - -#### OrderedReady Pod Management - -`OrderedReady` pod management is the default for StatefulSets. It implements the behavior -described [above](#deployment-and-scaling-guarantees). - -#### Parallel Pod Management - -`Parallel` pod management tells the StatefulSet controller to launch or -terminate all Pods in parallel, and to not wait for Pods to become Running -and Ready or completely terminated prior to launching or terminating another -Pod. - -## Update Strategies - -In Kubernetes 1.7 and later, StatefulSet's `.spec.updateStrategy` field allows you to configure -and disable automated rolling updates for containers, labels, resource request/limits, and -annotations for the Pods in a StatefulSet. - -### On Delete - -The `OnDelete` update strategy implements the legacy (1.6 and prior) behavior. It is the default -strategy when `spec.updateStrategy` is left unspecified. When a StatefulSet's -`.spec.updateStrategy.type` is set to `OnDelete`, the StatefulSet controller will not automatically -update the Pods in a StatefulSet. Users must manually delete Pods to cause the controller to -create new Pods that reflect modifications made to a StatefulSet's `.spec.template`. - -### Rolling Updates - -The `RollingUpdate` update strategy implements automated, rolling update for the Pods in a -StatefulSet. When a StatefulSet's `.spec.updateStrategy.type` is set to `RollingUpdate`, the -StatefulSet controller will delete and recreate each Pod in the StatefulSet. It will proceed -in the same order as Pod termination (from the largest ordinal to the smallest), updating -each Pod one at a time. It will wait until an updated Pod is Running and Ready prior to -updating its predecessor. - -#### Partitions - -The `RollingUpdate` update strategy can be partitioned, by specifying a -`.spec.updateStrategy.rollingUpdate.partition`. If a partition is specified, all Pods with an -ordinal that is greater than or equal to the partition will be updated when the StatefulSet's -`.spec.template` is updated. All Pods with an ordinal that is less than the partition will not -be updated, and, even if they are deleted, they will be recreated at the previous version. If a -StatefulSet's `.spec.updateStrategy.rollingUpdate.partition` is greater than its `.spec.replicas`, -updates to its `.spec.template` will not be propagated to its Pods. -In most cases you will not need to use a partition, but they are useful if you want to stage an -update, roll out a canary, or perform a phased roll out. - -{% endcapture %} -{% capture whatsnext %} - -* Follow an example of [deploying a stateful application](/docs/tutorials/stateful-application/basic-stateful-set). - -{% endcapture %} -{% include templates/concept.md %} diff --git a/cn/docs/concepts/workloads/pods/init-containers.md b/cn/docs/concepts/workloads/pods/init-containers.md index 47c31535c0..e075dbbec6 100644 --- a/cn/docs/concepts/workloads/pods/init-containers.md +++ b/cn/docs/concepts/workloads/pods/init-containers.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - erictune title: Init 容器 redirect_from: diff --git a/cn/docs/concepts/workloads/pods/pod-lifecycle.md b/cn/docs/concepts/workloads/pods/pod-lifecycle.md new file mode 100644 index 0000000000..8420f318bc --- /dev/null +++ b/cn/docs/concepts/workloads/pods/pod-lifecycle.md @@ -0,0 +1,174 @@ +--- +title: Pod 的生命周期 +redirect_from: +- "/docs/user-guide/pod-states/" +- "/docs/user-guide/pod-states.html" +--- + +{% capture overview %} + +{% comment %}Updated: 4/14/2015{% endcomment %} +{% comment %}Edited and moved to Concepts section: 2/2/17{% endcomment %} + +该页面将描述 Pod 的生命周期。 + +{% endcapture %} + +{% capture body %} + +## Pod phase + +Pod 的 `status` 定义在 [PodStatus](/docs/resources-reference/v1.7/#podstatus-v1-core) 对象中,其中有一个 `phase` 字段。 + +Pod 的运行阶段(phase)是 Pod 在其生命周期中的简单宏观概述。该阶段并不是对容器或 Pod 的综合汇总,也不是为了做为综合状态机。 + +Pod 相位的数量和含义是严格指定的。除了本文档中列举的内容外,不应该再假定 Pod 有其他的 `phase` 值。 + +下面是 `phase` 可能的值: + +- 挂起(Pending):Pod 已被 Kubernetes 系统接受,但有一个或者多个容器镜像尚未创建。等待时间包括调度 Pod 的时间和通过网络下载镜像的时间,这可能需要花点时间。 +- 运行中(Running):该 Pod 已经绑定到了一个节点上,Pod 中所有的容器都已被创建。至少有一个容器正在运行,或者正处于启动或重启状态。 +- 成功(Succeeded):Pod 中的所有容器都被成功终止,并且不会再重启。 +- 失败(Failed):Pod 中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止。 +- 未知(Unknown):因为某些原因无法取得 Pod 的状态,通常是因为与 Pod 所在主机通信失败。 + +## Pod 状态 + +Pod 有一个 PodStatus 对象,其中包含一个 [PodCondition](/docs/resources-reference/v1.7/#podcondition-v1-core) 数组。 PodCondition 数组的每个元素都有一个 `type` 字段和一个 `status` 字段。`type` 字段是字符串,可能的值有 PodScheduled、Ready、Initialized 和 Unschedulable。`status` 字段是一个字符串,可能的值有 True、False 和 Unknown。 + +## 容器探针 + +[探针](/docs/resources-reference/v1.7/#probe-v1-core) 是由 [kubelet](/docs/admin/kubelet/) 对容器执行的定期诊断。要执行诊断,kubelet 调用由容器实现的 [Handler](https://godoc.org/k8s.io/kubernetes/pkg/api/v1#Handler)。有三种类型的处理程序: + +- [ExecAction](/docs/resources-reference/v1.7/#execaction-v1-core):在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。 +- [TCPSocketAction](/docs/resources-reference/v1.7/#tcpsocketaction-v1-core):对指定端口上的容器的 IP 地址进行 TCP 检查。如果端口打开,则诊断被认为是成功的。 +- [HTTPGetAction](/docs/resources-reference/v1.7/#httpgetaction-v1-core):对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功的。 + +每次探测都将获得以下三种结果之一: + +- 成功:容器通过了诊断。 +- 失败:容器未通过诊断。 +- 未知:诊断失败,因此不会采取任何行动。 + +Kubelet 可以选择是否执行在容器上运行的两种探针执行和做出反应: + +- `livenessProbe`:指示容器是否正在运行。如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其 [重启策略](/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy) 的影响。如果容器不提供存活探针,则默认状态为 `Success`。 +- `readinessProbe`:指示容器是否准备好服务请求。如果就绪探测失败,端点控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址。初始延迟之前的就绪状态默认为 `Failure`。如果容器不提供就绪探针,则默认状态为 `Success`。 + +### 该什么时候使用存活(liveness)和就绪(readiness)探针? + +如果容器中的进程能够在遇到问题或不健康的情况下自行崩溃,则不一定需要存活探针; kubelet 将根据 Pod 的`restartPolicy` 自动执行正确的操作。 + +如果您希望容器在探测失败时被杀死并重新启动,那么请指定一个存活探针,并指定`restartPolicy` 为 Always 或 OnFailure。 + +如果要仅在探测成功时才开始向 Pod 发送流量,请指定就绪探针。在这种情况下,就绪探针可能与存活探针相同,但是 spec 中的就绪探针的存在意味着 Pod 将在没有接收到任何流量的情况下启动,并且只有在探针探测成功后才开始接收流量。 + +如果您希望容器能够自行维护,您可以指定一个就绪探针,该探针检查与存活探针不同的端点。 + +请注意,如果您只想在 Pod 被删除时能够排除请求,则不一定需要使用就绪探针;在删除 Pod 时,Pod 会自动将自身置于未完成状态,无论就绪探针是否存在。当等待 Pod 中的容器停止时,Pod 仍处于未完成状态。 + +## Pod 和容器状态 + +有关 Pod 容器状态的详细信息,请参阅 [PodStatus](/docs/resources-reference/v1.7/#podstatus-v1-core) 和 [ContainerStatus](/docs/resources-reference/v1.7/#containerstatus-v1-core)。请注意,报告的 Pod 状态信息取决于当前的 [ContainerState](/docs/resources-reference/v1.7/#containerstatus-v1-core)。 + +## 重启策略 + +PodSpec 中有一个 `restartPolicy` 字段,可能的值为 Always、OnFailure 和 Never。默认为 Always。 `restartPolicy` 适用于 Pod 中的所有容器。`restartPolicy` 仅指通过同一节点上的 kubelet 重新启动容器。失败的容器由 kubelet 以五分钟为上限的指数退避延迟(10秒,20秒,40秒...)重新启动,并在成功执行十分钟后重置。如 [Pod 文档](/docs/user-guide/pods/#durability-of-pods-or-lack-thereof) 中所述,一旦绑定到一个节点,Pod 将永远不会重新绑定到另一个节点。 + +## Pod 的生命 + +一般来说,Pod 不会消失,直到人为销毁他们。这可能是一个人或控制器。这个规则的唯一例外是成功或失败的 `phase` 超过一段时间(由 master 确定)的Pod将过期并被自动销毁。 + +有三种可用的控制器: + +- 使用 [Job](/docs/concepts/jobs/run-to-completion-finite-workloads/) 运行预期会终止的 Pod,例如批量计算。Job 仅适用于重启策略为 `OnFailure` 或 `Never` 的 Pod。 + + +- 对预期不会终止的 Pod 使用 [ReplicationController](/docs/concepts/workloads/controllers/replicationcontroller/)、[ReplicaSet](/docs/concepts/workloads/controllers/replicaset/) 和 [Deployment](/docs/concepts/workloads/controllers/deployment/) ,例如 Web 服务器。 ReplicationController 仅适用于具有 `restartPolicy` 为 Always 的 Pod。 +- 提供特定于机器的系统服务,使用 [DaemonSet](/docs/concepts/workloads/controllers/daemonset/) 为每台机器运行一个 Pod 。 + +所有这三种类型的控制器都包含一个 PodTemplate。建议创建适当的控制器,让它们来创建 Pod,而不是直接自己创建 Pod。这是因为单独的 Pod 在机器故障的情况下没有办法自动复原,而控制器却可以。 + +如果节点死亡或与集群的其余部分断开连接,则 Kubernetes 将应用一个策略将丢失节点上的所有 Pod 的 `phase` 设置为 Failed。 + +## 示例 + +### 高级 liveness 探针示例 + +存活探针由 kubelet 来执行,因此所有的请求都在 kubelet 的网络命名空间中进行。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + labels: + test: liveness + name: liveness-http +spec: + containers: + - args: + - /server + image: gcr.io/google_containers/liveness + livenessProbe: + httpGet: + # when "host" is not defined, "PodIP" will be used + # host: my-host + # when "scheme" is not defined, "HTTP" scheme will be used. Only "HTTP" and "HTTPS" are allowed + # scheme: HTTPS + path: /healthz + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: Awesome + initialDelaySeconds: 15 + timeoutSeconds: 1 + name: liveness +``` + +### 状态示例 + +- Pod 中只有一个容器并且正在运行。容器成功退出。 + - 记录完成事件。 + - 如果 `restartPolicy` 为: + - Always:重启容器;Pod `phase` 仍为 Running。 + - OnFailure:Pod `phase` 变成 Succeeded。 + - Never:Pod `phase` 变成 Succeeded。 +- Pod 中只有一个容器并且正在运行。容器退出失败。 + - 记录失败事件。 + - 如果 `restartPolicy` 为: + - Always:重启容器;Pod `phase` 仍为 Running。 + - OnFailure:重启容器;Pod `phase` 仍为 Running。 + - Never:Pod `phase` 变成 Failed。 +- Pod 中有两个容器并且正在运行。有一个容器退出失败。 + - 记录失败事件。 + - 如果 restartPolicy 为: + - Always:重启容器;Pod `phase` 仍为 Running。 + - OnFailure:重启容器;Pod `phase` 仍为 Running。 + - Never:不重启容器;Pod `phase` 仍为 Running。 + - 如果有一个容器没有处于运行状态,并且两个容器退出: + - 记录失败事件。 + - 如果 `restartPolicy` 为: + - Always:重启容器;Pod `phase` 仍为 Running。 + - OnFailure:重启容器;Pod `phase` 仍为 Running。 + - Never:Pod `phase` 变成 Failed。 +- Pod 中只有一个容器并处于运行状态。容器运行时内存超出限制: + - 容器以失败状态终止。 + - 记录 OOM 事件。 + - 如果 `restartPolicy` 为: + - Always:重启容器;Pod `phase` 仍为 Running。 + - OnFailure:重启容器;Pod `phase` 仍为 Running。 + - Never: 记录失败事件;Pod `phase` 仍为 Failed。 +- Pod 正在运行,磁盘故障: + - 杀掉所有容器。 + - 记录适当事件。 + - Pod `phase` 变成 Failed。 + - 如果使用控制器来运行,Pod 将在别处重建。 +- Pod 正在运行,其节点被分段。 + - 节点控制器等待直到超时。 + - 节点控制器将 Pod `phase` 设置为 Failed。 + - 如果是用控制器来运行,Pod 将在别处重建。 + +{% endcapture %} + +{% include templates/concept.md %} + diff --git a/cn/docs/concepts/workloads/pods/podpreset.md b/cn/docs/concepts/workloads/pods/podpreset.md new file mode 100644 index 0000000000..76d2d778be --- /dev/null +++ b/cn/docs/concepts/workloads/pods/podpreset.md @@ -0,0 +1,70 @@ +--- +approvers: +- jessfraz +title: Pod Preset +--- + +{% capture overview %} +本文提供了 PodPreset 的概述。 在 pod 创建时,用户可以使用 `podpreset` 对象将特定信息注入 +pod 中,这些信息可以包括 secret、 卷、卷挂载和环境变量。 +{% endcapture %} + +{:toc} + +{% capture body %} +## 理解 Pod Preset + +`Pod Preset` 是一种 API 资源,在 pod 创建时,用户可以用它将额外的运行时需求信息注入 pod。 +使用[标签选择器(label selector)](/docs/concepts/overview/working-with-objects/labels/#label-selectors)来指定 Pod Preset 所适用的 pod。 + +使用 Pod Preset 使得 pod 模板编写者不必显式地为每个 pod 设置信息。 +这样,使用特定服务的 pod 模板编写者不需要了解该服务的所有细节。 + +了解更多的相关背景信息,请参考 [ PodPreset 设计提案](https://git.k8s.io/community/contributors/design-proposals/service-catalog/pod-preset.md)。 + +## PodPreset 如何工作 + +Kubernetes 提供了准入控制器 (`PodPreset`),该控制器被启用时,会将 Pod Preset +应用于接收到的 pod 创建请求中。 +当出现 pod 创建请求时,系统会执行以下操作: + +1. 检索所有可用 `PodPresets` 。 +1. 检查 `PodPreset` 的标签选择器与要创建的 pod 的标签是否匹配。 +1. 尝试合并 `PodPreset` 中定义的各种资源,并注入要创建的 pod。 +1. 发生错误时抛出事件,该事件记录了 pod 信息合并错误,同时在 _不注入_ `PodPreset` 信息的情况下创建 pod。 +1. 为改动的 pod spec 添加注解,来表明它被 `PodPreset` 所修改。 注解形如: +`podpreset.admission.kubernetes.io/podpreset-": ""`。 + +一个 Pod 可能不与任何 Pod Preset 匹配,也可能匹配多个 Pod Preset。 同时,一个 `PodPreset` +可能不应用于任何 Pod,也可能应用于多个 Pod。 当 `PodPreset` 应用于一个或多个 Pod 时,Kubernetes +修改 pod spec。 对于 `Env`、 `EnvFrom` 和 `VolumeMounts` 的改动, Kubernetes 修改 pod +中所有容器的规格,对于卷的改动,Kubernetes 修改 Pod spec。 + +**注意:** Pod Preset 能够在适当的时候修改 Pod spec 的 `spec.containers` 字段, +但是不会应用于 `initContainers` 字段。 +{: .note} + +### 为特定 Pod 禁用 Pod Preset + +在一些情况下,用户不希望 pod 被 pod preset 所改动,这时,用户可以在 pod spec 中添加形如 + `podpreset.admission.kubernetes.io/exclude: "true"` 的注解。 + +## 启用 Pod Preset + +为了在集群中使用 Pod Preset,必须确保以下几点: + +1. 已启用 api 类型 `settings.k8s.io/v1alpha1/podpreset`。 这可以通过在 API 服务器的 + `--runtime-config` 配置项中包含 `settings.k8s.io/v1alpha1=true` 来实现。 +1. 已启用准入控制器 `PodPreset`。 启用的一种方式是在 API 服务器的 `--admission-control` + 配置项中包含 `PodPreset` 。 +1. 已经通过在相应的名字空间中创建 `PodPreset` 对象,定义了 Pod preset。 + +{% endcapture %} + +{% capture whatsnext %} + +* [使用 PodPreset 将信息注入 Pods](/docs/tasks/inject-data-application/podpreset/) + +{% endcapture %} + +{% include templates/concept.md %} diff --git a/cn/docs/getting-started-guides/centos/centos_manual_config.md b/cn/docs/getting-started-guides/centos/centos_manual_config.md index 4ff99653ac..ac79f48dfc 100644 --- a/cn/docs/getting-started-guides/centos/centos_manual_config.md +++ b/cn/docs/getting-started-guides/centos/centos_manual_config.md @@ -9,7 +9,7 @@ title: CentOS ## 警告 -本文档适用于Kubernetes 1.1.0,目前已经被[废弃](https://github.com/kubernetes/kubernetes.github.io/issues/1613)。相关内容请参阅最新版[指南](/docs/getting-started-guides/kubeadm/)。 +本文档适用于Kubernetes 1.1.0,目前已经被[废弃](https://github.com/kubernetes/website/issues/1613)。相关内容请参阅最新版[指南](/docs/getting-started-guides/kubeadm/)。 ## 前提条件 diff --git a/cn/docs/reference/labels-annotations-taints.md b/cn/docs/reference/labels-annotations-taints.md new file mode 100644 index 0000000000..fbeffb9587 --- /dev/null +++ b/cn/docs/reference/labels-annotations-taints.md @@ -0,0 +1,104 @@ +--- +title: 知名标签(Label)、注解(Annotation)和 Taints +--- + +Kubernetes 保留了 kubernetes.io 名字空间下的所有标签和注解。 本文描述了知名的 +kubernetes.io 标签和注解。 + +本文既作为这些标签和注解值的参考,也就这些标签和注解的赋值进行了说明。 + +**目录:** + + +- [知名标签、注解和 Taints](#well-known-labels-annotations-and-taints) + - [beta.kubernetes.io/arch](#betakubernetesioarch) + - [beta.kubernetes.io/os](#betakubernetesioos) + - [kubernetes.io/hostname](#kubernetesiohostname) + - [beta.kubernetes.io/instance-type](#betakubernetesioinstance-type) + - [failure-domain.beta.kubernetes.io/region](#failure-domainbetakubernetesioregion) + - [failure-domain.beta.kubernetes.io/zone](#failure-domainbetakubernetesiozone) + + + + +## beta.kubernetes.io/arch + +示例:`beta.kubernetes.io/arch=amd64` + +用于:节点 + +Kubelet 用 Go 中定义的 `runtime.GOARCH` 值来填充该标签。 这在诸如混用 arm 和 x86 节点的情况下很有用。 + +## beta.kubernetes.io/os + +示例:`beta.kubernetes.io/os=linux` + +用于:节点 + +Kubelet 用该 Go 中定义的 `runtime.GOOS` 值来填充该标签。 这在集群中存在不同操作系统的节点时很有用(尽管当前 Kubernetes 只支持 Linux 操作系统)。 + +## kubernetes.io/hostname + +示例:`kubernetes.io/hostname=ip-172-20-114-199.ec2.internal` + +用于:节点 + +Kubelet 用 hostname 值来填充该标签。 注意:可以通过向 kubelet 传入 `--hostname-override` +参数对 “真正的” hostname 进行修改。 + +## beta.kubernetes.io/instance-type + +示例:`beta.kubernetes.io/instance-type=m3.medium` + +用于:节点 + +Kubelet 用 `cloudprovider` 中定义的实例类型来填充该标签。 未使用 `cloudprovider` 时不会设置该标签。 +该标签在想要将某些负载定向到特定实例类型的节点上时会很有用,但通常用户更希望依赖 Kubernetes 调度器来执行基于资源的调度,所以用户应该致力于基于属性而不是实例类型来进行调度(例如:需要一个 CPU,而不是 `g2.2xlarge`)。 + + +## failure-domain.beta.kubernetes.io/region + +参考 [failure-domain.beta.kubernetes.io/zone](#failure-domainbetakubernetesiozone). + +## failure-domain.beta.kubernetes.io/zone + +示例: + +`failure-domain.beta.kubernetes.io/region=us-east-1` + +`failure-domain.beta.kubernetes.io/zone=us-east-1c` + +用于:节点、PersistentVolume + +用于节点: Kubelet 用 `cloudprovider` 中定义的区域(zone)信息来填充该标签。 未使用 `cloudprovider` +时不会设置该标签,但如果该标签在你的拓扑中有意义的话,应该考虑设置。 + +用于 PersistentVolume:在 GCE 和 AWS 中,`PersistentVolumeLabel` 准入控制器会自动添加区域标签。 + +在单区的集群中,Kubernetes 会自动将同一副本控制器或服务下的 pod 分散到不同的节点上 (以降低故障的影响)。 +在多区的集群中,这种分散的行为扩展到跨区的层面 (以降低区域故障的影响)。 跨区分散通过 SelectorSpreadPriority +来实现。 + +这是一种尽力而为(best-effort)的处置方式, 如果集群中的区域是异构的 (例如:不同区域之间的节点数量、 +节点类型或 pod 资源需求不同),可能使得 pod 在各区域间无法均匀分布。 如有需要,用户可以使用同质的区域 +(节点数量和类型相同) 来减小 pod 分布不均的可能性。 + +由于卷不能跨区域挂载(attach),调度器 (通过 VolumeZonePredicate 断言) 也会保证需要特定卷的 pod +被调度到卷所在的区域中。 + + +区域和地域(region)的实际值无关紧要,两者的层次含义也没有严格的定义。 最终期望是,除非整个地域故障, +否则某一区域节点的故障不应该影响到其他区域的节点。 例如,通常区域间应该避免共用同一个网络交换机。 +具体的规划取决于特定的基础设备—— three-rack 设备所选择的设置与多数据中心截然不同。 + +如果 `PersistentVolumeLabel` 准入控制器不支持自动为 PersistentVolume 打标签,且用户希望防止 pod +跨区域进行卷的挂载,应考虑手动打标签 (或对 `PersistentVolumeLabel` 增加支持)。 如果用户的基础设施没有这种约束,则不需要为卷添加区域标签。 + + + + + + + +[![分析](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/api-reference/labels-annotations-taints.md?pixel)]() + diff --git a/cn/docs/tasks/access-application-cluster/access-cluster.md b/cn/docs/tasks/access-application-cluster/access-cluster.md deleted file mode 100644 index a623ad36bf..0000000000 --- a/cn/docs/tasks/access-application-cluster/access-cluster.md +++ /dev/null @@ -1,318 +0,0 @@ ---- -title: Accessing Clusters ---- - -* TOC -{:toc} - -## Accessing the cluster API - -### Accessing for the first time with kubectl - -When accessing the Kubernetes API for the first time, we suggest using the -Kubernetes CLI, `kubectl`. - -To access a cluster, you need to know the location of the cluster and have credentials -to access it. Typically, this is automatically set-up when you work through -a [Getting started guide](/docs/getting-started-guides/), -or someone else setup the cluster and provided you with credentials and a location. - -Check the location and credentials that kubectl knows about with this command: - -```shell -$ kubectl config view -``` - -Many of the [examples](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/) provide an introduction to using -kubectl and complete documentation is found in the [kubectl manual](/docs/user-guide/kubectl/index). - -### Directly accessing the REST API - -Kubectl handles locating and authenticating to the apiserver. -If you want to directly access the REST API with an http client like -curl or wget, or a browser, there are several ways to locate and authenticate: - - - Run kubectl in proxy mode. - - Recommended approach. - - Uses stored apiserver location. - - Verifies identity of apiserver using self-signed cert. No MITM possible. - - Authenticates to apiserver. - - In future, may do intelligent client-side load-balancing and failover. - - Provide the location and credentials directly to the http client. - - Alternate approach. - - Works with some types of client code that are confused by using a proxy. - - Need to import a root cert into your browser to protect against MITM. - -#### Using kubectl proxy - -The following command runs kubectl in a mode where it acts as a reverse proxy. It handles -locating the apiserver and authenticating. -Run it like this: - -```shell -$ kubectl proxy --port=8080 & -``` - -See [kubectl proxy](/docs/user-guide/kubectl/v1.6/#proxy) for more details. - -Then you can explore the API with curl, wget, or a browser, like so: - -```shell -$ curl http://localhost:8080/api/ -{ - "versions": [ - "v1" - ] -} -``` - -#### Without kubectl proxy (before v1.3.x) - -It is possible to avoid using kubectl proxy by passing an authentication token -directly to the apiserver, like this: - -```shell -$ APISERVER=$(kubectl config view | grep server | cut -f 2- -d ":" | tr -d " ") -$ TOKEN=$(kubectl config view | grep token | cut -f 2 -d ":" | tr -d " ") -$ curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure -{ - "versions": [ - "v1" - ] -} -``` - -#### Without kubectl proxy (post v1.3.x) - -In Kubernetes version 1.3 or later, `kubectl config view` no longer displays the token. Use `kubectl describe secret...` to get the token for the default service account, like this: - -``` shell -$ APISERVER=$(kubectl config view | grep server | cut -f 2- -d ":" | tr -d " ") -$ TOKEN=$(kubectl describe secret $(kubectl get secrets | grep default | cut -f1 -d ' ') | grep -E '^token' | cut -f2 -d':' | tr -d '\t') -$ curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure -{ - "kind": "APIVersions", - "versions": [ - "v1" - ], - "serverAddressByClientCIDRs": [ - { - "clientCIDR": "0.0.0.0/0", - "serverAddress": "10.0.1.149:443" - } - ] -} -``` - -The above examples use the `--insecure` flag. This leaves it subject to MITM -attacks. When kubectl accesses the cluster it uses a stored root certificate -and client certificates to access the server. (These are installed in the -`~/.kube` directory). Since cluster certificates are typically self-signed, it -may take special configuration to get your http client to use root -certificate. - -On some clusters, the apiserver does not require authentication; it may serve -on localhost, or be protected by a firewall. There is not a standard -for this. [Configuring Access to the API](/docs/admin/accessing-the-api) -describes how a cluster admin can configure this. Such approaches may conflict -with future high-availability support. - -### Programmatic access to the API - -Kubernetes officially supports [Go](#go-client) and [Python](#python-client) -client libraries. - -#### Go client - -* To get the library, run the following command: `go get k8s.io/client-go//kubernetes`. See [https://github.com/kubernetes/client-go](https://github.com/kubernetes/client-go) to see which versions are supported. -* Write an application atop of the client-go clients. Note that client-go defines its own API objects, so if needed, please import API definitions from client-go rather than from the main repository, e.g., `import "k8s.io/client-go/1.4/pkg/api/v1"` is correct. - -The Go client can use the same [kubeconfig file](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/) -as the kubectl CLI does to locate and authenticate to the apiserver. See this [example](https://git.k8s.io/client-go/examples/out-of-cluster-client-configuration/main.go). - -If the application is deployed as a Pod in the cluster, please refer to the [next section](#accessing-the-api-from-a-pod). - -#### Python client - -To use [Python client](https://github.com/kubernetes-incubator/client-python), run the following command: `pip install kubernetes`. See [Python Client Library page](https://github.com/kubernetes-incubator/client-python) for more installation options. - -The Python client can use the same [kubeconfig file](/docs/user-guide/kubeconfig-file) -as the kubectl CLI does to locate and authenticate to the apiserver. See this [example](https://github.com/kubernetes-incubator/client-python/tree/master/examples/example1.py). - -#### Other languages - -There are [client libraries](/docs/reference/client-libraries/) for accessing the API from other languages. -See documentation for other libraries for how they authenticate. - -### Accessing the API from a Pod - -When accessing the API from a pod, locating and authenticating -to the apiserver are somewhat different. - -The recommended way to locate the apiserver within the pod is with -the `kubernetes` DNS name, which resolves to a Service IP which in turn -will be routed to an apiserver. - -The recommended way to authenticate to the apiserver is with a -[service account](/docs/tasks/configure-pod-container/configure-service-account/) credential. By kube-system, a pod -is associated with a service account, and a credential (token) for that -service account is placed into the filesystem tree of each container in that pod, -at `/var/run/secrets/kubernetes.io/serviceaccount/token`. - -If available, a certificate bundle is placed into the filesystem tree of each -container at `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`, and should be -used to verify the serving certificate of the apiserver. - -Finally, the default namespace to be used for namespaced API operations is placed in a file -at `/var/run/secrets/kubernetes.io/serviceaccount/namespace` in each container. - -From within a pod the recommended ways to connect to API are: - - - run a kubectl proxy as one of the containers in the pod, or as a background - process within a container. This proxies the - Kubernetes API to the localhost interface of the pod, so that other processes - in any container of the pod can access it. See this [example of using kubectl proxy - in a pod](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/kubectl-container/). - - use the Go client library, and create a client using the `rest.InClusterConfig()` and `kubernetes.NewForConfig()` functions. - They handle locating and authenticating to the apiserver. [example](https://git.k8s.io/client-go/examples/in-cluster-client-configuration/main.go) - -In each case, the credentials of the pod are used to communicate securely with the apiserver. - - -## Accessing services running on the cluster - -The previous section was about connecting the Kubernetes API server. This section is about -connecting to other services running on Kubernetes cluster. In Kubernetes, the -[nodes](/docs/admin/node), [pods](/docs/user-guide/pods) and [services](/docs/user-guide/services) all have -their own IPs. In many cases, the node IPs, pod IPs, and some service IPs on a cluster will not be -routable, so they will not be reachable from a machine outside the cluster, -such as your desktop machine. - -### Ways to connect - -You have several options for connecting to nodes, pods and services from outside the cluster: - - - Access services through public IPs. - - Use a service with type `NodePort` or `LoadBalancer` to make the service reachable outside - the cluster. See the [services](/docs/user-guide/services) and - [kubectl expose](/docs/user-guide/kubectl/v1.6/#expose) documentation. - - Depending on your cluster environment, this may just expose the service to your corporate network, - or it may expose it to the internet. Think about whether the service being exposed is secure. - Does it do its own authentication? - - Place pods behind services. To access one specific pod from a set of replicas, such as for debugging, - place a unique label on the pod and create a new service which selects this label. - - In most cases, it should not be necessary for application developer to directly access - nodes via their nodeIPs. - - Access services, nodes, or pods using the Proxy Verb. - - Does apiserver authentication and authorization prior to accessing the remote service. - Use this if the services are not secure enough to expose to the internet, or to gain - access to ports on the node IP, or for debugging. - - Proxies may cause problems for some web applications. - - Only works for HTTP/HTTPS. - - Described [here](#manually-constructing-apiserver-proxy-urls). - - Access from a node or pod in the cluster. - - Run a pod, and then connect to a shell in it using [kubectl exec](/docs/user-guide/kubectl/v1.6/#exec). - Connect to other nodes, pods, and services from that shell. - - Some clusters may allow you to ssh to a node in the cluster. From there you may be able to - access cluster services. This is a non-standard method, and will work on some clusters but - not others. Browsers and other tools may or may not be installed. Cluster DNS may not work. - -### Discovering builtin services - -Typically, there are several services which are started on a cluster by kube-system. Get a list of these -with the `kubectl cluster-info` command: - -```shell -$ kubectl cluster-info - - Kubernetes master is running at https://104.197.5.247 - elasticsearch-logging is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy - kibana-logging is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/kibana-logging/proxy - kube-dns is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/kube-dns/proxy - grafana is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy - heapster is running at https://104.197.5.247/api/v1/namespaces/kube-system/services/monitoring-heapster/proxy -``` - -This shows the proxy-verb URL for accessing each service. -For example, this cluster has cluster-level logging enabled (using Elasticsearch), which can be reached -at `https://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/` if suitable credentials are passed. Logging can also be reached through a kubectl proxy, for example at: -`http://localhost:8080/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/`. -(See [above](#accessing-the-cluster-api) for how to pass credentials or use kubectl proxy.) - -#### Manually constructing apiserver proxy URLs - -As mentioned above, you use the `kubectl cluster-info` command to retrieve the service's proxy URL. To create proxy URLs that include service endpoints, suffixes, and parameters, you simply append to the service's proxy URL: -`http://`*`kubernetes_master_address`*`/api/v1/namespaces/`*`namespace_name`*`/services/`*`service_name[:port_name]`*`/proxy` - -If you haven't specified a name for your port, you don't have to specify *port_name* in the URL. - -##### Examples - - * To access the Elasticsearch service endpoint `_search?q=user:kimchy`, you would use: `http://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/_search?q=user:kimchy` - * To access the Elasticsearch cluster health information `_cluster/health?pretty=true`, you would use: `https://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/_cluster/health?pretty=true` - -```json - { - "cluster_name" : "kubernetes_logging", - "status" : "yellow", - "timed_out" : false, - "number_of_nodes" : 1, - "number_of_data_nodes" : 1, - "active_primary_shards" : 5, - "active_shards" : 5, - "relocating_shards" : 0, - "initializing_shards" : 0, - "unassigned_shards" : 5 - } -``` - -#### Using web browsers to access services running on the cluster - -You may be able to put an apiserver proxy url into the address bar of a browser. However: - - - Web browsers cannot usually pass tokens, so you may need to use basic (password) auth. Apiserver can be configured to accept basic auth, - but your cluster may not be configured to accept basic auth. - - Some web apps may not work, particularly those with client side javascript that construct urls in a - way that is unaware of the proxy path prefix. - -## Requesting redirects - -The redirect capabilities have been deprecated and removed. Please use a proxy (see below) instead. - -## So Many Proxies - -There are several different proxies you may encounter when using Kubernetes: - - 1. The [kubectl proxy](#directly-accessing-the-rest-api): - - runs on a user's desktop or in a pod - - proxies from a localhost address to the Kubernetes apiserver - - client to proxy uses HTTP - - proxy to apiserver uses HTTPS - - locates apiserver - - adds authentication headers - 1. The [apiserver proxy](#discovering-builtin-services): - - is a bastion built into the apiserver - - connects a user outside of the cluster to cluster IPs which otherwise might not be reachable - - runs in the apiserver processes - - client to proxy uses HTTPS (or http if apiserver so configured) - - proxy to target may use HTTP or HTTPS as chosen by proxy using available information - - can be used to reach a Node, Pod, or Service - - does load balancing when used to reach a Service - 1. The [kube proxy](/docs/user-guide/services/#ips-and-vips): - - runs on each node - - proxies UDP and TCP - - does not understand HTTP - - provides load balancing - - is just used to reach services - 1. A Proxy/Load-balancer in front of apiserver(s): - - existence and implementation varies from cluster to cluster (e.g. nginx) - - sits between all clients and one or more apiservers - - acts as load balancer if there are several apiservers. - 1. Cloud Load Balancers on external services: - - are provided by some cloud providers (e.g. AWS ELB, Google Cloud Load Balancer) - - are created automatically when the Kubernetes service has type `LoadBalancer` - - use UDP/TCP only - - implementation varies by cloud provider. - -Kubernetes users will typically not need to worry about anything other than the first two types. The cluster admin -will typically ensure that the latter types are setup correctly. diff --git a/cn/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume.md b/cn/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume.md new file mode 100644 index 0000000000..0a0b9b953f --- /dev/null +++ b/cn/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume.md @@ -0,0 +1,186 @@ +--- +title: 同 Pod 内的容器使用共享卷通信 +redirect_from: +- "/docs/user-guide/pods/multi-container/" +- "/docs/user-guide/pods/multi-container.html" +- "/docs/tasks/configure-pod-container/communicate-containers-same-pod/" +- "/docs/tasks/configure-pod-container/communicate-containers-same-pod.html" +--- + + +{% capture overview %} + + + +本文旨在说明如何让一个 Pod 内的两个容器使用一个卷(Volume)进行通信。 + +{% endcapture %} + + +{% capture prerequisites %} + +{% include task-tutorial-prereqs.md %} + +{% endcapture %} + + +{% capture steps %} + + +## 创建一个包含两个容器的 Pod + + + + +在这个练习中,你会创建一个包含两个容器的 Pod。两个容器共享一个卷用于他们之间的通信。 +Pod 的配置文件如下: + +{% include code.html language="yaml" file="two-container-pod.yaml" ghlink="/docs/tasks/access-application-cluster/two-container-pod.yaml" %} + + + +在配置文件中,你可以看到 Pod 有一个共享卷,名为 `shared-data`。 + + + + + +配置文件中的第一个容器运行了一个 nginx 服务器。共享卷的挂载路径是 `/usr/share/nginx/html`。 +第二个容器是基于 debian 镜像的,有一个 `/pod-data` 的挂载路径。第二个容器运行了下面的命令然后终止。 + + echo Hello from the debian container > /pod-data/index.html + + + +注意,第二个容器在 nginx 服务器的根目录下写了 `index.html` 文件。 + + +创建一个包含两个容器的 Pod: + + kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/two-container-pod.yaml + + +查看 Pod 和容器的信息: + + kubectl get pod two-containers --output=yaml + + +这是输出的一部分: + + apiVersion: v1 + kind: Pod + metadata: + ... + name: two-containers + namespace: default + ... + spec: + ... + containerStatuses: + + - containerID: docker://c1d8abd1 ... + image: debian + ... + lastState: + terminated: + ... + name: debian-container + ... + + - containerID: docker://96c1ff2c5bb ... + image: nginx + ... + name: nginx-container + ... + state: + running: + ... + + + +你可以看到 debian 容器已经被终止了,而 nginx 服务器依然在运行。 + + +进入 nginx 容器的 shell: + + kubectl exec -it two-containers -c nginx-container -- /bin/bash + + +在 shell 中,确认 nginx 还在运行。 + + root@two-containers:/# ps aux + + +输出类似于这样: + + USER PID ... STAT START TIME COMMAND + root 1 ... Ss 21:12 0:00 nginx: master process nginx -g daemon off; + + + +回忆一下,debian 容器在 nginx 的根目录下创建了 `index.html` 文件。 +使用 `curl` 向 nginx 服务器发送一个 GET 请求: + + root@two-containers:/# apt-get update + root@two-containers:/# apt-get install curl + root@two-containers:/# curl localhost + + +输出表示 nginx 提供了 debian 容器写的页面: + + Hello from the debian container + +{% endcapture %} + + +{% capture discussion %} + + +## 讨论 + + + + + + + + +Pod 能有多个容器的主要原因是为了支持辅助应用(helper applications),以协助主应用(primary application)。 +辅助应用的典型例子是数据抽取,数据推送和代理。辅助应用和主应用经常需要相互通信。 +就如这个练习所示,通信通常是通过共享文件系统完成的,或者,也通过回环网络接口 localhost 完成。 +举个网络接口的例子,web 服务器带有一个协助程序用于拉取 Git 仓库的更新。 + + + + +在本练习中的卷为 Pod 生命周期中的容器相互通信提供了一种方法。如果 Pod 被删除或者重建了, +任何共享卷中的数据都会丢失。 + +{% endcapture %} + + +{% capture whatsnext %} + + + +* 更多学习内容 +[混合容器的方式](http://blog.kubernetes.io/2015/06/the-distributed-system-toolkit-patterns.html)。 + + + +* 学习 [模块化架构的混合容器](http://www.slideshare.net/Docker/slideshare-burns)。 + + + +* 参见 [配置一个使用存储卷的 Pod](/docs/tasks/configure-pod-container/configure-volume-storage/)。 + + +* 参见 [卷](/docs/api-reference/{{page.version}}/#volume-v1-core)。 + + +* 参见 [Pod](/docs/api-reference/{{page.version}}/#pod-v1-core). + +{% endcapture %} + + +{% include templates/task.md %} diff --git a/cn/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md b/cn/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md new file mode 100644 index 0000000000..c3583aab6b --- /dev/null +++ b/cn/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md @@ -0,0 +1,316 @@ +--- +title: 配置对多集群的访问 +--- + + +{% capture overview %} + +本文展示如何使用配置文件来配置对多个集群的访问。 在将集群、用户和上下文定义在一个或多个配置文件中之后,用户可以使用 `kubectl config use-context` 命令快速地在集群之间进行切换。 + +**注意:** 用于配置集群访问的文件有时被称为 *kubeconfig 文件*。 +这是一种引用配置文件的通用方式,并不意味着存在一个名为 `kubeconfig` 的文件。 +{: .note} + +{% endcapture %} + +{% capture prerequisites %} + +需要安装 [`kubectl`](/docs/tasks/tools/install-kubectl/) 命令行工具。 + +{% endcapture %} + +{% capture steps %} + +## 定义集群、用户和上下文 + +假设用户有两个集群,一个用于正式开发工作,一个用于其它临时用途(scratch)。 +在 `development` 集群中,前端开发者在名为 `frontend` 的名字空间下工作, +存储开发者在名为 `storage` 的名字空间下工作。 在 `scratch` 集群中, +开发人员可能在默认名字空间下工作,也可能视情况创建附加的名字空间。 访问开发集群需要通过证书进行认证。 访问其它临时用途的集群需要通过用户名和密码进行认证。 + +创建名为 `config-exercise` 的目录。 在 +`config-exercise` 目录中,创建名为 `config-demo` 的文件,其内容为: + +```yaml +apiVersion: v1 +kind: Config +preferences: {} + +clusters: +- cluster: + name: development +- cluster: + name: scratch + +users: +- name: developer +- name: experimenter + +contexts: +- context: + name: dev-frontend +- context: + name: dev-storage +- context: + name: exp-scratch +``` + +配置文件描述了集群、用户名和上下文。 `config-demo` 文件中含有描述两个集群、两个用户和三个上下文的框架。 + +进入 `config-exercise` 目录。 输入以下命令,将群集详细信息添加到配置文件中: + +```shell +kubectl config --kubeconfig=config-demo set-cluster development --server=https://1.2.3.4 --certificate-authority=fake-ca-file +kubectl config --kubeconfig=config-demo set-cluster scratch --server=https://5.6.7.8 --insecure-skip-tls-verify +``` + +将用户详细信息添加到配置文件中: + +```shell +kubectl config --kubeconfig=config-demo set-credentials developer --client-certificate=fake-cert-file --client-key=fake-key-seefile +kubectl config --kubeconfig=config-demo set-credentials experimenter --username=exp --password=some-password +``` + +将上下文详细信息添加到配置文件中: + +```shell +kubectl config --kubeconfig=config-demo set-context dev-frontend --cluster=development --namespace=frontend --user=developer +kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=development --namespace=storage --user=developer +kubectl config --kubeconfig=config-demo set-context exp-scratch --cluster=scratch --namespace=default --user=experimenter +``` + +打开 `config-demo` 文件查看添加的详细信息。 也可以使用 `config view` 命令进行查看: + +```shell +kubectl config --kubeconfig=config-demo view +``` + +输出展示了两个集群、两个用户和三个上下文: + +```yaml +apiVersion: v1 +clusters: +- cluster: + certificate-authority: fake-ca-file + server: https://1.2.3.4 + name: development +- cluster: + insecure-skip-tls-verify: true + server: https://5.6.7.8 + name: scratch +contexts: +- context: + cluster: development + namespace: frontend + user: developer + name: dev-frontend +- context: + cluster: development + namespace: storage + user: developer + name: dev-storage +- context: + cluster: scratch + namespace: default + user: experimenter + name: exp-scratch +current-context: "" +kind: Config +preferences: {} +users: +- name: developer + user: + client-certificate: fake-cert-file + client-key: fake-key-file +- name: experimenter + user: + password: some-password + username: exp +``` + +每个上下文包含三部分(集群、用户和名字空间),例如, +`dev-frontend` 上下文表明:使用 `developer` 用户的凭证来访问 `development` 集群的 `frontend` 名字空间。 + +设置当前上下文: + +```shell +kubectl config --kubeconfig=config-demo use-context dev-frontend +``` + +现在当输入 `kubectl` 命令时,相应动作会应用于 `dev-frontend` 上下文中所列的集群和名字空间,同时,命令会使用 `dev-frontend` 上下文中所列用户的凭证。 + +使用 `--minify` 参数,来查看与当前上下文相关联的配置信息。 + +```shell +kubectl config --kubeconfig=config-demo view --minify +``` + +输出结果展示了 `dev-frontend` 上下文相关的配置信息: + +```yaml +apiVersion: v1 +clusters: +- cluster: + certificate-authority: fake-ca-file + server: https://1.2.3.4 + name: development +contexts: +- context: + cluster: development + namespace: frontend + user: developer + name: dev-frontend +current-context: dev-frontend +kind: Config +preferences: {} +users: +- name: developer + user: + client-certificate: fake-cert-file + client-key: fake-key-file +``` + +现在假设用户希望在其它临时用途集群中工作一段时间。 + +将当前上下文更改为 `exp-scratch`: + +```shell +kubectl config --kubeconfig=config-demo use-context exp-scratch +``` + +现在用户 `kubectl` 下达的任何命令都将应用于 `scratch` 集群的默认名字空间。 同时,命令会使用 `exp-scratch` 上下文中所列用户的凭证。 + +查看更新后的当前上下文 `exp-scratch` 相关的配置: + +```shell +kubectl config --kubeconfig=config-demo view --minify +``` + +最后,假设用户希望在 `development` 集群中的 `storage` 名字空间下工作一段时间。 + +将当前上下文更改为 `dev-storage`: + +```shell +kubectl config --kubeconfig=config-demo use-context dev-storage +``` + +查看更新后的当前上下文 `dev-storage` 相关的配置: + + +```shell +kubectl config --kubeconfig=config-demo view --minify +``` + +## 创建第二个配置文件 + +在 `config-exercise` 目录中,创建名为 `config-demo-2` 的文件,其中包含以下内容: + +```yaml +apiVersion: v1 +kind: Config +preferences: {} + +contexts: +- context: + cluster: development + namespace: ramp + user: developer + name: dev-ramp-up +``` + +上述配置文件定义了一个新的上下文,名为 `dev-ramp-up`。 + +## 设置 KUBECONFIG 环境变量 + +查看是否有名为 `KUBECONFIG` 的环境变量。 如有,保存 `KUBECONFIG` 环境变量当前的值,以便稍后恢复。 +例如,在 Linux 中: + +```shell +export KUBECONFIG_SAVED=$KUBECONFIG +``` + +`KUBECONFIG` 环境变量是配置文件路径的列表,该列表在 Linux 和 Mac 中以冒号分隔,在 Windows 中以分号分隔。 如果有 `KUBECONFIG` 环境变量,请熟悉列表中的配置文件。 + +临时添加两条路径到 `KUBECONFIG` 环境变量中。 例如,在 Linux 中: + +```shell +export KUBECONFIG=$KUBECONFIG:config-demo:config-demo-2 +``` + +在 `config-exercise` 目录中输入以下命令: + +```shell +kubectl config view +``` + +输出展示了 `KUBECONFIG` 环境变量中所列举的所有文件合并后的信息。 特别地, 注意合并信息中包含来自 `config-demo-2` 文件的 `dev-ramp-up` 上下文和来自 `config-demo` 文件的三个上下文: + +```yaml +contexts: +- context: + cluster: development + namespace: frontend + user: developer + name: dev-frontend +- context: + cluster: development + namespace: ramp + user: developer + name: dev-ramp-up +- context: + cluster: development + namespace: storage + user: developer + name: dev-storage +- context: + cluster: scratch + namespace: default + user: experimenter + name: exp-scratch +``` + +更多关于 kubeconfig 文件如何合并的信息,请参考 +[使用 kubeconfig 文件组织集群访问](/docs/concepts/configuration/organize-cluster-access-kubeconfig/) + +## 探索 $HOME/.kube 目录 + +如果用户已经拥有一个集群,可以使用 `kubectl` 与集群进行交互。 那么很可能在 `$HOME/.kube` 目录下有一个名为 `config` 的文件。 + +进入 `$HOME/.kube` 目录, 看看那里有什么文件。 通常会有一个名为 +`config` 的文件,目录中可能还有其他配置文件。 请简单地熟悉这些文件的内容。 + +## 将 $HOME/.kube/config 追加到 KUBECONFIG 环境变量中 + +如果有 `$HOME/.kube/config` 文件,并且还未列在 `KUBECONFIG` 环境变量中, +那么现在将它追加到 `KUBECONFIG` 环境变量中。 +例如,在 Linux 中: + +```shell +export KUBECONFIG=$KUBECONFIG:$HOME/.kube/config +``` + +在配置练习目录中输入以下命令,来查看当前 `KUBECONFIG` 环境变量中列举的所有文件合并后的配置信息: + +```shell +kubectl config view +``` + +## 清理 + +将 `KUBECONFIG` 环境变量还原为原始值。 例如,在 Linux 中: + +```shell +export KUBECONFIG=$KUBECONFIG_SAVED +``` + +{% endcapture %} + +{% capture whatsnext %} + +* [使用 kubeconfig 文件组织集群访问](/docs/concepts/configuration/organize-cluster-access-kubeconfig/) +* [kubectl 配置](/docs/user-guide/kubectl/{{page.version}}/) + +{% endcapture %} + +{% include templates/task.md %} + diff --git a/cn/docs/tasks/access-application-cluster/configure-cloud-provider-firewall.md b/cn/docs/tasks/access-application-cluster/configure-cloud-provider-firewall.md new file mode 100644 index 0000000000..b38bdd938d --- /dev/null +++ b/cn/docs/tasks/access-application-cluster/configure-cloud-provider-firewall.md @@ -0,0 +1,126 @@ +--- +approvers: +- bprashanth +- davidopp +title: 配置你的云平台防火墙 +--- + + + + + + +许多云服务商(比如 Google Compute Engine)定义防火墙以防止服务无意间暴露到 internet 上。 +当暴露服务给外网时,你可能需要在防火墙上开启一个或者更多的端口来支持服务。 +本文描述了这个过程,以及其他云服务商的具体信息。 + + +## 负载均衡(LoadBalancer)服务的访问限制 + + + + + 当以 `spec.type: LoadBalancer` 使用服务时,你可以使用 `spec.loadBalancerSourceRanges` 指定允许访问负载均衡的 IP 段。 + 这个字段采用 CIDR 的 IP 段,Kubernetes 会使用这个段配置防火墙。支持这个功能的平台目前有 Google Compute Engine,Google Kubernetes Engine 和 AWS。 + 如果云服务商不支持这个功能,这个字段会被忽略。 + + + + 假设 10.0.0.0/8 是内部的子网。在下面这个例子中,会创建一个只有集群内部 ip 可以访问的负载均衡器。 + 集群外部的客户端是无法访问这个负载均衡器的。 + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: myapp +spec: + ports: + - port: 8765 + targetPort: 9376 + selector: + app: example + type: LoadBalancer + loadBalancerSourceRanges: + - 10.0.0.0/8 +``` + + + 这个例子中,会创建一个只能被 IP 为 130.211.204.1 和 130.211.204.2 的客户端访问的负载据衡器。 + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: myapp +spec: + ports: + - port: 8765 + targetPort: 9376 + selector: + app: example + type: LoadBalancer + loadBalancerSourceRanges: + - 130.211.204.1/32 + - 130.211.204.2/32 +``` + + +### 谷歌计算引擎(Google Compute Engine) + + + + +当以 `spec.type: LoadBalancer` 使用服务时,防火墙会被自动打开。 +然而,当以 `spec.type: NodePort` 使用服务时,防火墙默认 *不会* 被打开。 + + +Google Compute Engine 的防火墙文档在[别处](https://cloud.google.com/compute/docs/networking#firewalls_1)。 + + +你可以使用 `gcloud` 命令行工具添加一个防火墙: + +```shell +$ gcloud compute firewall-rules create my-rule --allow=tcp: +``` + + + +**注意** +使用 Google Compute Engine 平台的防火墙时有一个重要的关于安全的注意点: + + + + + + + +在 Kubernetes v1.0.0 版本,GCE 防火墙是定义按虚拟机(VM)来的,而不是按 ip 来的。 +这就意味着当你在防火墙上打开一个服务端口时,任何在那台虚拟机 IP 上的同一端口的服务 +都有被外部访问的潜在可能。注意,这对于其他 Kubernetes 服务来说不是问题,因为他们监 +听的 IP 地址与主机节点的外部 IP 地址不同。 + + +考虑一下: + + * 你创建了一个服务,使用了外部服务均衡 (IP 地址为 1.2.3.4) 和 80 端口。 + * 你在防火墙上为集群的所有节点都打开了 80 端口,所以外部的服务可以向你的 + 服务发送数据包。 + * 你又在虚拟机(IP 为2.3.4.5)上使用 80 端口启动了一台 nginx 服务器. + 这个 nginx 在虚拟机的外部 IP 地址上也被暴露到了 internet 上。 + + + + +因此,在 Google Compute Engine 或者 Google Kubernetes Engine 上开启防火墙端口时请 +小心。你可能无意间把其他服务也暴露给了 internet。 + + +这个问题会在 Kubernetes 后续版本中被修复。 + + +### 其他云服务商 + + +即将更新 + diff --git a/cn/docs/tasks/access-application-cluster/connecting-frontend-backend.md b/cn/docs/tasks/access-application-cluster/connecting-frontend-backend.md new file mode 100644 index 0000000000..f2d82fae7e --- /dev/null +++ b/cn/docs/tasks/access-application-cluster/connecting-frontend-backend.md @@ -0,0 +1,223 @@ +--- +title: 使用 Service 把前端连接到后端 +--- + + +{% capture overview %} + + + + +本任务会描述如何创建前端微服务和后端微服务。后端微服务是一个 hello 欢迎程序。 +前端和后端的连接是通过 Kubernetes 服务对象(Service object)完成的。 + +{% endcapture %} + + +{% capture objectives %} + + + + +* 使用部署对象(Deployment object)创建并运行一个微服务 +* 从后端将流量路由到前端 +* 使用服务对象把前端应用连接到后端应用 + +{% endcapture %} + + +{% capture prerequisites %} + +* {% include task-tutorial-prereqs.md %} + + +* 本任务使用 [外部负载均衡服务](/docs/tasks/access-application-cluster/create-external-load-balancer/), + 所以需要对应的可支持此功能的环境。如果你的环境不能支持,你可以使用 + [NodePort](/docs/user-guide/services/#type-nodeport) 类型的服务代替。 + +{% endcapture %} + + +{% capture lessoncontent %} + + +### 使用部署对象(Deployment)创建后端 + + + +后端是一个简单的 hello 欢迎微服务应用。这是后端应用的 Deployment 配置文件: + +{% include code.html language="yaml" file="hello.yaml" ghlink="/docs/tasks/access-application-cluster/hello.yaml" %} + + +创建后端 Deployment: + +``` +kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/hello.yaml +``` + + +查看后端的 Deployment 信息: + +``` +kubectl describe deployment hello +``` + + +输出类似于: + +``` +Name: hello +Namespace: default +CreationTimestamp: Mon, 24 Oct 2016 14:21:02 -0700 +Labels: app=hello + tier=backend + track=stable +Selector: app=hello,tier=backend,track=stable +Replicas: 7 updated | 7 total | 7 available | 0 unavailable +StrategyType: RollingUpdate +MinReadySeconds: 0 +RollingUpdateStrategy: 1 max unavailable, 1 max surge +OldReplicaSets: +NewReplicaSet: hello-3621623197 (7/7 replicas created) +Events: +... +``` + + +### 创建后端服务对象(Service object) + + + + + +前端连接到后端的关键是 Service。Service 创建一个固定 IP 和 DNS 解析名入口, +使得后端微服务可达。Service 使用 selector 标签来寻找目标 Pod。 + + +首先,浏览 Service 的配置文件: + +{% include code.html language="yaml" file="hello-service.yaml" ghlink="/docs/tasks/access-application-cluster/hello-service.yaml" %} + + + +配置文件中,你可以看到 Service 将流量路由到包含 `app: hello` 和 `tier: backend` 标签的 Pod。 + + +创建 `hello` Service: + +``` +kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/hello-service.yaml +``` + + + +此时,你已经有了一个在运行的后端 Deployment,你也有了一个 Service 用于路由网络流量。 + + +### 创建前端应用 + + + + + +既然你已经有了后端应用,你可以创建一个前端应用连接到后端。前端应用通过 DNS 名连接到后端的工作 Pods。 +DNS 名是 "hello",也就是 Service 配置文件中 `name` 字段的值。 + + + +前端 Deployment 中的 Pods 运行一个 nginx 镜像,这个已经配置好镜像去寻找后端的 hello Service。 +只是 nginx 的配置文件: + +{% include code.html file="frontend/frontend.conf" ghlink="/docs/tasks/access-application-cluster/frontend/frontend.conf" %} + + + + +与后端类似,前端用包含一个 Deployment 和一个 Service。Service 的配置文件包含了 `type: LoadBalancer`, +也就是说,Service 会使用你的云服务商的默认负载均衡设备。 + +{% include code.html language="yaml" file="frontend.yaml" ghlink="/docs/tasks/access-application-cluster/frontend.yaml" %} + + +创建前端 Deployment 和 Service: + +``` +kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/frontend.yaml +``` + + +通过输出确认两个资源都已经被创建: + +``` +deployment "frontend" created +service "frontend" created +``` + + + + + + +**注意**:这个 nginx 配置文件是被打包在 [容器镜像](/docs/tasks/access-application-cluster/frontend/Dockerfile) 里的。 +更好的方法是使用 [ConfigMap](/docs/tasks/configure-pod-container/configmap/),这样的话你可以更轻易地更改配置。 + + +### 与前端 Service 交互 + + + +一旦你创建了 LoadBalancer 类型的 Service,你可以使用这条命令查看外部 IP: + +``` +kubectl get service frontend +``` + + + +外部 IP 字段的生成可能需要一些时间。如果是这种情况,外部 IP 会显示为 ``。 + +``` +NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE +frontend 10.51.252.116 80/TCP 10s +``` + + +使用相同的命令直到它显示外部 IP 地址: + +``` +NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE +frontend 10.51.252.116 XXX.XXX.XXX.XXX 80/TCP 1m +``` + + +### 通过前端发送流量 + + + +前端和后端已经完成连接了。你可以使用 curl 命令通过你的前端 Service 的外部 IP 访问服务端点。 + +``` +curl http:// +``` + + +后端生成的消息输出如下: + +``` +{"message":"Hello"} +``` + +{% endcapture %} + + +{% capture whatsnext %} + + + +* 了解更多 [Services](/docs/concepts/services-networking/service/) +* 了解更多 [ConfigMaps](/docs/tasks/configure-pod-container/configmap/) + +{% endcapture %} + +{% include templates/tutorial.md %} diff --git a/cn/docs/tasks/access-application-cluster/frontend/frontend.conf b/cn/docs/tasks/access-application-cluster/frontend/frontend.conf new file mode 100644 index 0000000000..9a1f5a0ed6 --- /dev/null +++ b/cn/docs/tasks/access-application-cluster/frontend/frontend.conf @@ -0,0 +1,11 @@ +upstream hello { + server hello; +} + +server { + listen 80; + + location / { + proxy_pass http://hello; + } +} diff --git a/cn/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md b/cn/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md deleted file mode 100644 index 672495468a..0000000000 --- a/cn/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Use Port Forwarding to Access Applications in a Cluster ---- - -{% capture overview %} - -This page shows how to use `kubectl port-forward` to connect to a Redis -server running in a Kubernetes cluster. This type of connection can be useful -for database debugging. - -{% endcapture %} - - -{% capture prerequisites %} - -* {% include task-tutorial-prereqs.md %} - -* Install [redis-cli](http://redis.io/topics/rediscli). - -{% endcapture %} - - -{% capture steps %} - -## Creating a pod to run a Redis server - -1. Create a pod: - - kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/redis-master.yaml - - The output of a successful command verifies that the pod was created: - - pod "redis-master" created - -1. Check to see whether the pod is running and ready: - - kubectl get pods - - When the pod is ready, the output displays a STATUS of Running: - - NAME READY STATUS RESTARTS AGE - redis-master 2/2 Running 0 41s - -1. Verify that the Redis server is running in the pod and listening on port 6379: - - {% raw %} - kubectl get pods redis-master --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}' - {% endraw %} - - The output displays the port: - - 6379 - -## Forward a local port to a port on the pod - -1. Forward port 6379 on the local workstation to port 6379 of redis-master pod: - - kubectl port-forward redis-master 6379:6379 - - The output is similar to this: - - I0710 14:43:38.274550 3655 portforward.go:225] Forwarding from 127.0.0.1:6379 -> 6379 - I0710 14:43:38.274797 3655 portforward.go:225] Forwarding from [::1]:6379 -> 6379 - -1. Start the Redis command line interface: - - redis-cli - -1. At the Redis command line prompt, enter the `ping` command: - - 127.0.0.1:6379>ping - - A successful ping request returns PONG. - -{% endcapture %} - - -{% capture discussion %} - -## Discussion - -Connections made to local port 6379 are forwarded to port 6379 of the pod that -is running the Redis server. With this connection in place you can use your -local workstation to debug the database that is running in the pod. - -{% endcapture %} - - -{% capture whatsnext %} -Learn more about [kubectl port-forward](/docs/user-guide/kubectl/v1.6/#port-forward). -{% endcapture %} - - -{% include templates/task.md %} diff --git a/cn/docs/tasks/access-application-cluster/service-access-application-cluster.md b/cn/docs/tasks/access-application-cluster/service-access-application-cluster.md deleted file mode 100644 index ebbd195b5e..0000000000 --- a/cn/docs/tasks/access-application-cluster/service-access-application-cluster.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Use a Service to Access an Application in a Cluster ---- - -{% capture overview %} - -This page shows how to create a Kubernetes Service object that external -clients can use to access an application running in a cluster. The Service -provides load balancing for an application that has two running instances. - -{% endcapture %} - - -{% capture prerequisites %} - -{% include task-tutorial-prereqs.md %} - -{% endcapture %} - - -{% capture objectives %} - -* Run two instances of a Hello World application. -* Create a Service object that exposes a node port. -* Use the Service object to access the running application. - -{% endcapture %} - - -{% capture lessoncontent %} - -## Creating a service for an application running in two pods - -1. Run a Hello World application in your cluster: - - kubectl run hello-world --replicas=2 --labels="run=load-balancer-example" --image=gcr.io/google-samples/node-hello:1.0 --port=8080 - - The preceding command creates a - [Deployment](/docs/concepts/workloads/controllers/deployment/) - object and an associated - [ReplicaSet](/docs/concepts/workloads/controllers/replicaset/) - object. The ReplicaSet has two - [Pods](/docs/concepts/workloads/pods/pod/), - each of which runs the Hello World application. - -1. Display information about the Deployment: - - kubectl get deployments hello-world - kubectl describe deployments hello-world - -1. Display information about your ReplicaSet objects: - - kubectl get replicasets - kubectl describe replicasets - -1. Create a Service object that exposes the deployment: - - kubectl expose deployment hello-world --type=NodePort --name=example-service - -1. Display information about the Service: - - kubectl describe services example-service - - The output is similar to this: - - Name: example-service - Namespace: default - Labels: run=load-balancer-example - Selector: run=load-balancer-example - Type: NodePort - IP: 10.32.0.16 - Port: 8080/TCP - NodePort: 31496/TCP - Endpoints: 10.200.1.4:8080,10.200.2.5:8080 - Session Affinity: None - No events. - - Make a note of the NodePort value for the service. For example, - in the preceding output, the NodePort value is 31496. - -1. List the pods that are running the Hello World application: - - kubectl get pods --selector="run=load-balancer-example" --output=wide - - The output is similar to this: - - NAME READY STATUS ... IP NODE - hello-world-2895499144-bsbk5 1/1 Running ... 10.200.1.4 worker1 - hello-world-2895499144-m1pwt 1/1 Running ... 10.200.2.5 worker2 - -1. Get the public IP address of one of your nodes that is running - a Hello World pod. How you get this address depends on how you set - up your cluster. For example, if you are using Minikube, you can - see the node address by running `kubectl cluster-info`. If you are - using Google Compute Engine instances, you can use the - `gcloud compute instances list` command to see the public addresses of your - nodes. For more information about this command, see the [GCE documentation](https://cloud.google.com/sdk/gcloud/reference/compute/instances/list). - -1. On your chosen node, create a firewall rule that allows TCP traffic - on your node port. For example, if your Service has a NodePort value of - 31568, create a firewall rule that allows TCP traffic on port 31568. Different - cloud providers offer different ways of configuring firewall rules. See [the - GCE documentation on firewall rules](https://cloud.google.com/compute/docs/vpc/firewalls), - for example. - -1. Use the node address and node port to access the Hello World application: - - curl http://: - - where `` is the public IP address of your node, - and `` is the NodePort value for your service. - - The response to a successful request is a hello message: - - Hello Kubernetes! - -## Using a service configuration file - -As an alternative to using `kubectl expose`, you can use a -[service configuration file](/docs/user-guide/services/operations) -to create a Service. - -{% endcapture %} - - -{% capture cleanup %} - -To delete the Service, enter this command: - - kubectl delete services example-service - -To delete the Deployment, the ReplicaSet, and the Pods that are running -the Hello World application, enter this command: - - kubectl delete deployment hello-world - -{% endcapture %} - - -{% capture whatsnext %} - -Learn more about -[connecting applications with services](/docs/concepts/services-networking/connect-applications-service/). -{% endcapture %} - -{% include templates/tutorial.md %} - diff --git a/cn/docs/tasks/administer-cluster/apply-resource-quota-limit.md b/cn/docs/tasks/administer-cluster/apply-resource-quota-limit.md index 5ffd280425..408f6b4b41 100644 --- a/cn/docs/tasks/administer-cluster/apply-resource-quota-limit.md +++ b/cn/docs/tasks/administer-cluster/apply-resource-quota-limit.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - derekwaynecarr - janetkuo diff --git a/cn/docs/tasks/administer-cluster/change-pv-reclaim-policy.md b/cn/docs/tasks/administer-cluster/change-pv-reclaim-policy.md index 14844d903e..10caf64853 100644 --- a/cn/docs/tasks/administer-cluster/change-pv-reclaim-policy.md +++ b/cn/docs/tasks/administer-cluster/change-pv-reclaim-policy.md @@ -20,7 +20,7 @@ title: 更改 PersistentVolume 的回收策略 ## 为什么要更改 PersistentVolume 的回收策略 -`PersistentVolumes` 可以有多种回收策略,包括 "Retain"、"Recycle" 和 "Delete"。对于动态配置的 `PersistentVolumes` 来说,默认回收策略为 "Delete"。这表示当用户删除对应的 `PeristentVolumeClaim` 时,动态配置的 volume 将被自动删除。如果 volume 包含重要数据时,这种自动行为可能是不合适的。那种情况下,更适合使用 "Retain" 策略。使用 "Retain" 时,如果用户删除 `PersistentVolumeClaim`,对应的 `PersistentVolume` 不会被删除。相反,它将变为 `Released` 状态,表示所有的数据可以被手动恢复。 +`PersistentVolumes` 可以有多种回收策略,包括 "Retain"、"Recycle" 和 "Delete"。对于动态配置的 `PersistentVolumes` 来说,默认回收策略为 "Delete"。这表示当用户删除对应的 `PersistentVolumeClaim` 时,动态配置的 volume 将被自动删除。如果 volume 包含重要数据时,这种自动行为可能是不合适的。那种情况下,更适合使用 "Retain" 策略。使用 "Retain" 时,如果用户删除 `PersistentVolumeClaim`,对应的 `PersistentVolume` 不会被删除。相反,它将变为 `Released` 状态,表示所有的数据可以被手动恢复。 ## 更改 PersistentVolume 的回收策略 diff --git a/cn/docs/tasks/administer-cluster/cluster-management.md b/cn/docs/tasks/administer-cluster/cluster-management.md index f492a2314d..671bd29989 100644 --- a/cn/docs/tasks/administer-cluster/cluster-management.md +++ b/cn/docs/tasks/administer-cluster/cluster-management.md @@ -57,13 +57,13 @@ cluster/gce/upgrade.sh release/stable ``` -### 升级 Google Container Engine (GKE) 集群 +### 升级 Google Kubernetes Engine 集群 -Google Container Engine 自动升级 master 组件(例如 `kube-apiserver`、`kube-scheduler`)至最新版本。它还负责 master 运行的操作系统和其它组件。 +Google Kubernetes Engine 自动升级 master 组件(例如 `kube-apiserver`、`kube-scheduler`)至最新版本。它还负责 master 运行的操作系统和其它组件。 -节点升级过程由用户初始化,[GKE 文档](https://cloud.google.com/container-engine/docs/clusters/upgrade) 里有相关描述。 +节点升级过程由用户初始化,[Google Kubernetes Engine 文档](https://cloud.google.com/kubernetes-engine/docs/clusters/upgrade) 里有相关描述。 ### 在其他平台上升级集群 @@ -80,7 +80,7 @@ Google Container Engine 自动升级 master 组件(例如 `kube-apiserver`、` ## 调整集群大小 -如果集群资源短缺,您可以轻松的添加更多的机器,如果集群正运行在[节点自注册模式](/docs/admin/node/#self-registration-of-nodes)下的话。如果正在使用的是 GCE 或者 GKE,这将通过调整管理节点的实例组的大小完成。在 [Google Cloud Console page](https://console.developers.google.com) 的 `Compute > Compute Engine > Instance groups > your group > Edit group` 下修改实例数量或使用 gcloud CLI 都可以完成这个任务。 +如果集群资源短缺,您可以轻松的添加更多的机器,如果集群正运行在[节点自注册模式](/docs/admin/node/#self-registration-of-nodes)下的话。如果正在使用的是 GCE 或者 Google Kubernetes Engine,这将通过调整管理节点的实例组的大小完成。在 [Google Cloud Console page](https://console.developers.google.com) 的 `Compute > Compute Engine > Instance groups > your group > Edit group` 下修改实例数量或使用 gcloud CLI 都可以完成这个任务。 ```shell gcloud compute instance-groups managed resize kubernetes-minion-group --size 42 --zone $ZONE @@ -96,7 +96,7 @@ gcloud compute instance-groups managed resize kubernetes-minion-group --size 42 ### 集群自动伸缩 -如果正在使用 GCE 或者 GKE,您可以配置您的集群,使其能够基于 pod 需求自动重新调整大小。 +如果正在使用 GCE 或者 Google Kubernetes Engine,您可以配置您的集群,使其能够基于 pod 需求自动重新调整大小。 如 [Compute Resource](/docs/concepts/configuration/manage-compute-resources-container/) 所述,用户可以控制预留多少 CPU 和内存来分配给 pod。这个信息被 Kubernetes scheduler 用来寻找一个运行 pod 的地方。如果没有一个节点有足够的空闲容量(或者不能满足其他 pod 的需求),这个 pod 就需要等待某些 pod 结束,或者一个新的节点被添加。 @@ -108,7 +108,7 @@ gcloud compute instance-groups managed resize kubernetes-minion-group --size 42 如果发现在一段延时时间内(默认10分钟,将来有可能改变)某些节点不再需要,集群 autoscaler 也会缩小集群。 -集群 autoscaler 在每一个实例组(GCE)或节点池(GKE)上配置。 +集群 autoscaler 在每一个实例组(GCE)或节点池(Google Kubernetes Engine)上配置。 如果您使用 GCE,那么您可以在使用 kube-up.sh 脚本创建集群的时候启用它。要想配置集群 autoscaler,您需要设置三个环境变量: @@ -126,7 +126,7 @@ KUBE_ENABLE_CLUSTER_AUTOSCALER=true KUBE_AUTOSCALER_MIN_NODES=3 KUBE_AUTOSCALER_ ``` -在 GKE 上,您可以在创建、更新集群或创建一个特别的节点池(您希望自动伸缩的)时,通过给对应的 `gcloud` 命令传递 `--enable-autoscaling` `--min-nodes` 和 `--max-nodes` 来配置集群 autoscaler。 +在 Google Kubernetes Engine 上,您可以在创建、更新集群或创建一个特别的节点池(您希望自动伸缩的)时,通过给对应的 `gcloud` 命令传递 `--enable-autoscaling` `--min-nodes` 和 `--max-nodes` 来配置集群 autoscaler。 示例: diff --git a/cn/docs/tasks/administer-cluster/cpu-management-policies.md b/cn/docs/tasks/administer-cluster/cpu-management-policies.md new file mode 100644 index 0000000000..78266c47e0 --- /dev/null +++ b/cn/docs/tasks/administer-cluster/cpu-management-policies.md @@ -0,0 +1,143 @@ +--- +title: 控制节点上的CPU管理策略 +--- + +* TOC +{:toc} + +按照设计,Kubernetes 对 pod 执行相关的很多方面进行了抽象,使得用户不必关心。然而,为了正常运行,有些工作负载要求在延迟和/或性能方面有更强的保证。 为此,kubelet 提供方法来实现更复杂的负载放置策略,同时保持抽象,避免显式的放置指令。 + +## CPU 管理策略 + +默认情况下,kubelet 使用 [CFS 配额](https://en.wikipedia.org/wiki/Completely_Fair_Scheduler) 来执行 pod 的 CPU 约束。当节点上运行了很多 CPU 密集的 pod 时,工作负载可能会迁移到不同的 CPU 核,这取决于调度时 pod 是否被扼制,以及哪些 CPU 核是可用的。许多工作负载对这种迁移不敏感,因此无需任何干预即可正常工作。 + +然而,有些工作负载的性能明显地受到 CPU 缓存亲和性以及调度延迟的影响,对此,kubelet 提供了可选的 CPU 管理策略,来确定节点上的一些分配偏好。 + +### 配置 + +CPU 管理器(CPU Manager)作为 alpha 特性引入 Kubernetes 1.8 版本。 必须在 kubelet 特性开关中显式启用: +`--feature-gates=CPUManager=true`。 + +CPU 管理策略通过 kubelet 参数 `--cpu-manager-policy` 来指定, +有两种支持策略: + +* `none`:默认策略,表示现有的调度行为。 +* `static`:允许为节点上具有某些资源特征的 pod 赋予增强的 CPU 亲和性和独占性。 + +CPU管理器定期通过 CRI 写入资源更新,以保证内存中 CPU 分配与 cgroupfs 一致。同步频率通过新增的 Kubelet 配置参数 +`--cpu-manager-reconcile-period` 来设置。 如不指定,默认与 `--node-status-update-frequency` 的周期相同。 + +### None 策略 + +`none` 策略显式地启用现有的默认 CPU 亲和方案,不提供操作系统调度器默认行为之外的亲和性策略。 通过 CFS 配额来实现 +[Guaranteed pods](/docs/tasks/configure-pod-container/quality-service-pod/) 的 CPU 使用限制。 + +### Static 策略 + +`static` 策略针对具有整数型 CPU `requests` 的 pod ,它允许该类 pod 中的容器访问节点上的独占 CPU 资源。这种独占性是使用 [cpuset cgroup 控制器](https://www.kernel.org/doc/Documentation/cgroup-v1/cpusets.txt) 来实现的。 + +**注意:** 诸如容器运行时和 kubelet 本身的系统服务可以继续在这些独占 CPU 上运行。独占性仅针对其他 pod。 +{: .note} + +**注意:** 该策略的 alpha 版本不保证 Kubelet 重启前后的静态独占性分配。 +{: .note} + +该策略管理一个共享 CPU 资源池,最初,该资源池包含节点上所有的 CPU 资源。可用的独占性 CPU 资源数量等于节点的 CPU 总量减去通过 `--kube-reserved` 或 `--system-reserved` 参数保留的 CPU 。通过这些参数预留的 CPU 是以整数方式,按物理内核 ID 升序从初始共享池获取的。 共享池是 `BestEffort` 和 `Burstable` pod 运行的 CPU 集合。`Guaranteed` pod 中的容器,如果声明了非整数值的 CPU `requests` ,也将运行在共享池的 CPU 上。只有 `Guaranteed` pod 中,指定了整数型 CPU `requests` 的容器,才会被分配独占 CPU 资源。 + +**注意:** 当启用 static 策略时,要求使用 `--kube-reserved` 和/或 `--system-reserved` 来保证预留的 CPU 值大于零。 这是因为零预留 CPU 值可能使得共享池变空。 +{: .note} + +当 `Guaranteed` pod 调度到节点上时,如果其容器符合静态分配要求,相应的 CPU 会被从共享池中移除,并放置到容器的 cpuset 中。因为这些容器所使用的 CPU 受到调度域本身的限制,所以不需要使用 CFS 配额来进行 CPU 的绑定。换言之,容器 cpuset 中的 CPU 数量与 pod 规格中指定的整数型 CPU `limit` 相等。这种静态分配增强了 CPU 亲和性,减少了 CPU 密集的工作负载在节流时引起的上下文切换。 + +考虑以下 Pod 规格的容器: + +```yaml +spec: + containers: + - name: nginx + image: nginx +``` + +该 pod 属于 `BestEffort` 服务质量类型,因为其未指定 `requests` 或 +`limits` 值。 所以该容器运行在共享 CPU 池中。 + +```yaml +spec: + containers: + - name: nginx + image: nginx + resources: + limits: + memory: "200Mi" + requests: + memory: "100Mi" +``` + +该 pod 属于 `Burstable` 服务质量类型,因为其资源 `requests` 不等于 +`limits`, 且未指定 `cpu` 数量。所以该容器运行在共享 CPU 池中。 + +```yaml +spec: + containers: + - name: nginx + image: nginx + resources: + limits: + memory: "200Mi" + cpu: "2" + requests: + memory: "100Mi" + cpu: "1" +``` + +该 pod 属于 `Burstable` 服务质量类型,因为其资源 `requests` 不等于 `limits`。所以该容器运行在共享 CPU 池中。 + +```yaml +spec: + containers: + - name: nginx + image: nginx + resources: + limits: + memory: "200Mi" + cpu: "2" + requests: + memory: "200Mi" + cpu: "2" +``` + +该 pod 属于 `Guaranteed` 服务质量类型,因为其 `requests` 值与 `limits`相等。 +同时,容器对 CPU 资源的限制值是一个大于或等于 1 的整数值。所以,该 `nginx` 容器被赋予 2 个独占 CPU。 + + +```yaml +spec: + containers: + - name: nginx + image: nginx + resources: + limits: + memory: "200Mi" + cpu: "1.5" + requests: + memory: "200Mi" + cpu: "1.5" +``` + +该 pod 属于 `Guaranteed` 服务质量类型,因为其 `requests` 值与 `limits`相等。但是容器对 CPU 资源的限制值是一个小数。所以该容器运行在共享 CPU 池中。 + + +```yaml +spec: + containers: + - name: nginx + image: nginx + resources: + limits: + memory: "200Mi" + cpu: "2" +``` + +该 pod 属于 `Guaranteed` 服务质量类型,因其指定了 `limits` 值, +同时当未显式指定时,`requests` 值被设置为与 `limits` 值相等。同时,容器对 CPU 资源的限制值是一个大于或等于 1 的整数值。所以,该 `nginx` 容器被赋予 2 个独占 CPU。 + diff --git a/cn/docs/tasks/administer-cluster/cpu-memory-limit.md b/cn/docs/tasks/administer-cluster/cpu-memory-limit.md index 46808eeb71..b437c8a2f0 100644 --- a/cn/docs/tasks/administer-cluster/cpu-memory-limit.md +++ b/cn/docs/tasks/administer-cluster/cpu-memory-limit.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - derekwaynecarr - janetkuo title: 设置 Pod CPU 和内存限制 @@ -14,9 +14,8 @@ redirect_from: -默认情况下,Pod 运行没有限制 CPU 和内存。 -这意味着系统中的任何 Pod 将能够像执行该 Pod 所在的节点一样,使用足够多 CPU 和内存。 - +默认情况下,Pod 运行没有限制 CPU 使用量和内存使用量。 +这意味着当前系统中的任何 Pod 能够使用该 Pod 运行节点的所有 CPU 和内存资源。 这个例子演示了如何限制 Kubernetes [Namespace](/docs/tasks/administer-cluster/namespaces-walkthrough/),以此来控制每个 Pod 的最小/最大资源限额。 @@ -47,7 +46,7 @@ namespace "limit-example" created -注意到 `kubectl` 命令将打印出被创建或修改的资源的类型和名称,也会在后面的命令中使用到: +可以看到 `kubectl` 命令将打印出被创建或修改的资源的类型和名称,也会在后面的命令中使用到: ```shell $ kubectl get namespaces @@ -69,7 +68,7 @@ limitrange "mylimits" created -让我们描述一下在该 Namespace 中被强加的限制: +让我们查看一下在该 Namespace 中被强加的限制: ```shell $ kubectl describe limits mylimits --namespace=limit-example @@ -251,7 +250,7 @@ default Active 12m {% capture whatsnext %} -* 查看 [LimitRange 设计文档](https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md) 获取更多信息。 +* 查看 [LimitRange 设计文档](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/resource-management/admission_control_limit_range.md) 获取更多信息。 * 查看 [资源](/docs/concepts/configuration/manage-compute-resources-container/) 获取关于 Kubernetes 资源模型的详细描述。 {% endcapture %} diff --git a/cn/docs/tasks/administer-cluster/ip-masq-agent.md b/cn/docs/tasks/administer-cluster/ip-masq-agent.md deleted file mode 100644 index 04625647c6..0000000000 --- a/cn/docs/tasks/administer-cluster/ip-masq-agent.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: IP Masquerade Agent User Guide ---- - -{% capture overview %} -This page shows how to configure and enable the ip-masq-agent. -{% endcapture %} - -{% capture prerequisites %} - -{% include task-tutorial-prereqs.md %} - -{% endcapture %} - -{% capture discussion %} -## IP Masquerade Agent User Guide - -The ip-masq-agent configures iptables rules to hide a pod's IP address behind the cluster node's IP address. This is typically done when sending traffic to destinations outside the cluster's pod [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) range. - -### **Key Terms** - -* **NAT (Network Address Translation)** - Is a method of remapping one IP address to another by modifying either the source and/or destination address information in the IP header. Typically performed by a device doing IP routing. -* **Masquerading** - A form of NAT that is typically used to perform a many to one address translation, where multiple source IP addresses are masked behind a single address, which is typically the device doing the IP routing. In Kubernetes this is the Node's IP address. -* **CIDR (Classless Inter-Domain Routing)** - Based on the variable-length subnet masking, allows specifying arbitrary-length prefixes. CIDR introduced a new method of representation for IP addresses, now commonly known as **CIDR notation**, in which an address or routing prefix is written with a suffix indicating the number of bits of the prefix, such as 192.168.2.0/24. -* **Link Local** - A link-local address is a network address that is valid only for communications within the network segment or the broadcast domain that the host is connected to. Link-local addresses for IPv4 are defined in the address block 169.254.0.0/16 in CIDR notation. - -The ip-masq-agent configures iptables rules to handle masquerading node/pod IP addresses when sending traffic to destinations outside the cluster node's IP and the Cluster IP range. This essentially hides pod IP addresses behind the cluster node's IP address. In some environments, traffic to "external" addresses must come from a known machine address. For example, in Google Cloud, any traffic to the internet must come from a VM's IP. When containers are used, as in GKE, the Pod IP will be rejected for egress. To avoid this, we must hide the Pod IP behind the VM's own IP address - generally known as "masquerade". By default, the agent is configured to treat the three private IP ranges specified by [RFC 1918](https://tools.ietf.org/html/rfc1918) as non-masquerade [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). These ranges are 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16. The agent will also treat link-local (169.254.0.0/16) as a non-masquerade CIDR by default. The agent is configured to reload its configuration from the location */etc/config/ip-masq-agent* every 60 seconds, which is also configurable. - -![masq/non-masq example](/images/docs/ip-masq.png) - -The agent configuration file must be written in YAML or JSON syntax, and may contain three optional keys: - -* **nonMasqueradeCIDRs:** A list of strings in [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation that specify the non-masquerade ranges. -* **masqLinkLocal:** A Boolean (true / false) which indicates whether to masquerade traffic to the link local prefix 169.254.0.0/16. False by default. -* **resyncInterval:** An interval at which the agent attempts to reload config from disk. e.g. '30s' where 's' is seconds, 'ms' is milliseconds etc... - -Traffic to 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16) ranges will NOT be masqueraded. Any other traffic (assumed to be internet) will be masqueraded. An example of a local destination from a pod could be its Node's IP address as well as another node's address or one of the IP addresses in Cluster's IP range. Any other traffic will be masqueraded by default. The below entries show the default set of rules that are applied by the ip-masq-agent: - -``` -iptables -t nat -L IP-MASQ-AGENT -RETURN all -- anywhere 169.254.0.0/16 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL -RETURN all -- anywhere 10.0.0.0/8 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL -RETURN all -- anywhere 172.16.0.0/12 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL -RETURN all -- anywhere 192.168.0.0/16 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL -MASQUERADE all -- anywhere anywhere /* ip-masq-agent: outbound traffic should be subject to MASQUERADE (this match must come after cluster-local CIDR matches) */ ADDRTYPE match dst-type !LOCAL - -``` - -By default, in GCE/GKE starting with Kubernetes version 1.7.0, if network policy is enabled or you are using a cluster CIDR not in the 10.0.0.0/8 range, the ip-masq-agent will run in your cluster. If you are running in another environment, you can add the ip-masq-agent [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) to your cluster: - -{% endcapture %} - -{% capture steps %} - -## Create an ip-masq-agent -To create an ip-masq-agent, run the following kubectl command: - -` -kubectl create -f https://raw.githubusercontent.com/kubernetes-incubator/ip-masq-agent/master/ip-masq-agent.yaml -` - -You must also apply the appropriate node label to any nodes in your cluster that you want the agent to run on. - -` -kubectl label nodes my-node beta.kubernetes.io/masq-agent-ds-ready=true -` - -More information can be found in the ip-masq-agent documentation [here](https://github.com/kubernetes-incubator/ip-masq-agent) - -In most cases, the default set of rules should be sufficient; however, if this is not the case for your cluster, you can create and apply a [ConfigMap](/docs/tasks/configure-pod-container/configmap/) to customize the IP ranges that are affected. For example, to allow only 10.0.0.0/8 to be considered by the ip-masq-agent, you can create the following [ConfigMap](/docs/tasks/configure-pod-container/configmap/) in a file called "config". -**Note:** It is important that the file is called config since, by default, that will be used as the key for lookup by the ip-masq-agent: - -``` -nonMasqueradeCIDRs: - - 10.0.0.0/8 -resyncInterval: 60s - -``` - -Run the following command to add the config map to your cluster: - -``` -kubectl create configmap ip-masq-agent --from-file=config --namespace=kube-system -``` - -This will update a file located at */etc/config/ip-masq-agent* which is periodically checked every *resyscInterval* and applied to the cluster node. -After the resync interval has expired, you should see the iptables rules reflect your changes: - -``` -iptables -t nat -L IP-MASQ-AGENT -Chain IP-MASQ-AGENT (1 references) -target prot opt source destination -RETURN all -- anywhere 169.254.0.0/16 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL -RETURN all -- anywhere 10.0.0.0/8 /* ip-masq-agent: cluster-local -MASQUERADE all -- anywhere anywhere /* ip-masq-agent: outbound traffic should be subject to MASQUERADE (this match must come after cluster-local CIDR matches) */ ADDRTYPE match dst-type !LOCAL -``` - -By default, the link local range (169.254.0.0/16) is also handled by the ip-masq agent, which sets up the appropriate iptables rules. To have the ip-masq-agent ignore link local, you can set *masqLinkLocal* to true in the config map. - -``` -nonMasqueradeCIDRs: - - 10.0.0.0/8 -resyncInterval: 60s -masqLinkLocal: true -``` -{% endcapture %} - -{% include templates/task.md %} diff --git a/cn/docs/tasks/administer-cluster/static-pod.md b/cn/docs/tasks/administer-cluster/static-pod.md index 7c32e2d26d..0539e1e8ed 100644 --- a/cn/docs/tasks/administer-cluster/static-pod.md +++ b/cn/docs/tasks/administer-cluster/static-pod.md @@ -6,7 +6,7 @@ title: 静态Pods **如果你正在运行Kubernetes集群并且使用静态pods在每个节点上起一个pod,那么最好使用[DaemonSet](/cn/docs/concepts/workloads/controllers/daemonset/)!** -*静态pods*直接由特定节点上的kubelet进程来管理,不通过主控节点上的API服务器。静态pod不关联任何replicationcontroller,它由kubelet进程自己来监控,当pod崩溃时重启该pod。对于静态pod没有健康检查。静态pod始终绑定在某一个kubelet,并且始终运行在同一个节点上。 +*静态pods*直接由特定节点上的kubelet进程来管理,不通过主控节点上的API服务器。静态pod不关联任何replication controller,它由kubelet进程自己来监控,当pod崩溃时重启该pod。对于静态pod没有健康检查。静态pod始终绑定在某一个kubelet,并且始终运行在同一个节点上。 Kubelet自动为每一个静态pod在Kubernetes的API服务器上创建一个镜像Pod(Mirror Pod),因此可以在API服务器查询到该pod,但是不被API服务器控制(例如不能删除)。 diff --git a/cn/docs/tasks/configure-pod-container/configmap.md b/cn/docs/tasks/configure-pod-container/configmap.md deleted file mode 100644 index 352ea85c11..0000000000 --- a/cn/docs/tasks/configure-pod-container/configmap.md +++ /dev/null @@ -1,256 +0,0 @@ ---- -approvers: -- eparis -- pmorie -title: Configure Containers Using a ConfigMap ---- - - -{% capture overview %} - -This page shows you how to configure an application using a ConfigMap. ConfigMaps allow you to decouple configuration artifacts from image content to keep containerized applications portable. - -{% endcapture %} - -{% capture prerequisites %} - -* {% include task-tutorial-prereqs.md %} - -{% endcapture %} - - -{% capture steps %} - -## Use kubectl to create a ConfigMap - -Use the `kubectl create configmap` command to create configmaps from [directories](#creating-configmaps-from-directories), [files](#creating-configmaps-from-files), or [literal values](#creating-configmaps-from-literal-values): - -```shell -kubectl create configmap -``` - -where \ is the name you want to assign to the ConfigMap and \ is the directory, file, or literal value to draw the data from. - -The data source corresponds to a key-value pair in the ConfigMap, where - -* key = the file name or the key you provided on the command line, and -* value = the file contents or the literal value you provided on the command line. - -You can use [`kubectl describe`](/docs/user-guide/kubectl/v1.6/#describe) or [`kubectl get`](/docs/user-guide/kubectl/v1.6/#get) to retrieve information about a ConfigMap. The former shows a summary of the ConfigMap, while the latter returns the full contents of the ConfigMap. - -### Create ConfigMaps from directories - -You can use `kubectl create configmap` to create a ConfigMap from multiple files in the same directory. - -For example: - -```shell -kubectl create configmap game-config --from-file=docs/user-guide/configmap/kubectl -``` - -combines the contents of the `docs/user-guide/configmap/kubectl/` directory - -```shell -ls docs/user-guide/configmap/kubectl/ -game.properties -ui.properties -``` - -into the following ConfigMap: - -```shell -kubectl describe configmaps game-config -Name: game-config -Namespace: default -Labels: -Annotations: - -Data -==== -game.properties: 158 bytes -ui.properties: 83 bytes -``` - -The `game.properties` and `ui.properties` files in the `docs/user-guide/configmap/kubectl/` directory are represented in the `data` section of the ConfigMap. - -```shell -kubectl get configmaps game-config -o yaml -``` - -```yaml -apiVersion: v1 -data: - game.properties: | - enemies=aliens - lives=3 - enemies.cheat=true - enemies.cheat.level=noGoodRotten - secret.code.passphrase=UUDDLRLRBABAS - secret.code.allowed=true - secret.code.lives=30 - ui.properties: | - color.good=purple - color.bad=yellow - allow.textmode=true - how.nice.to.look=fairlyNice -kind: ConfigMap -metadata: - creationTimestamp: 2016-02-18T18:52:05Z - name: game-config - namespace: default - resourceVersion: "516" - selfLink: /api/v1/namespaces/default/configmaps/game-config-2 - uid: b4952dc3-d670-11e5-8cd0-68f728db1985 -``` - -### Create ConfigMaps from files - -You can use `kubectl create configmap` to create a ConfigMap from an individual file, or from multiple files. - -For example, - -```shell -kubectl create configmap game-config-2 --from-file=docs/user-guide/configmap/kubectl/game.properties -``` - -would produce the following ConfigMap: - -```shell -kubectl describe configmaps game-config-2 -Name: game-config-2 -Namespace: default -Labels: -Annotations: - -Data -==== -game.properties: 158 bytes -``` - -You can pass in the `--from-file` argument multiple times to create a ConfigMap from multiple data sources. - -```shell -kubectl create configmap game-config-2 --from-file=docs/user-guide/configmap/kubectl/game.properties --from-file=docs/user-guide/configmap/kubectl/ui.properties -``` - -```shell -kubectl describe configmaps game-config-2 -Name: game-config-2 -Namespace: default -Labels: -Annotations: - -Data -==== -game.properties: 158 bytes -ui.properties: 83 bytes -``` - -#### Define the key to use when creating a ConfigMap from a file - -You can define a key other than the file name to use in the `data` section of your ConfigMap when using the `--from-file` argument: - -```shell -kubectl create configmap game-config-3 --from-file== -``` - -where `` is the key you want to use in the ConfigMap and `` is the location of the data source file you want the key to represent. - -For example: - -```shell -kubectl create configmap game-config-3 --from-file=game-special-key=docs/user-guide/configmap/kubectl/game.properties - -kubectl get configmaps game-config-3 -o yaml -``` - -```yaml -apiVersion: v1 -data: - game-special-key: | - enemies=aliens - lives=3 - enemies.cheat=true - enemies.cheat.level=noGoodRotten - secret.code.passphrase=UUDDLRLRBABAS - secret.code.allowed=true - secret.code.lives=30 -kind: ConfigMap -metadata: - creationTimestamp: 2016-02-18T18:54:22Z - name: game-config-3 - namespace: default - resourceVersion: "530" - selfLink: /api/v1/namespaces/default/configmaps/game-config-3 - uid: 05f8da22-d671-11e5-8cd0-68f728db1985 -``` - -### Create ConfigMaps from literal values - -You can use `kubectl create configmap` with the `--from-literal` argument to define a literal value from the command line: - -```shell -kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm -``` - -You can pass in multiple key-value pairs. Each pair provided on the command line is represented as a separate entry in the `data` section of the ConfigMap. - -```shell -kubectl get configmaps special-config -o yaml -``` - -```yaml -apiVersion: v1 -data: - special.how: very - special.type: charm -kind: ConfigMap -metadata: - creationTimestamp: 2016-02-18T19:14:38Z - name: special-config - namespace: default - resourceVersion: "651" - selfLink: /api/v1/namespaces/default/configmaps/special-config - uid: dadce046-d673-11e5-8cd0-68f728db1985 -``` - -{% endcapture %} - -{% capture discussion %} - -## Understanding ConfigMaps - -ConfigMaps allow you to decouple configuration artifacts from image content to keep containerized applications portable. -The ConfigMap API resource stores configuration data as key-value pairs. The data can be consumed in pods or provide the configurations for system components such as controllers. ConfigMap is similar to [Secrets](/docs/concepts/configuration/secret/), but provides a means of working with strings that don't contain sensitive information. Users and system components alike can store configuration data in ConfigMap. - -**Note:** ConfigMaps should reference properties files, not replace them. Think of the ConfigMap as representing something similar to the Linux `/etc` directory and its contents. For example, if you create a [Kubernetes Volume](/docs/concepts/storage/volumes/) from a ConfigMap, each data item in the ConfigMap is represented by an individual file in the volume. -{: .note} - -The ConfigMap's `data` field contains the configuration data. As shown in the example below, this can be simple -- like individual properties defined using `--from-literal` -- or complex -- like configuration files or JSON blobs defined using `--from-file`. - -```yaml -kind: ConfigMap -apiVersion: v1 -metadata: - creationTimestamp: 2016-02-18T19:14:38Z - name: example-config - namespace: default -data: - # example of a simple property defined using --from-literal - example.property.1: hello - example.property.2: world - # example of a complex property defined using --from-file - example.property.file: |- - property.1=value-1 - property.2=value-2 - property.3=value-3 -``` - -{% endcapture %} - -{% capture whatsnext %} -* See [Using ConfigMap Data in Pods](/docs/tasks/configure-pod-container/configure-pod-configmap). -* Follow a real world example of [Configuring Redis using a ConfigMap](/docs/tutorials/configuration/configure-redis-using-configmap/). -{% endcapture %} - -{% include templates/task.md %} diff --git a/cn/docs/tasks/configure-pod-container/configure-liveness-readiness-probes.md b/cn/docs/tasks/configure-pod-container/configure-liveness-readiness-probes.md deleted file mode 100644 index a842c449cd..0000000000 --- a/cn/docs/tasks/configure-pod-container/configure-liveness-readiness-probes.md +++ /dev/null @@ -1,301 +0,0 @@ ---- -title: Configure Liveness and Readiness Probes ---- - -{% capture overview %} - -This page shows how to configure liveness and readiness probes for Containers. - -The [kubelet](/docs/admin/kubelet/) uses liveness probes to know when to -restart a Container. For example, liveness probes could catch a deadlock, -where an application is running, but unable to make progress. Restarting a -Container in such a state can help to make the application more available -despite bugs. - -The kubelet uses readiness probes to know when a Container is ready to start -accepting traffic. A Pod is considered ready when all of its Containers are ready. -One use of this signal is to control which Pods are used as backends for Services. -When a Pod is not ready, it is removed from Service load balancers. - -{% endcapture %} - -{% capture prerequisites %} - -{% include task-tutorial-prereqs.md %} - -{% endcapture %} - -{% capture steps %} - -## Define a liveness command - -Many applications running for long periods of time eventually transition to -broken states, and cannot recover except by being restarted. Kubernetes provides -liveness probes to detect and remedy such situations. - -In this exercise, you create a Pod that runs a Container based on the -`gcr.io/google_containers/busybox` image. Here is the configuration file for the Pod: - -{% include code.html language="yaml" file="exec-liveness.yaml" ghlink="/docs/tasks/configure-pod-container/exec-liveness.yaml" %} - -In the configuration file, you can see that the Pod has a single Container. -The `periodSeconds` field specifies that the kubelet should perform a liveness -probe every 5 seconds. The `initialDelaySeconds` field tells the kubelet that it -should wait 5 second before performing the first probe. To perform a probe, the -kubelet executes the command `cat /tmp/healthy` in the Container. If the -command succeeds, it returns 0, and the kubelet considers the Container to be alive and -healthy. If the command returns a non-zero value, the kubelet kills the Container -and restarts it. - -When the Container starts, it executes this command: - -```shell -/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600" -``` - -For the first 30 seconds of the Container's life, there is a `/tmp/healthy` file. -So during the first 30 seconds, the command `cat /tmp/healthy` returns a success -code. After 30 seconds, `cat /tmp/healthy` returns a failure code. - -Create the Pod: - -```shell -kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/exec-liveness.yaml -``` - -Within 30 seconds, view the Pod events: - -``` -kubectl describe pod liveness-exec -``` - -The output indicates that no liveness probes have failed yet: - -```shell -FirstSeen LastSeen Count From SubobjectPath Type Reason Message ---------- -------- ----- ---- ------------- -------- ------ ------- -24s 24s 1 {default-scheduler } Normal Scheduled Successfully assigned liveness-exec to worker0 -23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Pulling pulling image "gcr.io/google_containers/busybox" -23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Pulled Successfully pulled image "gcr.io/google_containers/busybox" -23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Created Created container with docker id 86849c15382e; Security:[seccomp=unconfined] -23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Started Started container with docker id 86849c15382e -``` - -After 35 seconds, view the Pod events again: - -```shell -kubectl describe pod liveness-exec -``` - -At the bottom of the output, there are messages indicating that the liveness -probes have failed, and the containers have been killed and recreated. - -```shell -FirstSeen LastSeen Count From SubobjectPath Type Reason Message ---------- -------- ----- ---- ------------- -------- ------ ------- -37s 37s 1 {default-scheduler } Normal Scheduled Successfully assigned liveness-exec to worker0 -36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Pulling pulling image "gcr.io/google_containers/busybox" -36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Pulled Successfully pulled image "gcr.io/google_containers/busybox" -36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Created Created container with docker id 86849c15382e; Security:[seccomp=unconfined] -36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Started Started container with docker id 86849c15382e -2s 2s 1 {kubelet worker0} spec.containers{liveness} Warning Unhealthy Liveness probe failed: cat: can't open '/tmp/healthy': No such file or directory -``` - -Wait another 30 seconds, and verify that the Container has been restarted: - -```shell -kubectl get pod liveness-exec -``` - -The output shows that `RESTARTS` has been incremented: - -```shell -NAME READY STATUS RESTARTS AGE -liveness-exec 1/1 Running 1 1m -``` - -## Define a liveness HTTP request - -Another kind of liveness probe uses an HTTP GET request. Here is the configuration -file for a Pod that runs a container based on the `gcr.io/google_containers/liveness` -image. - -{% include code.html language="yaml" file="http-liveness.yaml" ghlink="/docs/tasks/configure-pod-container/http-liveness.yaml" %} - -In the configuration file, you can see that the Pod has a single Container. -The `livenessProbe` field specifies that the kubelet should perform a liveness -probe every 3 seconds. The `initialDelaySeconds` field tells the kubelet that it -should wait 3 seconds before performing the first probe. To perform a probe, the -kubelet sends an HTTP GET request to the server that is running in the Container -and listening on port 8080. If the handler for the server's `/healthz` path -returns a success code, the kubelet considers the Container to be alive and -healthy. If the handler returns a failure code, the kubelet kills the Container -and restarts it. - -Any code greater than or equal to 200 and less than 400 indicates success. Any -other code indicates failure. - -You can see the source code for the server in -[server.go](https://github.com/kubernetes/kubernetes/blob/master/test/images/liveness/server.go). - -For the first 10 seconds that the Container is alive, the `/healthz` handler -returns a status of 200. After that, the handler returns a status of 500. - -```go -http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { - duration := time.Now().Sub(started) - if duration.Seconds() > 10 { - w.WriteHeader(500) - w.Write([]byte(fmt.Sprintf("error: %v", duration.Seconds()))) - } else { - w.WriteHeader(200) - w.Write([]byte("ok")) - } -}) -``` - -The kubelet starts performing health checks 3 seconds after the Container starts. -So the first couple of health checks will succeed. But after 10 seconds, the health -checks will fail, and the kubelet will kill and restart the Container. - -To try the HTTP liveness check, create a Pod: - -```shell -kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/http-liveness.yaml -``` - -After 10 seconds, view Pod events to verify that liveness probes have failed and -the Container has been restarted: - -```shell -kubectl describe pod liveness-http -``` - -## Define a TCP liveness probe - -A third type of liveness probe uses a TCP Socket. With this configuration, the -kubelet will attempt to open a socket to your container on the specified port. -If it can establish a connection, the container is considered healthy, if it -can’t it is considered a failure. - -{% include code.html language="yaml" file="tcp-liveness-readiness.yaml" ghlink="/docs/tasks/configure-pod-container/tcp-liveness-readiness.yaml" %} - -As you can see, configuration for a TCP check is quite similar to an HTTP check. -This example uses both readiness and liveness probes. The kubelet will send the -first readiness probe 5 seconds after the container starts. This will attempt to -connect to the `goproxy` container on port 8080. If the probe succeeds, the pod -will be marked as ready. The kubelet will continue to run this check every 10 -seconds. - -In addition to the readiness probe, this configuration includes a liveness probe. -The kubelet will run the first liveness probe 15 seconds after the container -starts. Just like the readiness probe, this will attempt to connect to the -`goproxy` container on port 8080. If the liveness probe fails, the container -will be restarted. - -## Use a named port - -You can use a named -[ContainerPort](/docs/api-reference/{{page.version}}/#containerport-v1-core) -for HTTP or TCP liveness checks: - -```yaml -ports: -- name: liveness-port - containerPort: 8080 - hostPort: 8080 - -livenessProbe: - httpGet: - path: /healthz - port: liveness-port -``` - -## Define readiness probes - -Sometimes, applications are temporarily unable to serve traffic. -For example, an application might need to load large data or configuration -files during startup. In such cases, you don't want to kill the application, -but you don’t want to send it requests either. Kubernetes provides -readiness probes to detect and mitigate these situations. A pod with containers -reporting that they are not ready does not receive traffic through Kubernetes -Services. - -Readiness probes are configured similarly to liveness probes. The only difference -is that you use the `readinessProbe` field instead of the `livenessProbe` field. - -```yaml -readinessProbe: - exec: - command: - - cat - - /tmp/healthy - initialDelaySeconds: 5 - periodSeconds: 5 -``` - -Configuration for HTTP and TCP readiness probes also remains identical to -liveness probes. - -Readiness and liveness probes can be used in parallel for the same container. -Using both can ensure that traffic does not reach a container that is not ready -for it, and that containers are restarted when they fail. - -## Configure Probes - -{% comment %} -Eventually, some of this section could be moved to a concept topic. -{% endcomment %} - -[Probes](/docs/api-reference/{{page.version}}/#probe-v1-core) have a number of fields that -you can use to more precisely control the behavior of liveness and readiness -checks: - -* `initialDelaySeconds`: Number of seconds after the container has started -before liveness probes are initiated. -* `periodSeconds`: How often (in seconds) to perform the probe. Default to 10 -seconds. Minimum value is 1. -* `timeoutSeconds`: Number of seconds after which the probe times out. Defaults -to 1 second. Minimum value is 1. -* `successThreshold`: Minimum consecutive successes for the probe to be -considered successful after having failed. Defaults to 1. Must be 1 for -liveness. Minimum value is 1. -* `failureThreshold`: Minimum consecutive failures for the probe to be -considered failed after having succeeded. Defaults to 3. Minimum value is 1. - -[HTTP probes](/docs/api-reference/{{page.version}}/#httpgetaction-v1-core) -have additional fields that can be set on `httpGet`: - -* `host`: Host name to connect to, defaults to the pod IP. You probably want to -set "Host" in httpHeaders instead. -* `scheme`: Scheme to use for connecting to the host. Defaults to HTTP. -* `path`: Path to access on the HTTP server. -* `httpHeaders`: Custom headers to set in the request. HTTP allows repeated headers. -* `port`: Name or number of the port to access on the container. Number must be -in the range 1 to 65535. - -For an HTTP probe, the kubelet sends an HTTP request to the specified path and -port to perform the check. The kubelet sends the probe to the container’s IP address, -unless the address is overridden by the optional `host` field in `httpGet`. -In most scenarios, you do not want to set the `host` field. Here's one scenario -where you would set it. Suppose the Container listens on 127.0.0.1 and the Pod's -`hostNetwork` field is true. Then `host`, under `httpGet`, should be set to 127.0.0.1. -If your pod relies on virtual hosts, which is probably the more common case, -you should not use `host`, but rather set the `Host` header in `httpHeaders`. - -{% endcapture %} - -{% capture whatsnext %} - -* Learn more about -[Container Probes](/docs/concepts/workloads/pods/pod-lifecycle/#container-probes). - -### Reference - -* [Pod](/docs/api-reference/{{page.version}}/#pod-v1-core) -* [Container](/docs/api-reference/{{page.version}}/#container-v1-core) -* [Probe](/docs/api-reference/{{page.version}}/#probe-v1-core) - -{% endcapture %} - -{% include templates/task.md %} diff --git a/cn/docs/tasks/configure-pod-container/configure-service-account.md b/cn/docs/tasks/configure-pod-container/configure-service-account.md deleted file mode 100644 index 55e115bd10..0000000000 --- a/cn/docs/tasks/configure-pod-container/configure-service-account.md +++ /dev/null @@ -1,231 +0,0 @@ ---- -approvers: -- bprashanth -- liggitt -- thockin -title: Configure Service Accounts for Pods ---- - -A service account provides an identity for processes that run in a Pod. - -*This is a user introduction to Service Accounts. See also the -[Cluster Admin Guide to Service Accounts](/docs/admin/service-accounts-admin).* - -**Note:** This document describes how service accounts behave in a cluster set up -as recommended by the Kubernetes project. Your cluster administrator may have -customized the behavior in your cluster, in which case this documentation may -not apply. -{: .note} - -When you (a human) access the cluster (e.g. using `kubectl`), you are -authenticated by the apiserver as a particular User Account (currently this is -usually `admin`, unless your cluster administrator has customized your -cluster). Processes in containers inside pods can also contact the apiserver. -When they do, they are authenticated as a particular Service Account (e.g. -`default`). - -## Use the Default Service Account to access the API server. - -When you create a pod, if you do not specify a service account, it is -automatically assigned the `default` service account in the same namespace. -If you get the raw json or yaml for a pod you have created (e.g. `kubectl get pods/podname -o yaml`), -you can see the `spec.serviceAccountName` field has been -[automatically set](/docs/user-guide/working-with-resources/#resources-are-automatically-modified). - -You can access the API from inside a pod using automatically mounted service account credentials, -as described in [Accessing the Cluster](/docs/user-guide/accessing-the-cluster/#accessing-the-api-from-a-pod). -The API permissions a service account has depend on the [authorization plugin and policy](/docs/admin/authorization/#a-quick-note-on-service-accounts) in use. - -In version 1.6+, you can opt out of automounting API credentials for a service account by setting -`automountServiceAccountToken: false` on the service account: - -```yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: build-robot -automountServiceAccountToken: false -... -``` - -In version 1.6+, you can also opt out of automounting API credentials for a particular pod: - -```yaml -apiVersion: v1 -kind: Pod -metadata: - name: my-pod -spec: - serviceAccountName: build-robot - automountServiceAccountToken: false - ... -``` - -The pod spec takes precedence over the service account if both specify a `automountServiceAccountToken` value. - -## Use Multiple Service Accounts. - -Every namespace has a default service account resource called `default`. -You can list this and any other serviceAccount resources in the namespace with this command: - -```shell -$ kubectl get serviceAccounts -NAME SECRETS AGE -default 1 1d -``` - -You can create additional ServiceAccount objects like this: - -```shell -$ cat > /tmp/serviceaccount.yaml < /tmp/build-robot-secret.yaml < -Annotations: kubernetes.io/service-account.name=build-robot,kubernetes.io/service-account.uid=870ef2a5-35cf-11e5-8d06-005056b45392 - -Type: kubernetes.io/service-account-token - -Data -==== -ca.crt: 1220 bytes -token: ... -namespace: 7 bytes -``` - -**Note:** The content of `token` is elided here. -{: .note} - -## Add ImagePullSecrets to a service account - -First, create an imagePullSecret, as described [here](/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod). -Next, verify it has been created. For example: - -```shell -$ kubectl get secrets myregistrykey -NAME TYPE DATA AGE -myregistrykey   kubernetes.io/.dockerconfigjson   1       1d -``` - -Next, modify the default service account for the namespace to use this secret as an imagePullSecret. - -```shell -kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}' -``` - -Interactive version requiring manual edit: - -```shell -$ kubectl get serviceaccounts default -o yaml > ./sa.yaml -$ cat sa.yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - creationTimestamp: 2015-08-07T22:02:39Z - name: default - namespace: default - resourceVersion: "243024" - selfLink: /api/v1/namespaces/default/serviceaccounts/default - uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6 -secrets: -- name: default-token-uudge -$ vi sa.yaml -[editor session not shown] -[delete line with key "resourceVersion"] -[add lines with "imagePullSecret:"] -$ cat sa.yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - creationTimestamp: 2015-08-07T22:02:39Z - name: default - namespace: default - selfLink: /api/v1/namespaces/default/serviceaccounts/default - uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6 -secrets: -- name: default-token-uudge -imagePullSecrets: -- name: myregistrykey -$ kubectl replace serviceaccount default -f ./sa.yaml -serviceaccounts/default -``` - -Now, any new pods created in the current namespace will have this added to their spec: - -```yaml -spec: - imagePullSecrets: - - name: myregistrykey -``` - - diff --git a/cn/docs/tasks/configure-pod-container/http-liveness.yaml b/cn/docs/tasks/configure-pod-container/http-liveness.yaml index 8485e3444e..6381ab3d1a 100644 --- a/cn/docs/tasks/configure-pod-container/http-liveness.yaml +++ b/cn/docs/tasks/configure-pod-container/http-liveness.yaml @@ -6,20 +6,16 @@ metadata: name: liveness-http spec: containers: - - name: liveness - args: - /server - image: gcr.io/google_containers/liveness - livenessProbe: httpGet: path: /healthz port: 8080 httpHeaders: - - name: X-Custom-Header - value: Awesome + - name: X-Custom-Header + value: Awesome initialDelaySeconds: 3 periodSeconds: 3 diff --git a/cn/docs/tasks/configure-pod-container/lifecycle-events.yaml b/cn/docs/tasks/configure-pod-container/lifecycle-events.yaml index c62028d7ef..73045a9ac0 100644 --- a/cn/docs/tasks/configure-pod-container/lifecycle-events.yaml +++ b/cn/docs/tasks/configure-pod-container/lifecycle-events.yaml @@ -15,19 +15,3 @@ spec: exec: command: ["/usr/sbin/nginx","-s","quit"] - - - - - - - - - - - - - - - - diff --git a/cn/docs/tasks/configure-pod-container/private-reg-pod.yaml b/cn/docs/tasks/configure-pod-container/private-reg-pod.yaml index 9928b6d608..703b7c4c14 100644 --- a/cn/docs/tasks/configure-pod-container/private-reg-pod.yaml +++ b/cn/docs/tasks/configure-pod-container/private-reg-pod.yaml @@ -4,8 +4,8 @@ metadata: name: private-reg spec: containers: - - name: private-reg-container - image: + - name: private-reg-container + image: imagePullSecrets: - - name: regsecret + - name: regsecret diff --git a/cn/docs/tasks/debug-application-cluster/debug-cluster.md b/cn/docs/tasks/debug-application-cluster/debug-cluster.md new file mode 100644 index 0000000000..834c0e6506 --- /dev/null +++ b/cn/docs/tasks/debug-application-cluster/debug-cluster.md @@ -0,0 +1,114 @@ +--- +title: 集群故障排查 +--- + +本篇文档是介绍集群故障排查的;我们假设对于你碰到的问题,你已经排除了是由应用程序造成的。 +对于应用的调试,请参阅[应用故障排查指南](/cn/docs/tasks/debug-application-cluster/debug-application)。 +你也可以访问[troubleshooting document](/docs/troubleshooting/)来获取更多的信息。 + +## 显示出集群的节点列表 + +调试的第一步是查看所有的节点是否都正确的注册。 + +运行 + +```shell +kubectl get nodes +``` + +接下来,验证你的所有节点都能够显示出来,并且都处于`Ready`状态。 + +## 查看logs + +现在,挖掘出集群更深层的信息就需要登录到相关的机器上。下面是相关log文件所在的位置。 +(注意,对于基于systemd的系统,你可能需要使用`journalctl`) + + +### Master + + * /var/log/kube-apiserver.log - API Server, 提供API服务 + * /var/log/kube-scheduler.log - Scheduler, 负责调度决策 + * /var/log/kube-controller-manager.log - 管理replication controllers的控制器 + +### Worker Nodes + + * /var/log/kubelet.log - Kubelet, 管控节点上运行的容器 + * /var/log/kube-proxy.log - Kube Proxy, 负责服务的负载均衡 + +## 集群故障模式的概述 + +下面是一个不完整的列表,列举了一些可能出错的场景,以及通过调整集群配置来解决相关问题的方法。 + +根本原因: + + - VM(s)关机 + - 集群之间,或者集群和用户之间网络分裂 + - Kubernetes软件本身崩溃了 + - 数据丢失或者持久化存储不可用(如:GCE PD 或 AWS EBS卷) + - 操作错误,如:Kubernetes或者应用程序配置错误 + +具体情况: + + - Apiserver所在的VM关机或者apiserver崩溃 + - 结果 + - 不能停止,更新,或者启动新的pods,services,replication controller + - 现有的pods和services在不依赖Kubernetes API的情况下应该能继续正常工作 + - Apiserver 后端存储丢失 + - 结果 + - apiserver应该不能起来 + - kubelets将不能访问它,但是能够继续运行之前的Pods和提供相同的服务代理 + - 在apiserver重启之前,需要手动恢复或者重创apiserver的状态 + + - Kubernetes服务组件(节点控制器,副本控制器,调度器等等)所在的VM关机或者崩溃 + - 当前,这些控制器是和apiserver共存的,它们不可用的现象是与apiserver类似的 + - 将来,这些控制器也会复制为多份,并且可能为非共存的 + - 它们没有自己的持久状态 + - 单个节点(VM或者物理机)关机 + - 结果 + - 此节点上的所有Pods都停止运行 + - 网络分裂(Network partition) + - 结果 + - partition A认为partition B中所有的节点都down掉了;partition B认为apiserver是down掉了(假定master所在的VM位于partition A内)。 + - Kubelet软件故障 + - 结果 + - 崩溃的kubelet就不能在其所在的节点上启动新的pods + - kubelet可能删掉pods或者不删 + - 节点被标识为非健康态 + - 副本控制器会在其它的节点上启动新的pods + - 集群操作错误 + - 结果 + - 丢失pods,服务等等 + - 丢失apiserver后端存储 + - 用户无法读取API + - 等等 + +缓解措施: + +- 措施:对于IaaS上的VMs,使用IaaS的自动VM重启功能 + - 缓解:Apiserver VM关机或apiserver崩溃 + - 缓解:Kubernetes服务组件所在的VM关机或崩溃 + +- 措施: 对于具有apiserver+etcd的VM,使用IaaS提供的可靠的存储(例如GCE PD或者AWS EBS卷) + - 缓解:Apiserver后端存储的丢失 + +- 措施:使用(实验)[高可用性](/docs/admin/high-availability)的配置 + - 缓解:master VM关机或者master组件(scheduler, API server, controller-managing)崩馈 + - 将容许一个或多个节点或组件同时出现故障 + - 缓解:apiserver后端存储(例如etcd的数据目录)丢失 + - 假定你使用了集群化的etcd。 + +- 措施:定期的对apiserver的PDs/EBS卷进行快照 + - 缓解:apiserver后端存储丢失 + - 缓解:一些操作错误的场景 + - 缓解:一些Kubernetes软件本身故障的场景 + +- 措施:在pods的前面使用副本控制器或服务 + - 缓解:节点关机 + - 缓解:Kubelet软件故障 + +- 措施:应用(容器)设计成容许异常重启 + - 缓解:节点关机 + - 缓解:Kubelet软件故障 + +- 措施:[多个独立的集群](/docs/admin/multi-cluster)(并且避免一次性地对所有的集群进行有风险性的修改) + - 缓解:以上列出的所有情况 diff --git a/cn/docs/tasks/inject-data-application/commands.yaml b/cn/docs/tasks/inject-data-application/commands.yaml index 8d58007db4..2327d25827 100644 --- a/cn/docs/tasks/inject-data-application/commands.yaml +++ b/cn/docs/tasks/inject-data-application/commands.yaml @@ -10,3 +10,4 @@ spec: image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"] + restartPolicy: OnFailure diff --git a/cn/docs/tasks/inject-data-application/distribute-credentials-secure.md b/cn/docs/tasks/inject-data-application/distribute-credentials-secure.md new file mode 100644 index 0000000000..62ff4c1aaa --- /dev/null +++ b/cn/docs/tasks/inject-data-application/distribute-credentials-secure.md @@ -0,0 +1,165 @@ +--- +title: 使用 Secret 安全地分发凭证 +--- + +{% capture overview %} +本文展示如何安全地将敏感数据(如密码和加密密钥)注入到 Pods 中。 +{% endcapture %} + +{% capture prerequisites %} + +{% include task-tutorial-prereqs.md %} + +{% endcapture %} + +{% capture steps %} + +## 将 secret 数据转换为 base-64 形式 + +假设用户想要有两条 secret 数据:用户名 `my-app` 和密码 +`39528$vdg7Jb`。 首先使用 [Base64 编码](https://www.base64encode.org/) 将用户名和密码转化为 base-64 形式。 这里是一个 Linux 示例: + + echo -n 'my-app' | base64 + echo -n '39528$vdg7Jb' | base64 + +结果显示 base-64 形式的用户名为 `bXktYXBw`, +base-64 形式的密码为 `Mzk1MjgkdmRnN0pi`。 + +## 创建 Secret + +这里是一个配置文件,可以用来创建存有用户名和密码的 Secret: + +{% include code.html language="yaml" file="secret.yaml" ghlink="/docs/tasks/inject-data-application/secret.yaml" %} + +1. 创建 Secret + + kubectl create -f secret.yaml + + **注意:** 如果想要跳过 Base64 编码的步骤,可以使用 `kubectl create secret` 命令来创建 Secret: + {: .note} + + kubectl create secret generic test-secret --from-literal=username='my-app' --from-literal=password='39528$vdg7Jb' + +1. 查看 Secret 相关信息: + + kubectl get secret test-secret + + 输出: + + NAME TYPE DATA AGE + test-secret Opaque 2 1m + +1. 查看 Secret 相关的更多详细信息: + + kubectl describe secret test-secret + + 输出: + + Name: test-secret + Namespace: default + Labels: + Annotations: + + Type: Opaque + + Data + ==== + password: 13 bytes + username: 7 bytes + +## 创建可以通过卷访问 secret 数据的 Pod + +这里是一个可以用来创建 pod 的配置文件: + +{% include code.html language="yaml" file="secret-pod.yaml" ghlink="/docs/tasks/inject-data-application/secret-pod.yaml" %} + +1. 创建 Pod: + + kubectl create -f secret-pod.yaml + +1. 确认 Pod 正在运行: + + kubectl get pod secret-test-pod + + 输出: + + NAME READY STATUS RESTARTS AGE + secret-test-pod 1/1 Running 0 42m + + +1. 在 Pod 中运行的容器中获取一个 shell: + + kubectl exec -it secret-test-pod -- /bin/bash + +1. secret 数据通过挂载在 `/etc/secret-volume` 目录下的卷暴露在容器中。 +在 shell 中,进入 secret 数据被暴露的目录: + + root@secret-test-pod:/# cd /etc/secret-volume + +1. 在 shell 中,列出 `/etc/secret-volume` 目录的文件: + + root@secret-test-pod:/etc/secret-volume# ls + + 输出显示了两个文件,每个对应一条 secret 数据: + + password username + +1. 在 shell 中,显示 `username` 和 `password` 文件的内容: + + root@secret-test-pod:/etc/secret-volume# cat username; echo; cat password; echo + + 输出为用户名和密码: + + my-app + 39528$vdg7Jb + +## 创建通过环境变量访问 secret 数据的 Pod + +这里是一个可以用来创建 pod 的配置文件: + +{% include code.html language="yaml" file="secret-envars-pod.yaml" ghlink="/docs/tasks/inject-data-application/secret-envars-pod.yaml" %} + +1. 创建 Pod: + + kubectl create -f secret-envars-pod.yaml + +1. 确认 Pod 正在运行: + + kubectl get pod secret-envars-test-pod + + 输出: + + NAME READY STATUS RESTARTS AGE + secret-envars-test-pod 1/1 Running 0 4m + +1. 在 Pod 中运行的容器中获取一个 shell: + + kubectl exec -it secret-envars-test-pod -- /bin/bash + +1. 在 shell 中,显示环境变量: + + root@secret-envars-test-pod:/# printenv + + 输出包括用户名和密码: + + ... + SECRET_USERNAME=my-app + ... + SECRET_PASSWORD=39528$vdg7Jb + +{% endcapture %} + +{% capture whatsnext %} + +* 了解更多关于 [Secrets](/docs/concepts/configuration/secret/)。 +* 了解 [Volumes](/docs/concepts/storage/volumes/)。 + +### 参考 + +* [Secret](/docs/api-reference/{{page.version}}/#secret-v1-core) +* [Volume](/docs/api-reference/{{page.version}}/#volume-v1-core) +* [Pod](/docs/api-reference/{{page.version}}/#pod-v1-core) + +{% endcapture %} + +{% include templates/task.md %} diff --git a/cn/docs/tasks/inject-data-application/podpreset-allow-db-merged.yaml b/cn/docs/tasks/inject-data-application/podpreset-allow-db-merged.yaml new file mode 100644 index 0000000000..73d93312fa --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-allow-db-merged.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend + annotations: + podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version" +spec: + containers: + - name: website + image: ecorp/website + volumeMounts: + - mountPath: /cache + name: cache-volume + - mountPath: /etc/app/config.json + readOnly: true + name: secret-volume + ports: + - containerPort: 80 + env: + - name: DB_PORT + value: "6379" + - name: duplicate_key + value: FROM_ENV + - name: expansion + value: $(REPLACE_ME) + envFrom: + - configMapRef: + name: etcd-env-config + volumes: + - name: cache-volume + emptyDir: {} + - name: secret-volume + secret: + secretName: config-details diff --git a/cn/docs/tasks/inject-data-application/podpreset-allow-db.yaml b/cn/docs/tasks/inject-data-application/podpreset-allow-db.yaml new file mode 100644 index 0000000000..96f6dbfe20 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-allow-db.yaml @@ -0,0 +1,31 @@ +apiVersion: settings.k8s.io/v1alpha1 +kind: PodPreset +metadata: + name: allow-database + namespace: myns +spec: + selector: + matchLabels: + role: frontend + env: + - name: DB_PORT + value: 6379 + - name: duplicate_key + value: FROM_ENV + - name: expansion + value: $(REPLACE_ME) + envFrom: + - configMapRef: + name: etcd-env-config + volumeMounts: + - mountPath: /cache + name: cache-volume + - mountPath: /etc/app/config.json + readOnly: true + name: secret-volume + volumes: + - name: cache-volume + emptyDir: {} + - name: secret-volume + secret: + secretName: config-details diff --git a/cn/docs/tasks/inject-data-application/podpreset-configmap.yaml b/cn/docs/tasks/inject-data-application/podpreset-configmap.yaml new file mode 100644 index 0000000000..806a880bff --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-configmap.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: etcd-env-config +data: + number_of_members: "1" + initial_cluster_state: new + initial_cluster_token: DUMMY_ETCD_INITIAL_CLUSTER_TOKEN + discovery_token: DUMMY_ETCD_DISCOVERY_TOKEN + discovery_url: http://etcd_discovery:2379 + etcdctl_peers: http://etcd:2379 + duplicate_key: FROM_CONFIG_MAP + REPLACE_ME: "a value" + diff --git a/cn/docs/tasks/inject-data-application/podpreset-conflict-pod.yaml b/cn/docs/tasks/inject-data-application/podpreset-conflict-pod.yaml new file mode 100644 index 0000000000..9061b9f5e8 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-conflict-pod.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend +spec: + containers: + - name: website + image: ecorp/website + volumeMounts: + - mountPath: /cache + name: cache-volume + ports: + volumes: + - name: cache-volume + emptyDir: {} + - containerPort: 80 diff --git a/cn/docs/tasks/inject-data-application/podpreset-conflict-preset.yaml b/cn/docs/tasks/inject-data-application/podpreset-conflict-preset.yaml new file mode 100644 index 0000000000..ab70b14d28 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-conflict-preset.yaml @@ -0,0 +1,19 @@ +apiVersion: settings.k8s.io/v1alpha1 +kind: PodPreset +metadata: + name: allow-database + namespace: myns +spec: + selector: + matchLabels: + role: frontend + env: + - name: DB_PORT + value: "6379" + volumeMounts: + - mountPath: /cache + name: other-volume + volumes: + - name: other-volume + emptyDir: {} + diff --git a/cn/docs/tasks/inject-data-application/podpreset-merged.yaml b/cn/docs/tasks/inject-data-application/podpreset-merged.yaml new file mode 100644 index 0000000000..0a5dfce0b5 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-merged.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend + annotations: + podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version" +spec: + containers: + - name: website + image: ecorp/website + volumeMounts: + - mountPath: /cache + name: cache-volume + ports: + - containerPort: 80 + env: + - name: DB_PORT + value: "6379" + volumes: + - name: cache-volume + emptyDir: {} + diff --git a/cn/docs/tasks/inject-data-application/podpreset-multi-merged.yaml b/cn/docs/tasks/inject-data-application/podpreset-multi-merged.yaml new file mode 100644 index 0000000000..dd6a7197ef --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-multi-merged.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend + annotations: + podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version" + podpreset.admission.kubernetes.io/podpreset-proxy: "resource version" +spec: + containers: + - name: website + image: ecorp/website + volumeMounts: + - mountPath: /cache + name: cache-volume + - mountPath: /etc/proxy/configs + name: proxy-volume + ports: + - containerPort: 80 + env: + - name: DB_PORT + value: "6379" + volumes: + - name: cache-volume + emptyDir: {} + - name: proxy-volume + emptyDir: {} diff --git a/cn/docs/tasks/inject-data-application/podpreset-pod.yaml b/cn/docs/tasks/inject-data-application/podpreset-pod.yaml new file mode 100644 index 0000000000..82c590a924 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-pod.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend +spec: + containers: + - name: website + image: ecorp/website + ports: + - containerPort: 80 + diff --git a/cn/docs/tasks/inject-data-application/podpreset-preset.yaml b/cn/docs/tasks/inject-data-application/podpreset-preset.yaml new file mode 100644 index 0000000000..c5d34437f2 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-preset.yaml @@ -0,0 +1,18 @@ +apiVersion: settings.k8s.io/v1alpha1 +kind: PodPreset +metadata: + name: allow-database + namespace: myns +spec: + selector: + matchLabels: + role: frontend + env: + - name: DB_PORT + value: "6379" + volumeMounts: + - mountPath: /cache + name: cache-volume + volumes: + - name: cache-volume + emptyDir: {} diff --git a/cn/docs/tasks/inject-data-application/podpreset-proxy.yaml b/cn/docs/tasks/inject-data-application/podpreset-proxy.yaml new file mode 100644 index 0000000000..20dab81f36 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-proxy.yaml @@ -0,0 +1,15 @@ +apiVersion: settings.k8s.io/v1alpha1 +kind: PodPreset +metadata: + name: proxy + namespace: myns +spec: + selector: + matchLabels: + role: frontend + volumeMounts: + - mountPath: /etc/proxy/configs + name: proxy-volume + volumes: + - name: proxy-volume + emptyDir: {} diff --git a/cn/docs/tasks/inject-data-application/podpreset-replicaset-merged.yaml b/cn/docs/tasks/inject-data-application/podpreset-replicaset-merged.yaml new file mode 100644 index 0000000000..97f16fde1f --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-replicaset-merged.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Pod +metadata: + labels: + app: guestbook + tier: frontend + annotations: + podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version" +spec: + containers: + - name: php-redis + image: gcr.io/google_samples/gb-frontend:v3 + resources: + requests: + cpu: 100m + memory: 100Mi + volumeMounts: + - mountPath: /cache + name: cache-volume + env: + - name: GET_HOSTS_FROM + value: dns + - name: DB_PORT + value: "6379" + ports: + - containerPort: 80 + volumes: + - name: cache-volume + emptyDir: {} + diff --git a/cn/docs/tasks/inject-data-application/podpreset-replicaset.yaml b/cn/docs/tasks/inject-data-application/podpreset-replicaset.yaml new file mode 100644 index 0000000000..e3ad37470c --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset-replicaset.yaml @@ -0,0 +1,29 @@ +apiVersion: apps/v1beta2 +kind: ReplicaSet +metadata: + name: frontend +spec: + replicas: 3 + selector: + matchLabels: + tier: frontend + matchExpressions: + - {key: tier, operator: In, values: [frontend]} + template: + metadata: + labels: + app: guestbook + tier: frontend + spec: + containers: + - name: php-redis + image: gcr.io/google_samples/gb-frontend:v3 + resources: + requests: + cpu: 100m + memory: 100Mi + env: + - name: GET_HOSTS_FROM + value: dns + ports: + - containerPort: 80 diff --git a/cn/docs/tasks/inject-data-application/podpreset.md b/cn/docs/tasks/inject-data-application/podpreset.md new file mode 100644 index 0000000000..af28ac14c0 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/podpreset.md @@ -0,0 +1,124 @@ +--- +approvers: +- jessfraz +title: 使用 PodPreset 将信息注入 Pods +--- + +在 pod 创建时,用户可以使用 `podpreset` 对象将 secrets、卷挂载和环境变量等信息注入其中。 +本文展示了一些 `PodPreset` 资源使用的示例。 +用户可以从[理解 Pod Presets](/docs/concepts/workloads/pods/podpreset/) 中了解 PodPresets 的整体情况。 + +* TOC +{:toc} + +## 创建 Pod Preset + +### 简单的 Pod Spec 示例 + +这里是一个简单的示例,展示了如何通过 Pod Preset 修改 Pod spec 。 + +**用户提交的 pod spec:** + +{% include code.html language="yaml" file="podpreset-pod.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-pod.yaml" %} + +**Pod Preset 示例:** + +{% include code.html language="yaml" file="podpreset-preset.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-preset.yaml" %} + +**通过准入控制器后的 Pod spec:** + +{% include code.html language="yaml" file="podpreset-merged.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-merged.yaml" %} + +### 带有 `ConfigMap` 的 Pod Spec 示例 + +这里的示例展示了如何通过 Pod Preset 修改 Pod spec,Pod Preset 中定义了 `ConfigMap` 作为环境变量取值来源。 + +**用户提交的 pod spec:** + +{% include code.html language="yaml" file="podpreset-pod.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-pod.yaml" %} + +**用户提交的 `ConfigMap`:** + +{% include code.html language="yaml" file="podpreset-configmap.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-configmap.yaml" %} + +**Pod Preset 示例:** + +{% include code.html language="yaml" file="podpreset-allow-db.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-allow-db.yaml" %} + +**通过准入控制器后的 Pod spec:** + +{% include code.html language="yaml" file="podpreset-allow-db-merged.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-allow-db-merged.yaml" %} + +### 带有 Pod Spec 的 ReplicaSet 示例 + +以下示例展示了(通过 ReplicaSet 创建 pod 后)只有 pod spec 会被 Pod Preset 所修改。 + +**用户提交的 ReplicaSet:** + +{% include code.html language="yaml" file="podpreset-replicaset.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-replicaset.yaml" %} + +**Pod Preset 示例:** + +{% include code.html language="yaml" file="podpreset-preset.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-preset.yaml" %} + +**通过准入控制器后的 Pod spec:** + +注意 ReplicaSet spec 没有改变,用户必须检查单独的 pod 来验证 PodPreset 已被应用。 + +{% include code.html language="yaml" file="podpreset-replicaset-merged.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-replicaset-merged.yaml" %} + +### 多 PodPreset 示例 + +这里的示例展示了如何通过多个 Pod 注入策略修改 Pod spec。 + +**用户提交的 pod spec:** + +{% include code.html language="yaml" file="podpreset-pod.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-pod.yaml" %} + +**Pod Preset 示例:** + +{% include code.html language="yaml" file="podpreset-preset.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-preset.yaml" %} + +**另一个 Pod Preset 示例:** + +{% include code.html language="yaml" file="podpreset-proxy.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-proxy.yaml" %} + +**通过准入控制器后的 Pod spec:** + +{% include code.html language="yaml" file="podpreset-multi-merged.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-multi-merged.yaml" %} + +### 冲突示例 + +这里的示例展示了 Pod Preset 与原 Pod 存在冲突时,Pod spec 不会被修改。 + +**用户提交的 pod spec:** + +{% include code.html language="yaml" file="podpreset-conflict-pod.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-conflict-pod.yaml" %} + +**Pod Preset 示例:** + +{% include code.html language="yaml" file="podpreset-conflict-preset.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-conflict-preset.yaml" %} + +**因存在冲突,通过准入控制器后的 Pod spec 不会改变:** + +{% include code.html language="yaml" file="podpreset-conflict-pod.yaml" ghlink="/cn/docs/tasks/inject-data-application/podpreset-conflict-pod.yaml" %} + +**如果运行 `kubectl describe...` 用户会看到以下事件:** + +``` +$ kubectl describe ... +.... +Events: + FirstSeen LastSeen Count From SubobjectPath Reason Message + Tue, 07 Feb 2017 16:56:12 -0700 Tue, 07 Feb 2017 16:56:12 -0700 1 {podpreset.admission.kubernetes.io/podpreset-allow-database } conflict Conflict on pod preset. Duplicate mountPath /cache. +``` + +## 删除 Pod Preset + +一旦用户不再需要 pod preset,可以使用 `kubectl` 进行删除: + +```shell +$ kubectl delete podpreset allow-database +podpreset "allow-database" deleted +``` + diff --git a/cn/docs/tasks/inject-data-application/secret-envars-pod.yaml b/cn/docs/tasks/inject-data-application/secret-envars-pod.yaml new file mode 100644 index 0000000000..1637c0eac3 --- /dev/null +++ b/cn/docs/tasks/inject-data-application/secret-envars-pod.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: secret-envars-test-pod +spec: + containers: + - name: envars-test-container + image: nginx + env: + - name: SECRET_USERNAME + valueFrom: + secretKeyRef: + name: test-secret + key: username + - name: SECRET_PASSWORD + valueFrom: + secretKeyRef: + name: test-secret + key: password diff --git a/cn/docs/tasks/inject-data-application/secret-pod.yaml b/cn/docs/tasks/inject-data-application/secret-pod.yaml new file mode 100644 index 0000000000..78633c477c --- /dev/null +++ b/cn/docs/tasks/inject-data-application/secret-pod.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Pod +metadata: + name: secret-test-pod +spec: + containers: + - name: test-container + image: nginx + volumeMounts: + # name must match the volume name below + - name: secret-volume + mountPath: /etc/secret-volume + # The secret data is exposed to Containers in the Pod through a Volume. + volumes: + - name: secret-volume + secret: + secretName: test-secret diff --git a/cn/docs/tasks/inject-data-application/secret.yaml b/cn/docs/tasks/inject-data-application/secret.yaml new file mode 100644 index 0000000000..64627d638f --- /dev/null +++ b/cn/docs/tasks/inject-data-application/secret.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: test-secret +data: + username: bXktYXBwCg== + password: Mzk1MjgkdmRnN0piCg== diff --git a/cn/docs/tasks/manage-daemon/rollback-daemon-set.md b/cn/docs/tasks/manage-daemon/rollback-daemon-set.md new file mode 100644 index 0000000000..c9684be648 --- /dev/null +++ b/cn/docs/tasks/manage-daemon/rollback-daemon-set.md @@ -0,0 +1,138 @@ +--- +approvers: +- janetkuo +title: 对 DaemonSet 执行回滚 +--- + +{% capture overview %} + +本文展示了如何对 DaemonSet 执行回滚。 + +{% endcapture %} + + +{% capture prerequisites %} + +* DaemonSet 滚动升级历史和 DaemonSet 回滚特性仅在 Kubernetes 1.7 及以后版本的 `kubectl` 中支持。 +* 确保您了解如何 [对 DaemonSet 执行滚动升级](/docs/tasks/manage-daemon/update-daemon-set/)。 + +{% endcapture %} + + +{% capture steps %} + +## 对 DaemonSet 执行回滚 + +### 步骤 1: 找到想要 DaemonSet 回滚到的历史版本(revision) + +如果只想回滚到最后一个版本,可以跳过这一步。 + +列出 DaemonSet 的所有版本: + +```shell +kubectl rollout history daemonset +``` + +该命令返回 DaemonSet 版本列表: + +```shell +daemonsets "" +REVISION CHANGE-CAUSE +1 ... +2 ... +... +``` + +* 在创建时,DaemonSet 的变化原因从 `kubernetes.io/change-cause` 注解(annotation)复制到其版本中。 用户可以在 `kubectl` 中指定 `--record=true` ,将执行的命令记录在变化原因注解中。 + +执行以下命令,来查看指定版本的详细信息: + +```shell +kubectl rollout history daemonset --revision=1 +``` + +该命令返回相应版本的详细信息: + +```shell +daemonsets "" with revision #1 +Pod Template: +Labels: foo=bar +Containers: +app: + Image: ... + Port: ... + Environment: ... + Mounts: ... +Volumes: ... +``` + +### 步骤 2: 回滚到指定版本 + +```shell +# 在 --to-revision 中指定您从步骤 1 中获取的版本序号 +kubectl rollout undo daemonset --to-revision= +``` + +如果成功,命令会返回: + +```shell +daemonset "" rolled back +``` + +如果 `--to-revision` 参数未指定,将选中最近的版本。 + +### 步骤 3: 观察 DaemonSet 回滚进度 + +`kubectl rollout undo daemonset` 向服务器表明启动 DaemonSet 回滚。 真正的回滚是在服务器端异步完成的。 + +执行以下命令,来观察 DaemonSet 回滚进度: + +```shell +kubectl rollout status ds/ +``` + +回滚完成时,输出形如: + +```shell +daemonset "" successfully rolled out +``` + +{% endcapture %} + + +{% capture discussion %} + +## 理解 DaemonSet 版本 + +在前面的 `kubectl rollout history` 步骤中,您获得了一个版本列表,每个版本都存储在名为 + `ControllerRevision` 的资源中。 `ControllerRevision` 仅在 Kubernetes 1.7 及以后的版本中可用。 + +查找原始的版本资源,来查看每个版本中存储了什么内容: + +```shell +kubectl get controllerrevision -l = +``` + +该命令返回 `ControllerRevisions` 列表: + +```shell +NAME CONTROLLER REVISION AGE +- DaemonSet/ 1 1h +- DaemonSet/ 2 1h +``` + +每个 `ControllerRevision` 中存储了相应 DaemonSet 版本的注解和模板。 + +`kubectl rollout undo` 采用特定 `ControllerRevision` ,并用 +`ControllerRevision` 中存储的模板代替 DaemonSet 的模板。 +`kubectl rollout undo` 相当于通过其他命令(如 `kubectl edit` 或 `kubectl apply`)将 DaemonSet 模板更新至先前的版本。 + +注意 DaemonSet 版本只会向前滚动。 也就是说,回滚完成后,所回滚到的 `ControllerRevision` 版本号 (`.revision` 字段) 会增加。 例如,如果用户在系统中有版本 1 和版本 2,并从版本 2 回滚到版本 1 ,带有 `.revision: 1` 的`ControllerRevision` 将变为 `.revision: 3`。 + +## 故障排除 + +* 查看 [DaemonSet 滚动升级故障排除](/docs/tasks/manage-daemon/update-daemon-set/#troubleshooting)。 + +{% endcapture %} + +{% include templates/task.md %} diff --git a/cn/docs/tasks/manage-hugepages/scheduling-hugepages.md b/cn/docs/tasks/manage-hugepages/scheduling-hugepages.md new file mode 100644 index 0000000000..1055b1fdd0 --- /dev/null +++ b/cn/docs/tasks/manage-hugepages/scheduling-hugepages.md @@ -0,0 +1,69 @@ +--- +approvers: +- derekwaynecarr +title: 管理巨页(HugePages) +--- + +{% capture overview %} +{% include feature-state-alpha.md %} + +作为 **alpha** 特性,Kubernetes 支持在 Pod 应用中使用预先分配的巨页(或称“大页面”,下文统称为“巨页”)。 本文描述了用户如何使用巨页,以及当前的限制。 + +{% endcapture %} + +{% capture prerequisites %} + +1. 为了使节点能够上报巨页容量,Kubernetes 节点必须预先分配巨页。 + 每个节点只能预先分配一种特定规格的巨页。 +1. 用户必须在整个系统中将专用的 **alpha** 特性开关 `HugePages` 设置为 true: `--feature-gates=HugePages=true`。 + +节点会自动发现全部巨页资源,并作为可供调度的资源进行上报。 + +{% endcapture %} + +{% capture steps %} + +## API + +用户可以通过在容器级别的资源需求中使用资源名称 `hugepages-` 来使用巨页,其中的 size 是特定节点上支持的以整数值表示的最小二进制单位。 例如,如果节点支持 2048KiB 的页面规格, 它将暴露可供调度的资源 `hugepages-2Mi`。 与 CPU 或内存不同,巨页不支持过量使用(overcommit)。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + generateName: hugepages-volume- +spec: + containers: + - image: fedora:latest + command: + - sleep + - inf + name: example + volumeMounts: + - mountPath: /hugepages + name: hugepage + resources: + limits: + hugepages-2Mi: 100Mi + volumes: + - name: hugepage + emptyDir: + medium: HugePages +``` + +- 巨页的资源需求和限制必须相等。 该条件在指定了资源限制,而没有指定需求的情况下默认成立。 +- 巨页是被隔离在 pod 作用域的,计划在将来的迭代中实现容器级别的隔离。 +- 巨页对 EmptyDir 卷提供支持,EmptyDir 卷所使用的巨页,不能够超出 pod 请求的内存容量。 +- 通过带有 `SHM_HUGETLB` 的 `shmget()` 使用巨页的应用,必须运行在一个与 + `proc/sys/vm/hugetlb_shm_group` 匹配的补充组下。 + +## (待实现的)特性 + +- 在 pod 级别隔离的基础上,支持巨页在容器级别的隔离。 +- 作为服务质量特性,保证巨页的 NUMA 局部性。 +- 支持 ResourceQuota 。 +- 支持 LimitRange 。 + +{% endcapture %} + +{% include templates/task.md %} diff --git a/cn/docs/tasks/run-application/horizontal-pod-autoscale.md b/cn/docs/tasks/run-application/horizontal-pod-autoscale.md deleted file mode 100644 index 941d54205f..0000000000 --- a/cn/docs/tasks/run-application/horizontal-pod-autoscale.md +++ /dev/null @@ -1,154 +0,0 @@ ---- -approvers: -- fgrzadkowski -- jszczepkowski -- directxman12 -title: Horizontal Pod Autoscaling ---- - -This document describes the current state of Horizontal Pod Autoscaling in Kubernetes. - -## What is Horizontal Pod Autoscaling? - -With Horizontal Pod Autoscaling, Kubernetes automatically scales the number of pods -in a replication controller, deployment or replica set based on observed CPU utilization -(or, with alpha support, on some other, application-provided metrics). Note that Horizontal -Pod Autoscaling does not apply to objects that can't be scaled, for example, DaemonSet. - -The Horizontal Pod Autoscaler is implemented as a Kubernetes API resource and a controller. -The resource determines the behavior of the controller. -The controller periodically adjusts the number of replicas in a replication controller or deployment -to match the observed average CPU utilization to the target specified by user. - -## How does the Horizontal Pod Autoscaler work? - -![Horizontal Pod Autoscaler diagram](/images/docs/horizontal-pod-autoscaler.svg) - -The Horizontal Pod Autoscaler is implemented as a control loop, with a period controlled -by the controller manager's `--horizontal-pod-autoscaler-sync-period` flag (with a default -value of 30 seconds). - -During each period, the controller manager queries the resource utilization against the -metrics specified in each HorizontalPodAutoscaler definition. The controller manager -obtains the metrics from either the resource metrics API (for per-pod resource metrics), -or the custom metrics API (for all other metrics). - -* For per-pod resource metrics (like CPU), the controller fetches the metrics - from the resource metrics API for each pod targeted by the HorizontalPodAutoscaler. - Then, if a target utilization value is set, the controller calculates the utilization - value as a percentage of the equivalent resource request on the containers in - each pod. If a target raw value is set, the raw metric values are used directly. - The controller then takes the mean of the utilization or the raw value (depending on the type - of target specified) across all targeted pods, and produces a ratio used to scale - the number of desired replicas. - - Please note that if some of the pod's containers do not have the relevant resource request set, - CPU utilization for the pod will not be defined and the autoscaler will not take any action - for that metric. See the [autoscaling algorithm design document](https://git.k8s.io/community/contributors/design-proposals/autoscaling/horizontal-pod-autoscaler.md#autoscaling-algorithm) for further - details about how the autoscaling algorithm works. - -* For per-pod custom metrics, the controller functions similarly to per-pod resource metrics, - except that it works with raw values, not utilization values. - -* For object metrics, a single metric is fetched (which describes the object - in question), and compared to the target value, to produce a ratio as above. - -The HorizontalPodAutoscaler controller can fetch metrics in two different ways: direct Heapster -access, and REST client access. - -When using direct Heapster access, the HorizontalPodAutoscaler queries Heapster directly -through the API server's service proxy subresource. Heapster needs to be deployed on the -cluster and running in the kube-system namespace. - -See [Support for custom metrics](#support-for-custom-metrics) for more details on REST client access. - -The autoscaler accesses corresponding replication controller, deployment or replica set by scale sub-resource. -Scale is an interface that allows you to dynamically set the number of replicas and examine each of their current states. -More details on scale sub-resource can be found [here](https://git.k8s.io/community/contributors/design-proposals/autoscaling/horizontal-pod-autoscaler.md#scale-subresource). - - -## API Object - -The Horizontal Pod Autoscaler is an API resource in the Kubernetes `autoscaling` API group. -The current stable version, which only includes support for CPU autoscaling, -can be found in the `autoscaling/v1` API version. - -The alpha version, which includes support for scaling on memory and custom metrics, -can be found in `autoscaling/v2alpha1`. The new fields introduced in `autoscaling/v2alpha1` -are preserved as annotations when working with `autoscaling/v1`. - -More details about the API object can be found at -[HorizontalPodAutoscaler Object](https://git.k8s.io/community/contributors/design-proposals/autoscaling/horizontal-pod-autoscaler.md#horizontalpodautoscaler-object). - -## Support for Horizontal Pod Autoscaler in kubectl - -Horizontal Pod Autoscaler, like every API resource, is supported in a standard way by `kubectl`. -We can create a new autoscaler using `kubectl create` command. -We can list autoscalers by `kubectl get hpa` and get detailed description by `kubectl describe hpa`. -Finally, we can delete an autoscaler using `kubectl delete hpa`. - -In addition, there is a special `kubectl autoscale` command for easy creation of a Horizontal Pod Autoscaler. -For instance, executing `kubectl autoscale rc foo --min=2 --max=5 --cpu-percent=80` -will create an autoscaler for replication controller *foo*, with target CPU utilization set to `80%` -and the number of replicas between 2 and 5. -The detailed documentation of `kubectl autoscale` can be found [here](/docs/user-guide/kubectl/v1.6/#autoscale). - - -## Autoscaling during rolling update - -Currently in Kubernetes, it is possible to perform a [rolling update](/docs/tasks/run-application/rolling-update-replication-controller/) by managing replication controllers directly, -or by using the deployment object, which manages the underlying replication controllers for you. -Horizontal Pod Autoscaler only supports the latter approach: the Horizontal Pod Autoscaler is bound to the deployment object, -it sets the size for the deployment object, and the deployment is responsible for setting sizes of underlying replication controllers. - -Horizontal Pod Autoscaler does not work with rolling update using direct manipulation of replication controllers, -i.e. you cannot bind a Horizontal Pod Autoscaler to a replication controller and do rolling update (e.g. using `kubectl rolling-update`). -The reason this doesn't work is that when rolling update creates a new replication controller, -the Horizontal Pod Autoscaler will not be bound to the new replication controller. - -## Support for multiple metrics - -Kubernetes 1.6 adds support for scaling based on multiple metrics. You can use the `autoscaling/v2alpha1` API -version to specify multiple metrics for the Horizontal Pod Autoscaler to scale on. Then, the Horizontal Pod -Autoscaler controller will evaluate each metric, and propose a new scale based on that metric. The largest of the -proposed scales will be used as the new scale. - -## Support for custom metrics - -**Note**: Kubernetes 1.2 added alpha support for scaling based on application-specific metrics using special annotations. -Support for these annotations was removed in Kubernetes 1.6 in favor of the `autoscaling/v2alpha1` API. While the old method for collecting -custom metrics is still available, these metrics will not be available for use by the Horizontal Pod Autoscaler, and the former -annotations for specifying which custom metrics to scale on are no longer honored by the Horizontal Pod Autoscaler controller. - -Kubernetes 1.6 adds support for making use of custom metrics in the Horizontal Pod Autoscaler. -You can add custom metrics for the Horizontal Pod Autoscaler to use in the `autoscaling/v2alpha1` API. -Kubernetes then queries the new custom metrics API to fetch the values of the appropriate custom metrics. - -### Requirements - -To use custom metrics with your Horizontal Pod Autoscaler, you must set the necessary configurations when deploying your cluster: - -* [Enable the API aggregation layer](/docs/tasks/access-kubernetes-api/configure-aggregation-layer/) if you have not already done so. - -* Register your resource metrics API and your -custom metrics API with the API aggregation layer. Both of these API servers must be running *on* your cluster. - - * *Resource Metrics API*: You can use Heapster's implementation of the resource metrics API, by running Heapster with its `--api-server` flag set to true. - - * *Custom Metrics API*: This must be provided by a separate component. To get started with boilerplate code, see the [kubernetes-incubator/custom-metrics-apiserver](https://github.com/kubernetes-incubator/custom-metrics-apiserver) and the [k8s.io/metrics](https://github.com/kubernetes/metrics) repositories. - -* Set the appropriate flags for kube-controller-manager: - - * `--horizontal-pod-autoscaler-use-rest-clients` should be true. - - * `--kubeconfig ` OR `--master ` - - Note that either the `--master` or `--kubeconfig` flag can be used; `--master` will override `--kubeconfig` if both are specified. These flags specify the location of the API aggregation layer, allowing the controller manager to communicate to the API server. - - In Kubernetes 1.7, the standard aggregation layer that Kubernetes provides runs in-process with the kube-apiserver, so the target IP address can be found with `kubectl get pods --selector k8s-app=kube-apiserver --namespace kube-system -o jsonpath='{.items[0].status.podIP}'`. - -## Further reading - -* Design documentation: [Horizontal Pod Autoscaling](https://git.k8s.io/community/contributors/design-proposals/autoscaling/horizontal-pod-autoscaler.md). -* kubectl autoscale command: [kubectl autoscale](/docs/user-guide/kubectl/v1.6/#autoscale). -* Usage example of [Horizontal Pod Autoscaler](/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/). diff --git a/cn/docs/tasks/run-application/run-stateless-application-deployment.md b/cn/docs/tasks/run-application/run-stateless-application-deployment.md index ef228f9d66..610f91334a 100644 --- a/cn/docs/tasks/run-application/run-stateless-application-deployment.md +++ b/cn/docs/tasks/run-application/run-stateless-application-deployment.md @@ -42,7 +42,7 @@ title: 使用Deployment运行一个无状态应用 kubectl describe deployment nginx-deployment - user@computer:~/kubernetes.github.io$ kubectl describe deployment nginx-deployment + user@computer:~/website$ kubectl describe deployment nginx-deployment Name: nginx-deployment Namespace: default CreationTimestamp: Tue, 30 Aug 2016 18:11:37 -0700 diff --git a/cn/docs/tasks/tls/certificate-rotation.md b/cn/docs/tasks/tls/certificate-rotation.md new file mode 100644 index 0000000000..726eb5bd73 --- /dev/null +++ b/cn/docs/tasks/tls/certificate-rotation.md @@ -0,0 +1,64 @@ +--- +approvers: +- jcbsmpsn +- mikedanese +title: 证书轮换 +--- + +{% capture overview %} +本文展示如何在 kubelet 中启用并配置证书轮换。 +{% endcapture %} + +{% capture prerequisites %} + +* 要求 Kubernetes 1.8.0 或更高的版本 + +* Kubelet 证书轮换在 1.8.0 版本中处于 beta 阶段, 这意味着该特性可能在没有通知的情况下发生变化。 + +{% endcapture %} + +{% capture steps %} + +## 概述 + +Kubelet 使用证书进行 Kubernetes API 的认证。 +默认情况下,这些证书的签发期限为一年,所以不需要太频繁地进行更新。 + +Kubernetes 1.8 版本中包含 beta 特性 [kubelet 证书轮换](/docs/tasks/administer-cluster/certificate-rotation/), +在当前证书即将过期时, +将自动生成新的秘钥,并从 Kubernetes API 申请新的证书。 一旦新的证书可用,它将被用于与 +Kubernetes API 间的连接认证。 + +## 启用客户端证书轮换 + + `kubelet` 进程接收 `--rotate-certificates` 参数,该参数决定 kubelet 在当前使用的证书即将到期时, +是否会自动申请新的证书。 由于证书轮换是 beta 特性,必须通过参数 `--feature-gates=RotateKubeletClientCertificate=true` 进行启用。 + + +`kube-controller-manager` 进程接收 +`--experimental-cluster-signing-duration` 参数,该参数控制证书签发的有效期限。 + +## 理解证书轮换配置 + +当 kubelet 启动时,如被配置为自举(使用`--bootstrap-kubeconfig` 参数),kubelet 会使用其初始证书连接到 +Kubernetes API ,并发送证书签名的请求。 可以通过以下方式查看证书签名请求的状态: + +```sh +kubectl get csr +``` + +最初,来自节点上 kubelet 的证书签名请求处于 `Pending` 状态。 如果证书签名请求满足特定条件, +控制器管理器会自动批准,此时请求会处于 `Approved` 状态。 接下来,控制器管理器会签署证书, +证书的有效期限由 `--experimental-cluster-signing-duration` 参数指定,签署的证书会被附加到证书签名请求中。 + +Kubelet 会从 Kubernetes API 取回签署的证书,并将其写入磁盘,存储位置通过 `--cert-dir` 参数指定。 +然后 kubelet 会使用新的证书连接到 Kubernetes API。 + +当签署的证书即将到期时,kubelet 会使用 Kubernetes API,发起新的证书签名请求。 +同样地,控制器管理器会自动批准证书请求,并将签署的证书附加到证书签名请求中。 Kubelet +会从 Kubernetes API 取回签署的证书,并将其写入磁盘。 然后它会更新与 Kubernetes API +的连接,使用新的证书重新连接到 Kubernetes API。 + +{% endcapture %} + +{% include templates/task.md %} diff --git a/cn/docs/tasks/tls/managing-tls-in-a-cluster.md b/cn/docs/tasks/tls/managing-tls-in-a-cluster.md deleted file mode 100644 index 30299af8c4..0000000000 --- a/cn/docs/tasks/tls/managing-tls-in-a-cluster.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: Manage TLS Certificates in a Cluster -approvers: -- mikedanese -- beacham -- liggit ---- - -* TOC -{:toc} - -## Overview - -Every Kubernetes cluster has a cluster root Certificate Authority (CA). The CA -is generally used by cluster components to validate the API server's -certificate, by the API server to validate kubelet client certificates, etc. To -support this, the CA certificate bundle is distributed to every node in the -cluster and is distributed as a secret attached to default service accounts. -Optionally, your workloads can use this CA to establish trust. Your application -can request a certificate signing using the `certificates.k8s.io` API using a -protocol that is similar to the -[ACME draft](https://github.com/ietf-wg-acme/acme/). - -## Trusting TLS in a Cluster - -Trusting the cluster root CA from an application running as a pod usually -requires some extra application configuration. You will need to add the CA -certificate bundle to the list of CA certificates that the TLS client or server -trusts. For example, you would do this with a golang TLS config by parsing the -certificate chain and adding the parsed certificates to the `Certificates` field -in the [`tls.Config`](https://godoc.org/crypto/tls#Config) struct. - -The CA certificate bundle is automatically mounted into pods using the default -service account at the path `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`. -If you are not using the default service account, ask a cluster administrator to -build a configmap containing the certificate bundle that you have access to use. - -## Requesting a Certificate - -The following section demonstrates how to create a TLS certificate for a -Kubernetes service accessed through DNS. - -### Step 0. Download and install CFSSL - -The cfssl tools used in this example can be downloaded at -[https://pkg.cfssl.org/](https://pkg.cfssl.org/). - -### Step 1. Create a Certificate Signing Request - -Generate a private key and certificate signing request (or CSR) by running -the following command: - -```console -$ cat < -Annotations: -CreationTimestamp: Tue, 21 Mar 2017 07:03:51 -0700 -Requesting User: yourname@example.com -Status: Pending -Subject: - Common Name: my-svc.my-namespace.svc.cluster.local - Serial Number: -Subject Alternative Names: - DNS Names: my-svc.my-namespace.svc.cluster.local - IP Addresses: 172.168.0.24 - 10.0.34.2 -Events: -``` - -### Step 3. Get the Certificate Signing Request Approved - -Approving the certificate signing request is either done by an automated -approval process or on a one off basis by a cluster administrator. More -information on what this involves is covered below. - -### Step 4. Download the Certificate and Use It - -Once the CSR is signed and approved you should see the following: - -```console -$ kubectl get csr -NAME AGE REQUESTOR CONDITION -my-svc.my-namespace 10m yourname@example.com Approved,Issued -``` - -You can download the issued certificate and save it to a `server.crt` file -by running the following: - -```console -$ kubectl get csr my-svc.my-namespace -o jsonpath='{.status.certificate}' \ - | base64 -d > server.crt -``` - -Now you can use `server.crt` and `server-key.pem` as the keypair to start -your HTTPS server. - -## Approving Certificate Signing Requests - -A Kubernetes administrator (with appropriate permissions) can manually approve -(or deny) Certificate Signing Requests by using the `kubectl certificate -approve` and `kubectl certificate deny` commands. However if you intend -to make heavy usage of this API, you might consider writing an automated -certificates controller. - -Whether a machine or a human using kubectl as above, the role of the approver is -to verify that the CSR satisfies two requirements: - -1. The subject of the CSR controls the private key used to sign the CSR. This - addresses the threat of a third party masquerading as an authorized subject. - In the above example, this step would be to verify that the pod controls the - private key used to generate the CSR. -2. The subject of the CSR is authorized to act in the requested context. This - addresses the threat of an undesired subject joining the cluster. In the - above example, this step would be to verify that the pod is allowed to - participate in the requested service. - -If and only if these two requirements are met, the approver should approve -the CSR and otherwise should deny the CSR. - -## A Word of **Warning** on the Approval Permission - -The ability to approve CSRs decides who trusts who within the cluster. This -includes who the Kubernetes API trusts. The ability to approve CSRs should -not be granted broadly or lightly. The requirements of the challenge -noted in the previous section and the repercussions of issuing a specific -certificate should be fully understood before granting this permission. See -[here](/docs/admin/authentication#x509-client-certs) for information on how -certificates interact with authentication. - -## A Note to Cluster Administrators - -This tutorial assumes that a signer is setup to serve the certificates API. The -Kubernetes controller manager provides a default implementation of a signer. To -enable it, pass the `--cluster-signing-cert-file` and -`--cluster-signing-key-file` parameters to the controller manager with paths to -your Certificate Authority's keypair. diff --git a/cn/docs/tutorials/kubernetes-basics/expose-intro.html b/cn/docs/tutorials/kubernetes-basics/expose-intro.html index 301df7376d..623c5f3efc 100644 --- a/cn/docs/tutorials/kubernetes-basics/expose-intro.html +++ b/cn/docs/tutorials/kubernetes-basics/expose-intro.html @@ -27,12 +27,19 @@ title: 使用服务发布您的应用程序

Kubernetes 服务概述

-

Kubernetes Pods 终有一死. Pods 实际上有一个 生命周期. 当工作节点死机时, 节点上运行的Pod也将丢失。 一个 ReplicationController 可能会通过创建新的Pod以动态地将集群恢复到所需的状态,以保持您的应用程序运行。还有一种方法就是:决定是否使用具有3个副本的图像处理后端。这些副本是可替代的前端系统不应关心后端副本,即使Pod丢失并重建也不会更改。 也就是说,Kubernetes 集群中的每个 Pod 都有一个唯一的IP地址,即使在同一个节点上的 Pods 也是如此,所以此时就需要一种自动调整更改 Pod 的方法, 以便您的应用程序继续运行。输入 服务. Kubernetes 中的服务是一个抽象对象,它定义了一组逻辑的 Pods 和一个访问它们的策略。 服务让互相依赖的 Pod 之间的耦合松动。 服务由 YAML (首选) 或 JSON 定义。像所有 Kubernetes 对象一样。 针对服务的一组 Pod 通常由Label选择器确定(参见下文,为什么您可能希望不将 选择器 包含在规范中。

+

Kubernetes Pods 终有一死。 + Pods 实际上有一个 生命周期。 + 当工作节点死机时,节点上运行的Pod也将丢失。 + 一个 ReplicationController 可能会通过创建新的Pod以动态地将集群恢复到所需的状态,以保持您的应用程序运行。 + 比如说,假如一个图像处理软件有三个副本。这些副本是可替代的,前端系统不应关心后端副本,即使Pod丢失并重建也不会更改。 + 也就是说,Kubernetes 集群中的每个 Pod 都有一个唯一的IP地址,即使在同一个节点上的 Pods 也是如此,所以此时就需要一种自动调整更改 Pod 的方法,以便您的应用程序继续运行。

+

服务:Kubernetes 中的服务是一个抽象对象,它定义了一组逻辑的 Pods 和一个访问它们的策略。 服务让互相依赖的 Pod 之间的耦合松动。 服务像所有 Kubernetes 对象一样,由 YAML (首选) 或 JSON 定义。 + 针对服务的一组 Pod 通常由 LabelSelector 确定(参见下文,为什么您可能不希望将 选择器 包含在规范中)。

-

虽然每个 Pod 都有一个唯一的 IP 地址,但是这些 IP 不会在没有服务的情况下公开在群集之外。服务允许您的应用程序接收流量。 可以通过在 ServiceSpec 中指定类型 以不同方式显示服务:

+

虽然每个 Pod 都有一个唯一的 IP 地址,但是这些 IP 不会在没有服务的情况下公开在群集之外。服务允许您的应用程序接收流量。 可以通过在 ServiceSpec 中指定类型 以不同方式显示服务:

  • ClusterIP(默认) - 在集群中的内部IP上公开服务。此类型使服务只能从集群中访问。
  • -
  • NodePort —— 使用NAT在群集中每个选定的节点的同一端口上显示该服务。使用 :可以从群集外部访问服务。建立 ClusterIP 的超集.
  • +
  • NodePort —— 使用NAT在群集中每个选定的节点的同一端口上显示该服务。使用 :可以从群集外部访问服务。建立 ClusterIP 的超集。
  • LoadBalancer —— 在当前云中创建外部负载平衡器(如果支持),并为服务分配固定的外部IP。建立 NodePort 的超集。
  • ExternalName —— 使用任意名称显示该服务(由规范中的externalName 指定),本过程通过使用该名称返回 CNAME 记录达成。无须使用代理。这种类型需要 v1.7 或更高版本的 kube-dns.
@@ -70,7 +77,8 @@ title: 使用服务发布您的应用程序

A服务可以跨一组 Pod 路由流量。服务是允许 Pod 在 Kubernetes 中死亡和复制而不影响应用程序的抽象层。相关 Pod 之间的发现和路由(如应用程序中的前端和后端组件)是由 Kubernetes Services 处理的。

-

服务使用 标签和选择器, 匹配一组 Pod,成为分组原语,此原语允许在 Kubernetes 中的对象进行逻辑运算。标签是一对附加到对象的关键/重要组,可以以多种方式使用,方式如下:

+

服务使用 标签和选择器,匹配一组 Pod,成为分组原语,此原语允许在 Kubernetes 中的对象进行逻辑运算。 + 标签是一对附加到对象的键/值对,可以以多种方式使用,方式如下:

  • 指定用于开发、测试和生产的对象
  • 嵌入版本标签
  • @@ -80,7 +88,7 @@ title: 使用服务发布您的应用程序
-

您可以在使用
--expose 在 kubectl 中创建部署的同时创建服务.

+

您可以在使用
--expose 在 kubectl 中创建部署的同时创建服务。

diff --git a/cn/docs/tutorials/services/source-ip.md b/cn/docs/tutorials/services/source-ip.md index 02bb213816..18d0c4f902 100644 --- a/cn/docs/tutorials/services/source-ip.md +++ b/cn/docs/tutorials/services/source-ip.md @@ -229,7 +229,7 @@ client_address=10.240.0.5 ``` -然而,如果你的集群运行在 GKE/GCE 上,设置 `service.spec.externalTrafficPolicy` 字段值为 `Local` 可以强制使*没有* endpoints 的节点把他们自己从负载均衡流量的可选节点名单中删除。这是通过故意使它们健康检查失败达到的。 +然而,如果你的集群运行在 Google Kubernetes Engine/GCE 上,设置 `service.spec.externalTrafficPolicy` 字段值为 `Local` 可以强制使*没有* endpoints 的节点把他们自己从负载均衡流量的可选节点名单中删除。这是通过故意使它们健康检查失败达到的。 形象的: diff --git a/cn/docs/tutorials/stateful-application/basic-stateful-set.md b/cn/docs/tutorials/stateful-application/basic-stateful-set.md index 7290344cf3..049c86de11 100644 --- a/cn/docs/tutorials/stateful-application/basic-stateful-set.md +++ b/cn/docs/tutorials/stateful-application/basic-stateful-set.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - enisoc - erictune - foxish diff --git a/cn/docs/tutorials/stateful-application/cassandra-statefulset.yaml b/cn/docs/tutorials/stateful-application/cassandra-statefulset.yaml index f283acf657..2f4b6e87aa 100644 --- a/cn/docs/tutorials/stateful-application/cassandra-statefulset.yaml +++ b/cn/docs/tutorials/stateful-application/cassandra-statefulset.yaml @@ -86,7 +86,7 @@ spec: storage: 1Gi --- kind: StorageClass -apiVersion: storage.k8s.io/v1beta1 +apiVersion: storage.k8s.io/v1 metadata: name: fast provisioner: k8s.io/minikube-hostpath diff --git a/cn/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md b/cn/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md index 635a246e06..030d2c24e5 100644 --- a/cn/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md +++ b/cn/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md @@ -1,6 +1,6 @@ --- title: "基于 Persistent Volumes 搭建 WordPress 和 MySQL 应用" -assignees: +approvers: - ahmetb - jeffmendoza --- diff --git a/cn/docs/tutorials/stateful-application/zookeeper.md b/cn/docs/tutorials/stateful-application/zookeeper.md index 864ee0f7f8..f6f3ef46f9 100644 --- a/cn/docs/tutorials/stateful-application/zookeeper.md +++ b/cn/docs/tutorials/stateful-application/zookeeper.md @@ -1,5 +1,5 @@ --- -assignees: +approvers: - bprashanth - enisoc - erictune @@ -204,7 +204,7 @@ maxClientCnxns=60 minSessionTimeout= 4000 maxSessionTimeout= 40000 autopurge.snapRetainCount=3 -autopurge.purgeInteval=0 +autopurge.purgeInterval=0 server.1=zk-0.zk-headless.default.svc.cluster.local:2888:3888 server.2=zk-1.zk-headless.default.svc.cluster.local:2888:3888 server.3=zk-2.zk-headless.default.svc.cluster.local:2888:3888 diff --git a/cn/docs/user-guide/bad-nginx-deployment.yaml b/cn/docs/user-guide/bad-nginx-deployment.yaml new file mode 100644 index 0000000000..e93cf309b4 --- /dev/null +++ b/cn/docs/user-guide/bad-nginx-deployment.yaml @@ -0,0 +1,16 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.91 + ports: + - containerPort: 80 diff --git a/cn/docs/user-guide/curlpod.yaml b/cn/docs/user-guide/curlpod.yaml new file mode 100644 index 0000000000..0741a58e7f --- /dev/null +++ b/cn/docs/user-guide/curlpod.yaml @@ -0,0 +1,25 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: curl-deployment +spec: + replicas: 1 + template: + metadata: + labels: + app: curlpod + spec: + volumes: + - name: secret-volume + secret: + secretName: nginxsecret + containers: + - name: curlpod + command: + - sh + - -c + - while true; do sleep 1; done + image: radial/busyboxplus:curl + volumeMounts: + - mountPath: /etc/nginx/ssl + name: secret-volume diff --git a/cn/docs/user-guide/deployment.yaml b/cn/docs/user-guide/deployment.yaml new file mode 100644 index 0000000000..8cdf1692ef --- /dev/null +++ b/cn/docs/user-guide/deployment.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: nginx-deployment + labels: + name: nginx-deployment +spec: + replicas: 3 + selector: + matchLabels: + name: nginx + template: + metadata: + labels: + name: nginx + spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 diff --git a/cn/docs/user-guide/docker-cli-to-kubectl.md b/cn/docs/user-guide/docker-cli-to-kubectl.md new file mode 100644 index 0000000000..0f0e30d93b --- /dev/null +++ b/cn/docs/user-guide/docker-cli-to-kubectl.md @@ -0,0 +1,275 @@ +--- +approvers: +- bgrant0607 +- brendandburns +- thockin +title: Docker 用户使用 kubectl 命令指南 +--- + +在本文中,我们将向 docker-cli 用户介绍 Kubernetes 命令行如何与 api 进行交互。该命令行工具——kubectl,被设计成 docker-cli 用户所熟悉的样子,但是它们之间又存在一些必要的差异。该文档将向您展示每个 docker 子命令和 kubectl 与其等效的命令。 + +* TOC +{:toc} + +#### docker run + +如何运行一个 nginx Deployment 并将其暴露出来? 查看 [kubectl run](/docs/user-guide/kubectl/{{page.version}}/#run) 。 + +使用 docker 命令: + +```shell +$ docker run -d --restart=always -e DOMAIN=cluster --name nginx-app -p 80:80 nginx +a9ec34d9878748d2f33dc20cb25c714ff21da8d40558b45bfaec9955859075d0 +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +a9ec34d98787 nginx "nginx -g 'daemon of 2 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp, 443/tcp nginx-app +``` + +使用 kubectl 命令: + +```shell +# start the pod running nginx +$ kubectl run --image=nginx nginx-app --port=80 --env="DOMAIN=cluster" +deployment "nginx-app" created +``` + +在 1.2 及以上版本的 Kubernetes 集群中,使用`kubectl run` 命令将创建一个名为 "nginx-app" 的 Deployment。如果您运行的是老版本,将会创建一个 replication controller。 +如果您想沿用旧的行为,使用 `--generation=run/v1` 参数,这样就会创建 replication controller。查看 [`kubectl run`](/docs/user-guide/kubectl/{{page.version}}/#run) 获取更多详细信息。 + +```shell +# expose a port through with a service +$ kubectl expose deployment nginx-app --port=80 --name=nginx-http +service "nginx-http" exposed +``` + +在 kubectl 命令中,我们创建了一个 [Deployment](/docs/concepts/workloads/controllers/deployment/),这将保证有 N 个运行 nginx 的 pod(N 代表 spec 中声明的 replica 数,默认为 1)。我们还创建了一个 [service](/docs/user-guide/services),使用 selector 匹配具有相应的 selector 的 Deployment。查看 [快速开始](/docs/user-guide/quick-start) 获取更多信息。 + +默认情况下镜像会在后台运行,与`docker run -d ...` 类似,如果您想在前台运行,使用: + +```shell +kubectl run [-i] [--tty] --attach --image= +``` + +与 `docker run ...` 不同的是,如果指定了 `--attach` ,我们将连接到 `stdin`,`stdout` 和 `stderr`,而不能控制具体连接到哪个输出流(`docker -a ...`)。 + +因为我们使用 Deployment 启动了容器,如果您终止了连接到的进程(例如 `ctrl-c`),容器将会重启,这跟 `docker run -it` 不同。 +如果想销毁该 Deployment(和它的 pod),您需要运行 `kubeclt delete deployment `。 + +#### docker ps + +如何列出哪些正在运行?查看 [kubectl get](/docs/user-guide/kubectl/{{page.version}}/#get)。 + +使用 docker 命令: + +```shell +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +a9ec34d98787 nginx "nginx -g 'daemon of About an hour ago Up About an hour 0.0.0.0:80->80/tcp, 443/tcp nginx-app +``` + +使用 kubectl 命令: + +```shell +$ kubectl get po +NAME READY STATUS RESTARTS AGE +nginx-app-5jyvm 1/1 Running 0 1h +``` + +#### docker attach + +如何连接到已经运行在容器中的进程?查看 [kubectl attach](/docs/user-guide/kubectl/{{page.version}}/#attach)。 + +使用 docker 命令: + +```shell +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +a9ec34d98787 nginx "nginx -g 'daemon of 8 minutes ago Up 8 minutes 0.0.0.0:80->80/tcp, 443/tcp nginx-app +$ docker attach a9ec34d98787 +... +``` + +使用 kubectl 命令: + +```shell +$ kubectl get pods +NAME READY STATUS RESTARTS AGE +nginx-app-5jyvm 1/1 Running 0 10m +$ kubectl attach -it nginx-app-5jyvm +... +``` + +#### docker exec + +如何在容器中执行命令?查看 [kubectl exec](/docs/user-guide/kubectl/{{page.version}}/#exec)。 + +使用 docker 命令: + +```shell +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +a9ec34d98787 nginx "nginx -g 'daemon of 8 minutes ago Up 8 minutes 0.0.0.0:80->80/tcp, 443/tcp nginx-app +$ docker exec a9ec34d98787 cat /etc/hostname +a9ec34d98787 +``` + +使用 kubectl 命令: + +```shell +$ kubectl get po +NAME READY STATUS RESTARTS AGE +nginx-app-5jyvm 1/1 Running 0 10m +$ kubectl exec nginx-app-5jyvm -- cat /etc/hostname +nginx-app-5jyvm +``` + +执行交互式命令怎么办? + +使用 docker 命令: + +```shell +$ docker exec -ti a9ec34d98787 /bin/sh +# exit +``` + +使用 kubectl 命令: + +```shell +$ kubectl exec -ti nginx-app-5jyvm -- /bin/sh +# exit +``` + +更多信息请查看 [获取运行中容器的 Shell 环境](/docs/tasks/kubectl/get-shell-running-container/)。 + +#### docker logs + +如何查看运行中进程的 stdout/stderr?查看 [kubectl logs](/docs/user-guide/kubectl/{{page.version}}/#logs)。 + +使用 docker 命令: + +```shell +$ docker logs -f a9e +192.168.9.1 - - [14/Jul/2015:01:04:02 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.35.0" "-" +192.168.9.1 - - [14/Jul/2015:01:04:03 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.35.0" "-" +``` + +使用 kubectl 命令: + +```shell +$ kubectl logs -f nginx-app-zibvs +10.240.63.110 - - [14/Jul/2015:01:09:01 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-" +10.240.63.110 - - [14/Jul/2015:01:09:02 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-" +``` + +现在是时候提一下 pod 和容器之间的细微差别了;默认情况下如果 pod 中的进程退出 pod 也不会终止,相反它将会重启该进程。这类似于 docker run 时的 `--restart=always` 选项, 这是主要差别。在 docker 中,进程的每个调用的输出都是被连接起来的,但是对于 kubernetes,每个调用都是分开的。要查看以前在 kubernetes 中执行的输出,请执行以下操作: + +```shell +$ kubectl logs --previous nginx-app-zibvs +10.240.63.110 - - [14/Jul/2015:01:09:01 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-" +10.240.63.110 - - [14/Jul/2015:01:09:02 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-" +``` + +查看 [记录和监控集群活动](/docs/concepts/cluster-administration/logging/) 获取更多信息。 + +#### docker stop 和 docker rm + +如何停止和删除运行中的进程?查看 [kubectl delete](/docs/user-guide/kubectl/{{page.version}}/#delete)。 + +使用 docker 命令: + +```shell +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +a9ec34d98787 nginx "nginx -g 'daemon of 22 hours ago Up 22 hours 0.0.0.0:80->80/tcp, 443/tcp nginx-app +$ docker stop a9ec34d98787 +a9ec34d98787 +$ docker rm a9ec34d98787 +a9ec34d98787 +``` + +使用 kubectl 命令: + +```shell +$ kubectl get deployment nginx-app +NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE +nginx-app 1 1 1 1 2m +$ kubectl get po -l run=nginx-app +NAME READY STATUS RESTARTS AGE +nginx-app-2883164633-aklf7 1/1 Running 0 2m +$ kubectl delete deployment nginx-app +deployment "nginx-app" deleted +$ kubectl get po -l run=nginx-app +# Return nothing +``` + +请注意,我们不直接删除 pod。使用 kubectl 命令,我们要删除拥有该 pod 的 Deployment。如果我们直接删除pod,Deployment 将会重新创建该 pod。 + +#### docker login + +在 kubectl 中没有对 `docker login` 的直接模拟。如果您有兴趣在私有镜像仓库中使用 Kubernetes,请参阅 [使用私有镜像仓库](/docs/concepts/containers/images/#using-a-private-registry)。 + +#### docker version + +如何查看客户端和服务端的版本?查看 [kubectl version](/docs/user-guide/kubectl/{{page.version}}/#version)。 + +使用 docker 命令: + +```shell +$ docker version +Client version: 1.7.0 +Client API version: 1.19 +Go version (client): go1.4.2 +Git commit (client): 0baf609 +OS/Arch (client): linux/amd64 +Server version: 1.7.0 +Server API version: 1.19 +Go version (server): go1.4.2 +Git commit (server): 0baf609 +OS/Arch (server): linux/amd64 +``` + +使用 kubectl 命令: + +```shell +$ kubectl version +Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.9+a3d1dfa6f4335", GitCommit:"9b77fed11a9843ce3780f70dd251e92901c43072", GitTreeState:"dirty", BuildDate:"2017-08-29T20:32:58Z", OpenPaasKubernetesVersion:"v1.03.02", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"} +Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.9+a3d1dfa6f4335", GitCommit:"9b77fed11a9843ce3780f70dd251e92901c43072", GitTreeState:"dirty", BuildDate:"2017-08-29T20:32:58Z", OpenPaasKubernetesVersion:"v1.03.02", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"} +``` + +#### docker info + +如何获取有关环境和配置的各种信息?查看 [kubectl cluster-info](/docs/user-guide/kubectl/{{page.version}}/#cluster-info)。 + +使用 docker 命令: + +```shell +$ docker info +Containers: 40 +Images: 168 +Storage Driver: aufs + Root Dir: /usr/local/google/docker/aufs + Backing Filesystem: extfs + Dirs: 248 + Dirperm1 Supported: false +Execution Driver: native-0.2 +Logging Driver: json-file +Kernel Version: 3.13.0-53-generic +Operating System: Ubuntu 14.04.2 LTS +CPUs: 12 +Total Memory: 31.32 GiB +Name: k8s-is-fun.mtv.corp.google.com +ID: ADUV:GCYR:B3VJ:HMPO:LNPQ:KD5S:YKFQ:76VN:IANZ:7TFV:ZBF4:BYJO +WARNING: No swap limit support +``` + +使用 kubectl 命令: + +```shell +$ kubectl cluster-info +Kubernetes master is running at https://108.59.85.141 +KubeDNS is running at https://108.59.85.141/api/v1/namespaces/kube-system/services/kube-dns/proxy +KubeUI is running at https://108.59.85.141/api/v1/namespaces/kube-system/services/kube-ui/proxy +Grafana is running at https://108.59.85.141/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy +Heapster is running at https://108.59.85.141/api/v1/namespaces/kube-system/services/monitoring-heapster/proxy +InfluxDB is running at https://108.59.85.141/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy +``` diff --git a/cn/docs/user-guide/ingress.yaml b/cn/docs/user-guide/ingress.yaml new file mode 100644 index 0000000000..163c1d5b9d --- /dev/null +++ b/cn/docs/user-guide/ingress.yaml @@ -0,0 +1,9 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: test-ingress +spec: + backend: + serviceName: testsvc + servicePort: 80 + diff --git a/docs/concepts/jobs/job.yaml b/cn/docs/user-guide/job.yaml similarity index 100% rename from docs/concepts/jobs/job.yaml rename to cn/docs/user-guide/job.yaml diff --git a/cn/docs/user-guide/jsonpath.md b/cn/docs/user-guide/jsonpath.md new file mode 100644 index 0000000000..e85041951c --- /dev/null +++ b/cn/docs/user-guide/jsonpath.md @@ -0,0 +1,63 @@ +--- +title: JSONPath 支持 +--- + +JSONPath 模板由 {} 包起来的 JSONPath 表达式组成。 +除了原始的 JSONPath 语法之外,我们还添加了三个函数: + +1. `$` 运算符是可选的,因为表达式默认情况下始终从根对象开始。 +2. 我们可以使用 `""` 来引用 JSONPath 表达式中的文本。 +3. 我们可以使用 `range` 运算符来迭代列表。 + +结果对象使用 String() 函数打印。 + +给定输入: + +```json +{ + "kind": "List", + "items":[ + { + "kind":"None", + "metadata":{"name":"127.0.0.1"}, + "status":{ + "capacity":{"cpu":"4"}, + "addresses":[{"type": "LegacyHostIP", "address":"127.0.0.1"}] + } + }, + { + "kind":"None", + "metadata":{"name":"127.0.0.2"}, + "status":{ + "capacity":{"cpu":"8"}, + "addresses":[ + {"type": "LegacyHostIP", "address":"127.0.0.2"}, + {"type": "another", "address":"127.0.0.3"} + ] + } + } + ], + "users":[ + { + "name": "myself", + "user": {} + }, + { + "name": "e2e", + "user": {"username": "admin", "password": "secret"} + } + ] +} +``` +| 函数 | 描述 | 示例 | 结果 | +| ----------------- | ---------- | ---------------------------------------- | ---------------------------------------- | +| text | 纯文本 | kind is {.kind} | kind is List | +| @ | 当前对象 | {@} | 与输入相同 | +| . or [] | 子运算符 | {.kind} 或者 {['kind']} | List | +| .. | 递归下降 | {..name} | 127.0.0.1 127.0.0.2 myself e2e | +| * | 通配符,获取所有对象 | {.items[*].metadata.name} | [127.0.0.1 127.0.0.2] | +| [start:end :step] | 下标运算符 | {.users[0].name} | myself | +| [,] | 并集运算符 | {.items[*]['metadata.name', 'status.capacity']} | 127.0.0.1 127.0.0.2 map[cpu:4] map[cpu:8] | +| ?() | 过滤 | {.users[?(@.name=="e2e")].user.password} | secret | +| range, end | 迭代列表 | {range .items[*]}[{.metadata.name}, {.status.capacity}] {end} | [127.0.0.1, map[cpu:4]] [127.0.0.2, map[cpu:8]] | +| "" | 引用解释执行字符串 | {range .items[*]}{.metadata.name}{"\t"}{end} | 127.0.0.1 127.0.0.2 | \ No newline at end of file diff --git a/cn/docs/user-guide/multi-pod.yaml b/cn/docs/user-guide/multi-pod.yaml new file mode 100644 index 0000000000..7f7d0a5745 --- /dev/null +++ b/cn/docs/user-guide/multi-pod.yaml @@ -0,0 +1,49 @@ +--- +apiVersion: v1 +kind: Pod +metadata: + labels: + name: redis + redis-sentinel: "true" + role: master + name: redis-master +spec: + containers: + - name: master + image: kubernetes/redis:v1 + env: + - name: MASTER + value: "true" + ports: + - containerPort: 6379 + resources: + limits: + cpu: "0.5" + volumeMounts: + - mountPath: /redis-master-data + name: data + - name: sentinel + image: kubernetes/redis:v1 + env: + - name: SENTINEL + value: "true" + ports: + - containerPort: 26379 + volumes: + - name: data + emptyDir: {} +--- +apiVersion: v1 +kind: Pod +metadata: + labels: + name: redis-proxy + role: proxy + name: redis-proxy +spec: + containers: + - name: proxy + image: kubernetes/redis-proxy:v1 + ports: + - containerPort: 6379 + name: api diff --git a/cn/docs/user-guide/new-nginx-deployment.yaml b/cn/docs/user-guide/new-nginx-deployment.yaml new file mode 100644 index 0000000000..67bb9fd10f --- /dev/null +++ b/cn/docs/user-guide/new-nginx-deployment.yaml @@ -0,0 +1,16 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.9.1 + ports: + - containerPort: 80 diff --git a/cn/docs/user-guide/nginx-app.yaml b/cn/docs/user-guide/nginx-app.yaml new file mode 100644 index 0000000000..bc7e095646 --- /dev/null +++ b/cn/docs/user-guide/nginx-app.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Service +metadata: + name: my-nginx-svc + labels: + app: nginx +spec: + type: LoadBalancer + ports: + - port: 80 + selector: + app: nginx +--- +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: my-nginx +spec: + replicas: 3 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.7.9 + ports: + - containerPort: 80 diff --git a/docs/concepts/abstractions/nginx-deployment.yaml b/cn/docs/user-guide/nginx-deployment.yaml similarity index 100% rename from docs/concepts/abstractions/nginx-deployment.yaml rename to cn/docs/user-guide/nginx-deployment.yaml diff --git a/cn/docs/user-guide/nginx-init-containers.yaml b/cn/docs/user-guide/nginx-init-containers.yaml new file mode 100644 index 0000000000..fdfde0619a --- /dev/null +++ b/cn/docs/user-guide/nginx-init-containers.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Pod +metadata: + name: nginx +spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 + volumeMounts: + - name: workdir + mountPath: /usr/share/nginx/html + # These containers are run during pod initialization + initContainers: + - name: install + image: busybox + command: + - wget + - "-O" + - "/work-dir/index.html" + - http://kubernetes.io/index.html + volumeMounts: + - name: workdir + mountPath: "/work-dir" + dnsPolicy: Default + volumes: + - name: workdir + emptyDir: {} diff --git a/cn/docs/user-guide/nginx-lifecycle-deployment.yaml b/cn/docs/user-guide/nginx-lifecycle-deployment.yaml new file mode 100644 index 0000000000..52bbbe23d7 --- /dev/null +++ b/cn/docs/user-guide/nginx-lifecycle-deployment.yaml @@ -0,0 +1,20 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: nginx +spec: + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 + lifecycle: + preStop: + exec: + # SIGTERM triggers a quick exit; gracefully terminate instead + command: ["/usr/sbin/nginx","-s","quit"] diff --git a/cn/docs/user-guide/nginx-probe-deployment.yaml b/cn/docs/user-guide/nginx-probe-deployment.yaml new file mode 100644 index 0000000000..d1d849efef --- /dev/null +++ b/cn/docs/user-guide/nginx-probe-deployment.yaml @@ -0,0 +1,22 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: nginx +spec: + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 + livenessProbe: + httpGet: + # Path to probe; should be cheap, but representative of typical behavior + path: /index.html + port: 80 + initialDelaySeconds: 30 + timeoutSeconds: 1 diff --git a/cn/docs/user-guide/nginx-secure-app.yaml b/cn/docs/user-guide/nginx-secure-app.yaml new file mode 100644 index 0000000000..9e4a16791e --- /dev/null +++ b/cn/docs/user-guide/nginx-secure-app.yaml @@ -0,0 +1,43 @@ +apiVersion: v1 +kind: Service +metadata: + name: my-nginx + labels: + run: my-nginx +spec: + type: NodePort + ports: + - port: 8080 + targetPort: 80 + protocol: TCP + name: http + - port: 443 + protocol: TCP + name: https + selector: + run: my-nginx +--- +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: my-nginx +spec: + replicas: 1 + template: + metadata: + labels: + run: my-nginx + spec: + volumes: + - name: secret-volume + secret: + secretName: nginxsecret + containers: + - name: nginxhttps + image: bprashanth/nginxhttps:1.0 + ports: + - containerPort: 443 + - containerPort: 80 + volumeMounts: + - mountPath: /etc/nginx/ssl + name: secret-volume diff --git a/cn/docs/user-guide/nginx-svc.yaml b/cn/docs/user-guide/nginx-svc.yaml new file mode 100644 index 0000000000..12fcd5d0bf --- /dev/null +++ b/cn/docs/user-guide/nginx-svc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: my-nginx + labels: + run: my-nginx +spec: + ports: + - port: 80 + protocol: TCP + selector: + run: my-nginx diff --git a/cn/docs/user-guide/pod-w-message.yaml b/cn/docs/user-guide/pod-w-message.yaml new file mode 100644 index 0000000000..e7fdc7d3be --- /dev/null +++ b/cn/docs/user-guide/pod-w-message.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Pod +metadata: + name: pod-w-message +spec: + containers: + - name: messager + image: "ubuntu:14.04" + command: ["/bin/sh","-c"] + args: ["sleep 60 && /bin/echo Sleep expired > /dev/termination-log"] diff --git a/cn/docs/user-guide/pod.yaml b/cn/docs/user-guide/pod.yaml new file mode 100644 index 0000000000..7053af0be4 --- /dev/null +++ b/cn/docs/user-guide/pod.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Pod +metadata: + name: nginx + labels: + app: nginx +spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 diff --git a/cn/docs/user-guide/redis-deployment.yaml b/cn/docs/user-guide/redis-deployment.yaml new file mode 100644 index 0000000000..eacaa6feea --- /dev/null +++ b/cn/docs/user-guide/redis-deployment.yaml @@ -0,0 +1,24 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: redis +spec: + template: + metadata: + labels: + app: redis + tier: backend + spec: + # Provision a fresh volume for the pod + volumes: + - name: data + emptyDir: {} + containers: + - name: redis + image: kubernetes/redis:v1 + ports: + - containerPort: 6379 + # Mount the volume into the pod + volumeMounts: + - mountPath: /redis-master-data + name: data # must match the name of the volume, above diff --git a/cn/docs/user-guide/redis-resource-deployment.yaml b/cn/docs/user-guide/redis-resource-deployment.yaml new file mode 100644 index 0000000000..f597f9bb74 --- /dev/null +++ b/cn/docs/user-guide/redis-resource-deployment.yaml @@ -0,0 +1,27 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: redis +spec: + template: + metadata: + labels: + app: redis + tier: backend + spec: + containers: + - name: redis + image: kubernetes/redis:v1 + ports: + - containerPort: 80 + resources: + limits: + # cpu units are cores + cpu: 500m + # memory units are bytes + memory: 64Mi + requests: + # cpu units are cores + cpu: 500m + # memory units are bytes + memory: 64Mi diff --git a/cn/docs/user-guide/redis-secret-deployment.yaml b/cn/docs/user-guide/redis-secret-deployment.yaml new file mode 100644 index 0000000000..a7201802ec --- /dev/null +++ b/cn/docs/user-guide/redis-secret-deployment.yaml @@ -0,0 +1,27 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: redis +spec: + template: + metadata: + labels: + app: redis + tier: backend + spec: + volumes: + - name: data + emptyDir: {} + - name: supersecret # The "mysecret" secret populates this "supersecret" volume. + secret: + secretName: mysecret + containers: + - name: redis + image: kubernetes/redis:v1 + ports: + - containerPort: 6379 + volumeMounts: + - mountPath: /redis-master-data + name: data + - mountPath: /var/run/secrets/super # Mount the "supersecret" volume into the pod. + name: supersecret diff --git a/cn/docs/user-guide/run-my-nginx.yaml b/cn/docs/user-guide/run-my-nginx.yaml new file mode 100644 index 0000000000..b3d8e336cd --- /dev/null +++ b/cn/docs/user-guide/run-my-nginx.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: my-nginx +spec: + replicas: 2 + template: + metadata: + labels: + run: my-nginx + spec: + containers: + - name: my-nginx + image: nginx + ports: + - containerPort: 80 + diff --git a/community/index.html b/community/index.html index 01bdb29362..e78541e9e4 100644 --- a/community/index.html +++ b/community/index.html @@ -7,7 +7,7 @@ cid: community

Community

- +KubeConNA
@@ -17,10 +17,10 @@ cid: community community meeting takes place via video conference to discuss the state of affairs, get a calendar invite to participate.

-

You can also join Kubernauts all around the world through our +

You can also join Kubernetes all around the world through our Kubernetes Meetup Community and the Kubernetes Cloud Native Meetup Community.

-
+

Special Interest Groups (SIGs)

Have a special interest in how Kubernetes works with another technology? See our ever growing diff --git a/css/custom-jekyll/tags.css b/css/custom-jekyll/tags.css new file mode 100644 index 0000000000..c9b409091c --- /dev/null +++ b/css/custom-jekyll/tags.css @@ -0,0 +1,56 @@ +.no-underline { + text-decoration: none !important; +} + +.hide { + display: none !important; +} + +/* Tooltip container */ +.glossary-tooltip { + position: relative; + display: inline-block; + border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ + color: black; + text-decoration: none !important; +} + +/* Tooltip text */ +.glossary-tooltip .tooltip-text { + visibility: hidden; + width: 300px; + background-color: #555; + color: #fff; + text-align: center; + padding: 5px 8px; + border-radius: 6px; + + /* Position the tooltip text */ + position: absolute; + z-index: 1; + bottom: 125%; + left: 50%; + margin-left: -150px; + + /* Fade in tooltip */ + opacity: 0; + transition: opacity 0.3s; +} + +/* Tooltip arrow */ +.glossary-tooltip .tooltip-text::after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: #555 transparent transparent transparent; +} + +/* Show the tooltip text when you mouse over the tooltip container */ +.glossary-tooltip:hover .tooltip-text { + visibility: visible; + opacity: 1; +} diff --git a/css/glossary.css b/css/glossary.css new file mode 100644 index 0000000000..2146a418e3 --- /dev/null +++ b/css/glossary.css @@ -0,0 +1,56 @@ +.preview-text p { + display: inline; +} + +.permalink { + background-image: url(../images/link.png); + background-repeat: no-repeat; + display: inline-block; + color: transparent; + width: 20px; + margin-left: 10px; +} + +.term-anchor { + display: block; + position: relative; + top: -90px; + visibility: hidden; +} + +.tag-option { + padding: 5px; + margin: 10px; + float:left; +} + +.canonical-tag { + color: white; + background-color: #b7c8e8; +} + +.canonical-tag a { + color: inherit; + text-decoration: none !important; +} + +.active-tag { + background-color: #3371e3; +} + +.invisible { + visibility: hidden; +} + +#tag-container { + float: left; + border-top: 1px solid #8c8c8c; + border-bottom: 1px solid #8c8c8c; + padding: 7px 0px; + margin: 25px 0px; +} + +.tag-description { + text-align: center; + margin: 5px 0px; +} diff --git a/css/style_blablacar.css b/css/style_blablacar.css new file mode 100755 index 0000000000..aea7c4a44b --- /dev/null +++ b/css/style_blablacar.css @@ -0,0 +1,468 @@ +#caseStudyTitle { + margin-top: 1em !important; + font-family:"Roboto", sans-serif; +} + +p { + font-family:"Roboto", sans-serif; + padding:5%; +} + +.header_logo { + + width:24%; + margin-bottom:-0.5%; + margin-left:10px; +} + +a { + text-decoration:none; + color:#3366ff; +} + +body { + margin:0; + +} + +h1 { + font-family:"Roboto", sans-serif; + font-weight:bold; + letter-spacing:0.025em; + font-size:42px; + padding-bottom:0px; +} + +.subhead { + font-size:26px; + font-weight:100; + line-height:40px; + padding-bottom:1%; + padding-top:0.5%; + +} + +.banner1 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:12%; + padding-bottom:0.5%; + padding-left:10%; + font-size:34px; + background: url('/images/CaseStudy_blablacar_banner1.jpg'); + background-size:100% auto; + background-repeat:no-repeat; +} + +.banner2 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:4%; + padding-bottom:4%; + width:100%; + font-size:24px; + letter-spacing:0.03em; + line-height:34px; + float:left; + background-size:100% auto; + background-color:#666666; + background-repeat:repeat; + +} + +.banner3 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-left:5%; + padding-right:5%; + padding-top:4%; + padding-bottom:4%; + font-size:24px; + letter-spacing:0.03em; + line-height:34px; + float:left; + background: url('/images/CaseStudy_blablacar_banner3.jpg'); + background-size:100% auto; +} + +.banner4 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:5%; + padding-bottom:5%; + font-size:25px; + letter-spacing:0.03em; + line-height:34px; + float:left; + background: url('/images/CaseStudy_blablacar_banner4.jpg'); + background-size:100% auto; +} + +.banner5 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:3%; + padding-bottom:3%; + font-size:24px; + letter-spacing:0.03em; + line-height:34px; + float:left; + background-size:100% auto; + background-color:#666666; + background-repeat:no-repeat; +} + +.banner2text { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + width:65%; + padding-left:18%; + float:left; + text-align:center; +} + +.banner3text { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + width:75%; + padding-left:13%; + text-align:center; +} + +.banner4text { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + width:65%; + padding-left:17%; + text-align:center; +} + +.banner5text { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + width:68%; + padding-left:16%; + float:left; + text-align:center; +} + + +h2 { + font-family:"Roboto", sans-serif; + font-weight:300; + font-size:24px; + line-height:34px; + color:#3366ff; +} + +.quote { + font-family:"Roboto", sans-serif; + font-weight:300; + font-size:22px; + line-height:32px; + color:#3366ff; +} + +.details { + font-family:"Roboto", sans-serif; + font-weight:300; + font-size:18px; + color:#3366ff; + letter-spacing:0.03em; + padding-bottom:1.5%; + padding-top:2%; + padding-left:10%; +} + + +hr { + border-bottom:0px solid; + width:100%; + opacity:0.5; + color:#aaaaaa; + height:1px; +} + +.col1 { + width: 45%; + padding-right:8%; + float:left; + font-family:"Roboto", sans-serif; + font-weight:100; + color:#606060; + line-height:20px; + letter-spacing:0.03em; + font-size:14px; + +} + +.col2 { + width: 38%; + font-family:"Roboto", sans-serif; + font-weight:300; + float:left; + line-height:20px; + color:#606060; + letter-spacing:0.03em; + font-size:14px; + +} + +.fullcol { + width:77%; + margin-left:11%; + margin-right:10%; + margin-top:4%; + margin-bottom:4%; + font-family:"Roboto", sans-serif; + font-weight:300; + float:left; + line-height:22px; + color:#606060; + letter-spacing:0.03em; + font-size:14px; +} + +.cols { + width:80%; + margin-left:10%; + margin-top:1%; + margin-bottom:4%; + font-family:"Roboto", sans-serif; + font-weight:300; + float:left; + +} + +h4 { + font-family:"Roboto", sans-serif; + font-weight:400; + letter-spacing:0.9; + font-size:20px; + padding-bottom:0px; +} + + +@media screen and (max-width: 910px){ + +h1 { + font-family:"Roboto", sans-serif; + font-weight:bold; + line-height:36px; + letter-spacing:0.03em; + font-size:30px !important; + padding-bottom:0px; + width:80%; +} + +.header_logo { + width:35%; + margin-bottom:-.5%; + magin-left:10px; +} + +.subhead { + font-size:18px; + font-weight:100; + line-height:27px; +} + +.details { + font-family:"Roboto", sans-serif; + font-weight:300; + font-size:16px; + color:#3366ff; + letter-spacing:0.03em; + padding-bottom:2%; + line-height:28px; + padding-top:4%; + padding-left:10%; +} + +.logo { + width:8%; +} + +.col1 { + width: 95%; + padding-right:8%; + float:left; + font-family:"Roboto", sans-serif; + font-weight:300; + color:#606060; + line-height:20px; + letter-spacing:0.03em; + font-size:14px; +} + +.col2 { + width: 95%; + padding-top:2%; + padding-bottom:5%; + font-family:"Roboto", sans-serif; + font-weight:300; + float:left; + line-height:20px; + color:#606060; + letter-spacing:0.03em; + font-size:14px; +} + +.banner1 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:15%; + padding-bottom:2%; + padding-left:10%; + font-size:18px; + background: url('/images/CaseStudy_blablacar_banner1.jpg'); + background-size:100% auto; +} + +.banner2 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:4%; + padding-bottom:4%; + font-size:18px; + letter-spacing:0.03em; + line-height:24px; + width:100%; + float:left; + background:none; + background-color:#666666; +} + +.banner3 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:5%; + padding-bottom:5%; + font-size:16px; + letter-spacing:0.03em; + line-height:23px; + width:90%; + float:left; + background: url('/images/CaseStudy_blablacar_banner3.jpg'); +} + +.banner4 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:4%; + padding-bottom:4%; + font-size:18px; + letter-spacing:0.03em; + line-height:24px; + width:100%; + float:left; + background: url('/images/CaseStudy_blablacar_banner4.jpg'); +} + +.banner5 { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + padding-top:4%; + padding-bottom:4%; + font-size:16px; + letter-spacing:0.03em; + line-height:23px; + width:100%; + float:left; + background:none; + background-color:#666666; +} + +.banner2text { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + width:90%; + padding-left:5%; + padding-bottom:1%; + padding-top:1%; + float:left; + text-align:center; + color:#ffffff; +} + +.banner3text { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + width:90%; + padding-left:5%; + padding-top:5%; + padding-bottom:5%; + text-align:center; +} + +.banner4text { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + width:90%; + padding-left:5%; + padding-top:3%; + padding-bottom:3%; + text-align:center; +} + +.banner5text { + font-family:"Roboto", sans-serif; + font-weight:300; + color:#ffffff; + width:90%; + padding-left:5%; + padding-top:3%; + padding-bottom:3%; + text-align:center; +} + +.fullcol { + margin-top:6%; + margin-bottom:8%; +} + +h2 { + line-height:26px; + font-size:18px; +} + +.quote { + font-size:18px; + line-height:24px; +} + +.logo { + width:35%; +} + +@media screen and (max-width: 580px){ + + .header_logo { + width:60%; + margin-bottom:1%; + margin-top:2%; + + } + + .banner1 { + background: url('/images/CaseStudy_blablacar_banner1_mobile.jpg'); + + +} diff --git a/docs/admin/accessing-the-api.md b/docs/admin/accessing-the-api.md index a844b0f5fd..e32a3bb28a 100644 --- a/docs/admin/accessing-the-api.md +++ b/docs/admin/accessing-the-api.md @@ -149,7 +149,7 @@ By default the Kubernetes API server serves HTTP on 2 ports: - default IP is first non-localhost network interface, change with `--bind-address` flag. - request handled by authentication and authorization modules. - request handled by admission control module(s). - - authentication and authorisation modules run. + - authentication and authorization modules run. When the cluster is created by `kube-up.sh`, on Google Compute Engine (GCE), and on several other cloud providers, the API server serves on port 443. On diff --git a/docs/admin/admission-controllers.md b/docs/admin/admission-controllers.md index 05229844ad..cdf99f30f9 100644 --- a/docs/admin/admission-controllers.md +++ b/docs/admin/admission-controllers.md @@ -78,8 +78,9 @@ storage classes and how to mark a storage class as default. This plug-in sets the default forgiveness toleration for pods to tolerate the taints `notready:NoExecute` and `unreachable:NoExecute` for 5 minutes, -if the pods don't already have toleration for taints `notready:NoExecute` or -`unreachable:NoExecute`. +if the pods don't already have toleration for taints +`node.kubernetes.io/not-ready:NoExecute` or +`node.alpha.kubernetes.io/unreachable:NoExecute`. ### DenyExecOnPrivileged (deprecated) @@ -100,6 +101,42 @@ If your cluster supports containers that run with escalated privileges, and you restrict the ability of end-users to exec commands in those containers, we strongly encourage enabling this plug-in. +### EventRateLimit (alpha) + +This plug-in is introduced in v1.9 to mitigate the problem where the API server gets flooded by +event requests. The cluster admin can specify event rate limits by: + + * Ensuring that `eventratelimit.admission.k8s.io/v1alpha1=true` is included in the + `--runtime-config` flag for the API server; + * Enabling the `EventRateLimit` admission controller; + * Including a `EventRateLimit` configuration in the file provided to the API + server's command line flag `--admission-control-config-file`. + +There are four types of limits that can be specified in the configuration: + + * `Server`: All event requests received by the API server share a single bucket. + * `Namespace`: Each namespace has a dedicated bucket. + * `User`: Each user is allocated a bucket. + * `SourceAndObject`: A bucket is assigned by each combination of source and + involved object of the event. + +Below is a sample snippet for such a configuration: + +```yaml +EventRateLimit: + limits: + - type: Namespace + qps: 50 + burst: 100 + cacheSize: 2000 + - type: User + qps: 10 + burst: 50 +``` + +See the [EventRateLimit proposal](https://git.k8s.io/community/contributors/design-proposals/api-machinery/admission_control_event_rate_limit.md) +for more details. + ### GenericAdmissionWebhook (alpha) This plug-in is related to the [Dynamic Admission Control](/docs/admin/extensible-admission-controllers) @@ -343,7 +380,7 @@ After enabling the `ExpandPersistentVolumes` feature gate, enabling the `Persist plug-in is recommended, too. This plug-in prevents resizing of all claims by default unless a claim's `StorageClass` explicitly enables resizing by setting `allowVolumeExpansion` to `true`. -For example: all `PersistnetVolumeClaim`s created from the following `StorageClass` support volume expansion: +For example: all `PersistentVolumeClaim`s created from the following `StorageClass` support volume expansion: ```yaml kind: StorageClass @@ -364,7 +401,8 @@ For more information about persistent volume claims, see ["PersistentVolumeClaim ### PodPreset This plug-in injects a pod with the fields specified in a matching PodPreset. -See also [Inject Information into Pods Using a PodPreset](/docs/tasks/inject-data-application/podpreset) +See also [PodPreset concept](/docs/concepts/workloads/pods/podpreset/) and +[Inject Information into Pods Using a PodPreset](/docs/tasks/inject-data-application/podpreset) for more information. ### PodSecurityPolicy @@ -396,6 +434,10 @@ Tolerations to a namespace are assigned via the `scheduler.alpha.kubernetes.io/tolerationsWhitelist` annotation keys. +### Priority + +The priority admission controller uses the `priorityClassName` field and populates the integer value of the priority. If the priority class is not found, the Pod is rejected. + ### ResourceQuota This plug-in will observe the incoming request and ensure that it does not violate any of the constraints diff --git a/docs/admin/authentication.md b/docs/admin/authentication.md index 10f3ce64dd..95604f4e79 100644 --- a/docs/admin/authentication.md +++ b/docs/admin/authentication.md @@ -82,7 +82,7 @@ openssl req -new -key jbeda.pem -out jbeda-csr.pem -subj "/CN=jbeda/O=app1/O=app This would create a CSR for the username "jbeda", belonging to two groups, "app1" and "app2". -See [APPENDIX](#appendix) for how to generate a client cert. +See [Managing Certificates](/docs/concepts/cluster-administration/certificates/) for how to generate a client cert. ### Static Token File @@ -185,7 +185,7 @@ talk to the API server. Accounts may be explicitly associated with pods using th NOTE: `serviceAccountName` is usually omitted because this is done automatically. ``` -apiVersion: apps/v1beta1 +apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment @@ -294,19 +294,11 @@ To enable the plugin, configure the following flags on the API server: | `--oidc-issuer-url` | URL of the provider which allows the API server to discover public signing keys. Only URLs which use the `https://` scheme are accepted. This is typically the provider's discovery URL without a path, for example "https://accounts.google.com" or "https://login.salesforce.com". This URL should point to the level below .well-known/openid-configuration | If the discovery URL is `https://accounts.google.com/.well-known/openid-configuration`, the value should be `https://accounts.google.com` | Yes | | `--oidc-client-id` | A client id that all tokens must be issued for. | kubernetes | Yes | | `--oidc-username-claim` | JWT claim to use as the user name. By default `sub`, which is expected to be a unique identifier of the end user. Admins can choose other claims, such as `email` or `name`, depending on their provider. However, claims other than `email` will be prefixed with the issuer URL to prevent naming clashes with other plugins. | sub | No | +| `--oidc-username-prefix` | Prefix prepended to username claims to prevent clashes with existing names (such as `system:` users). For example, the value `oidc:` will create usernames like `oidc:jane.doe`. If this flag isn't provided and `--oidc-user-claim` is a value other than `email` the prefix defaults to `( Issuer URL )#` where `( Issuer URL )` is the value of `--oidc-issuer-url`. The value `-` can be used to disable all prefixing. | `oidc:` | No | | `--oidc-groups-claim` | JWT claim to use as the user's group. If the claim is present it must be an array of strings. | groups | No | +| `--oidc-groups-prefix` | Prefix prepended to group claims to prevent clashes with existing names (such as `system:` groups). For example, the value `oidc:` will create group names like `oidc:engineering` and `oidc:infra`. | `oidc:` | No | | `--oidc-ca-file` | The path to the certificate for the CA that signed your identity provider's web certificate. Defaults to the host's root CAs. | `/etc/kubernetes/ssl/kc-ca.pem` | No | -If a claim other than `email` is chosen for `--oidc-username-claim`, the value -will be prefixed with the `--oidc-issuer-url` to prevent clashes with existing -Kubernetes names (such as the `system:` users). For example, if the provider -URL is `https://accounts.google.com` and the username claim maps to `jane`, the -plugin will authenticate the user as: - -``` -https://accounts.google.com#jane -``` - Importantly, the API server is not an OAuth2 client, rather it can only be configured to trust a single issuer. This allows the use of public providers, such as Google, without trusting credentials issued to third parties. Admins who @@ -337,7 +329,9 @@ Setup instructions for specific systems: ##### Option 1 - OIDC Authenticator -The first option is to use the `oidc` authenticator. This authenticator takes your `id_token`, `refresh_token` and your OIDC `client_secret` and will refresh your token automatically. Once you have authenticated to your identity provider: +The first option is to use the kubectl `oidc` authenticator, which sets the `id_token` as a bearer token for all requests and refreshes the token once it expires. After you've logged into your provider, use kubectl to add your `id_token`, `refresh_token`, `client_id`, and `client_secret` to configure the plugin. + +Providers that don't return an `id_token` as part of their refresh token response (e.g. [Okta](https://developer.okta.com/docs/api/resources/oidc.html#response-parameters-4)) aren't supported by this plugin and should use "Option 2" below. ```bash kubectl config set-credentials USER_NAME \ @@ -347,8 +341,7 @@ kubectl config set-credentials USER_NAME \ --auth-provider-arg=client-secret=( your client secret ) \ --auth-provider-arg=refresh-token=( your refresh token ) \ --auth-provider-arg=idp-certificate-authority=( path to your ca certificate ) \ - --auth-provider-arg=id-token=( your id_token ) \ - --auth-provider-arg=extra-scopes=( comma separated list of scopes to add to "openid email profile", optional ) + --auth-provider-arg=id-token=( your id_token ) ``` As an example, running the below command after authenticating to your identity provider: @@ -361,7 +354,6 @@ kubectl config set-credentials mmosley \ --auth-provider-arg=client-secret=1db158f6-177d-4d9c-8a8b-d36869918ec5 \ --auth-provider-arg=refresh-token=q1bKLFOyUiosTfawzA93TzZIDzH2TNa2SMm0zEiPKTUwME6BkEo6Sql5yUWVBSWpKUGphaWpxSVAfekBOZbBhaEW+VlFUeVRGcluyVF5JT4+haZmPsluFoFu5XkpXk5BXqHega4GAXlF+ma+vmYpFcHe5eZR+slBFpZKtQA= \ --auth-provider-arg=idp-certificate-authority=/root/ca.pem \ - --auth-provider-arg=extra-scopes=groups \ --auth-provider-arg=id-token=eyJraWQiOiJDTj1vaWRjaWRwLnRyZW1vbG8ubGFuLCBPVT1EZW1vLCBPPVRybWVvbG8gU2VjdXJpdHksIEw9QXJsaW5ndG9uLCBTVD1WaXJnaW5pYSwgQz1VUy1DTj1rdWJlLWNhLTEyMDIxNDc5MjEwMzYwNzMyMTUyIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL29pZGNpZHAudHJlbW9sby5sYW46ODQ0My9hdXRoL2lkcC9PaWRjSWRQIiwiYXVkIjoia3ViZXJuZXRlcyIsImV4cCI6MTQ4MzU0OTUxMSwianRpIjoiMm96US15TXdFcHV4WDlHZUhQdy1hZyIsImlhdCI6MTQ4MzU0OTQ1MSwibmJmIjoxNDgzNTQ5MzMxLCJzdWIiOiI0YWViMzdiYS1iNjQ1LTQ4ZmQtYWIzMC0xYTAxZWU0MWUyMTgifQ.w6p4J_6qQ1HzTG9nrEOrubxIMb9K5hzcMPxc9IxPx2K4xO9l-oFiUw93daH3m5pluP6K7eOE6txBuRVfEcpJSwlelsOsW8gb8VJcnzMS9EnZpeA0tW_p-mnkFc3VcfyXuhe5R3G7aa5d8uHv70yJ9Y3-UhjiN9EhpMdfPAoEB9fYKKkJRzF7utTTIPGrSaSU6d2pcpfYKaxIwePzEkT4DfcQthoZdy9ucNvvLoi1DIC-UocFD8HLs8LYKEqSxQvOcvnThbObJ9af71EwmuE21fO5KzMW20KtAeget1gnldOosPtz1G5EwvaQ401-RPQzPGMVBld0_zMCAwZttJ4knw ``` @@ -375,7 +367,6 @@ users: config: client-id: kubernetes client-secret: 1db158f6-177d-4d9c-8a8b-d36869918ec5 - extra-scopes: groups id-token: eyJraWQiOiJDTj1vaWRjaWRwLnRyZW1vbG8ubGFuLCBPVT1EZW1vLCBPPVRybWVvbG8gU2VjdXJpdHksIEw9QXJsaW5ndG9uLCBTVD1WaXJnaW5pYSwgQz1VUy1DTj1rdWJlLWNhLTEyMDIxNDc5MjEwMzYwNzMyMTUyIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL29pZGNpZHAudHJlbW9sby5sYW46ODQ0My9hdXRoL2lkcC9PaWRjSWRQIiwiYXVkIjoia3ViZXJuZXRlcyIsImV4cCI6MTQ4MzU0OTUxMSwianRpIjoiMm96US15TXdFcHV4WDlHZUhQdy1hZyIsImlhdCI6MTQ4MzU0OTQ1MSwibmJmIjoxNDgzNTQ5MzMxLCJzdWIiOiI0YWViMzdiYS1iNjQ1LTQ4ZmQtYWIzMC0xYTAxZWU0MWUyMTgifQ.w6p4J_6qQ1HzTG9nrEOrubxIMb9K5hzcMPxc9IxPx2K4xO9l-oFiUw93daH3m5pluP6K7eOE6txBuRVfEcpJSwlelsOsW8gb8VJcnzMS9EnZpeA0tW_p-mnkFc3VcfyXuhe5R3G7aa5d8uHv70yJ9Y3-UhjiN9EhpMdfPAoEB9fYKKkJRzF7utTTIPGrSaSU6d2pcpfYKaxIwePzEkT4DfcQthoZdy9ucNvvLoi1DIC-UocFD8HLs8LYKEqSxQvOcvnThbObJ9af71EwmuE21fO5KzMW20KtAeget1gnldOosPtz1G5EwvaQ401-RPQzPGMVBld0_zMCAwZttJ4knw idp-certificate-authority: /root/ca.pem idp-issuer-url: https://oidcidp.tremolo.lan:8443/auth/idp/OidcIdP @@ -507,6 +498,7 @@ It is designed for use in combination with an authenticating proxy, which sets t * `--requestheader-extra-headers-prefix` 1.6+. Optional, case-insensitive. "X-Remote-Extra-" is suggested. Header prefixes to look for to determine extra information about the user (typically used by the configured authorization plugin). Any headers beginning with any of the specified prefixes have the prefix removed, the remainder of the header name becomes the extra key, and the header value is the extra value. For example, with this configuration: + ``` --requestheader-username-headers=X-Remote-User --requestheader-group-headers=X-Remote-Group @@ -514,6 +506,7 @@ For example, with this configuration: ``` this request: + ``` GET / HTTP/1.1 X-Remote-User: fido @@ -524,6 +517,7 @@ X-Remote-Extra-Scopes: profile ``` would result in this user info: + ```yaml name: fido groups: @@ -578,7 +572,7 @@ a request providing an invalid bearer token would receive a `401 Unauthorized` e A request providing no bearer token would be treated as an anonymous request. In 1.5.1-1.5.x, anonymous access is disabled by default, and can be enabled by -passing the `--anonymous-auth=false` option to the API server. +passing the `--anonymous-auth=true` option to the API server. In 1.6+, anonymous access is enabled by default if an authorization mode other than `AlwaysAllow` is used, and can be disabled by passing the `--anonymous-auth=false` option to the API server. @@ -690,81 +684,3 @@ rules: verbs: ["impersonate"] resourceNames: ["view", "development"] ``` - -## APPENDIX - -### Creating Certificates - -When using client certificate authentication, you can generate certificates -using an existing deployment script or manually through `easyrsa` or `openssl.` - -#### Using an Existing Deployment Script - -**Using an existing deployment script** is implemented at -`cluster/saltbase/salt/generate-cert/make-ca-cert.sh`. - -Execute this script with two parameters. The first is the IP address -of API server. The second is a list of subject alternate names in the form `IP: or DNS:`. - -The script will generate three files: `ca.crt`, `server.crt`, and `server.key`. - -Finally, add the following parameters into API server start parameters: - -- `--client-ca-file=/srv/kubernetes/ca.crt` -- `--tls-cert-file=/srv/kubernetes/server.crt` -- `--tls-private-key-file=/srv/kubernetes/server.key` - -#### easyrsa - -**easyrsa** can be used to manually generate certificates for your cluster. - -1. Download, unpack, and initialize the patched version of easyrsa3. - - curl -L -O https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz - tar xzf easy-rsa.tar.gz - cd easy-rsa-master/easyrsa3 - ./easyrsa init-pki -1. Generate a CA. (`--batch` set automatic mode. `--req-cn` default CN to use.) - - ./easyrsa --batch "--req-cn=${MASTER_IP}@`date +%s`" build-ca nopass -1. Generate server certificate and key. - (build-server-full [filename]: Generate a keypair and sign locally for a client or server.) - - ./easyrsa --subject-alt-name="IP:${MASTER_IP}" build-server-full server nopass -1. Copy `pki/ca.crt`, `pki/issued/server.crt`, and `pki/private/server.key` to your directory. -1. Fill in and add the following parameters into the API server start parameters: - - --client-ca-file=/yourdirectory/ca.crt - --tls-cert-file=/yourdirectory/server.crt - --tls-private-key-file=/yourdirectory/server.key - -#### openssl - -**openssl** can also be used to manually generate certificates for your cluster. - -1. Generate a ca.key with 2048bit: - - openssl genrsa -out ca.key 2048 -1. According to the ca.key generate a ca.crt (use -days to set the certificate effective time): - - openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt -1. Generate a server.key with 2048bit: - - openssl genrsa -out server.key 2048 -1. According to the server.key generate a server.csr: - - openssl req -new -key server.key -subj "/CN=${MASTER_IP}" -out server.csr -1. According to the ca.key, ca.crt and server.csr generate the server.crt: - - openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -1. View the certificate. - - openssl x509 -noout -text -in ./server.crt - -Finally, do not forget to fill out and add the same parameters into the API server start parameters. - -#### Certificates API - -You can use the `certificates.k8s.io` API to provision -x509 certificates to use for authentication as documented -[here](/docs/tasks/tls/managing-tls-in-a-cluster). diff --git a/docs/admin/authorization/index.md b/docs/admin/authorization/index.md index 54ccdc6350..12f54a486e 100644 --- a/docs/admin/authorization/index.md +++ b/docs/admin/authorization/index.md @@ -53,7 +53,7 @@ DELETE | delete (for individual resources), deletecollection (for collections Kubernetes sometimes checks authorization for additional permissions using specialized verbs. For example: * [PodSecurityPolicy](/docs/concepts/policy/pod-security-policy/) checks for authorization of the `use` verb on `podsecuritypolicies` resources in the `extensions` API group. -* [RBAC](/docs/admin/authorization/rbac/#privilege-escalation-prevention-and-bootstrapping) checks for authorization +* [RBAC](/docs/admin/authorization/rbac/#privilege-escalation-prevention-and-bootstrapping) checks for authorization of the `bind` verb on `roles` and `clusterroles` resources in the `rbac.authorization.k8s.io` API group. * [Authentication](/docs/admin/authentication/) layer checks for authorization of the `impersonate` verb on `users`, `groups`, and `serviceaccounts` in the core API group, and the `userextras` in the `authentication.k8s.io` API group. @@ -61,8 +61,8 @@ of the `bind` verb on `roles` and `clusterroles` resources in the `rbac.authoriz * **Node** - A special-purpose authorizer that grants permissions to kubelets based on the pods they are scheduled to run. To learn more about using the Node authorization mode, see [Node Authorization](/docs/admin/authorization/node/). * **ABAC** - Attribute-based access control (ABAC) defines an access control paradigm whereby access rights are granted to users through the use of policies which combine attributes together. The policies can use any type of attributes (user attributes, resource attributes, object, environment attributes etc). To learn more about using the ABAC mode, see [ABAC Mode](/docs/admin/authorization/abac/). * **RBAC** - Role-based access control (RBAC) is a method of regulating access to computer or network resources based on the roles of individual users within an enterprise. In this context, access is the ability of an individual user to perform a specific task, such as view, create, or modify a file. To learn more about using the RBAC mode, see [RBAC Mode](/docs/admin/authorization/rbac/) - ..* When specified "RBAC" (Role-Based Access Control) uses the "rbac.authorization.k8s.io" API group to drive authorization decisions, allowing admins to dynamically configure permission policies through the Kubernetes API. - ..* To enable RBAC, start the apiserver with `--authorization-mode=RBAC`. + * When specified "RBAC" (Role-Based Access Control) uses the "rbac.authorization.k8s.io" API group to drive authorization decisions, allowing admins to dynamically configure permission policies through the Kubernetes API. + * To enable RBAC, start the apiserver with `--authorization-mode=RBAC`. * **Webhook** - A WebHook is an HTTP callback: an HTTP POST that occurs when something happens; a simple event-notification via HTTP POST. A web application implementing WebHooks will POST a message to a URL when certain things happen. To learn more about using the Webhook mode, see [Webhook Mode](/docs/admin/authorization/webhook/). #### Checking API Access @@ -132,10 +132,11 @@ The following flags can be used: * `--authorization-mode=ABAC` Attribute-Based Access Control (ABAC) mode allows you to configure policies using local files. * `--authorization-mode=RBAC` Role-based access control (RBAC) mode allows you to create and store policies using the Kubernetes API. * `--authorization-mode=Webhook` WebHook is an HTTP callback mode that allows you to manage authorization using a remote REST. + * `--authorization-mode=Node` Node authorization is a special-purpose authorization mode that specifically authorizes API requests made by kubelets. * `--authorization-mode=AlwaysDeny` This flag blocks all requests. Use this flag only for testing. * `--authorization-mode=AlwaysAllow` This flag allows all requests. Use this flag only if you do not require authorization for your API requests. -You can choose more than one authorization module. If one of the modes is `AlwaysAllow`, then it overrides the other modes and all API requests are allowed. +You can choose more than one authorization module. If one of the modes is `AlwaysAllow`, then it overrides the other modes and all API requests are allowed. ## Versioning For version 1.2, clusters created by kube-up.sh are configured so that no authorization is required for any request. diff --git a/docs/admin/authorization/rbac.md b/docs/admin/authorization/rbac.md index a7d17a9265..50597d151b 100644 --- a/docs/admin/authorization/rbac.md +++ b/docs/admin/authorization/rbac.md @@ -9,7 +9,7 @@ title: Using RBAC Authorization * TOC {:toc} -Role-Based Access Control ("RBAC") uses the "rbac.authorization.k8s.io" API group +Role-Based Access Control ("RBAC") uses the "rbac.authorization.k8s.io" API group to drive authorization decisions, allowing admins to dynamically configure policies through the Kubernetes API. @@ -123,7 +123,7 @@ roleRef: ``` Finally, a `ClusterRoleBinding` may be used to grant permission at the cluster level and in all -namespaces. The following `ClusterRoleBinding` allows any user in the group "manager" to read +namespaces. The following `ClusterRoleBinding` allows any user in the group "manager" to read secrets in any namespace. ```yaml @@ -267,7 +267,7 @@ reserved for Kubernetes system use, and so the admin should ensure usernames do not contain this prefix by accident. Group information in Kubernetes is currently provided by the Authenticator -modules. Groups, like users, are represented as strings, and that string +modules. Groups, like users, are represented as strings, and that string has no format requirements, other than that the prefix `system:` is reserved. [Service Accounts](/docs/tasks/configure-pod-container/configure-service-account/) have usernames with the `system:serviceaccount:` prefix and belong @@ -368,7 +368,7 @@ and updates default cluster role bindings with any missing subjects. This allows the cluster to repair accidental modifications, and to keep roles and rolebindings up-to-date as permissions and subjects change in new releases. -To opt out of this reconciliation, set the `rbac.authorization.kubernetes.io/autoupdate` +To opt out of this reconciliation, set the `rbac.authorization.kubernetes.io/autoupdate` annotation on a default cluster role or rolebinding to `false`. Be aware that missing default permissions and subjects can result in non-functional clusters. @@ -463,9 +463,7 @@ The permissions required by individual control loops are contained in the system:node None in 1.8+ Allows access to resources required by the kubelet component, including read access to all secrets, and write access to all pod status objects. -As of 1.7, use of the [Node authorizer](/docs/admin/authorization/node/) -and [NodeRestriction admission plugin](/docs/admin/admission-controllers#NodeRestriction) -is recommended instead of this role, and allow granting API access to kubelets based on the pods scheduled to run on them. +As of 1.7, use of the Node authorizer and NodeRestriction admission plugin is recommended instead of this role, and allow granting API access to kubelets based on the pods scheduled to run on them. Prior to 1.7, this role was automatically bound to the `system:nodes` group. In 1.7, this role was automatically bound to the `system:nodes` group if the `Node` authorization mode is not enabled. In 1.8+, no binding is automatically created. @@ -506,7 +504,7 @@ This is commonly used by add-on API servers for unified authentication and autho system:kube-dns kube-dns service account in the kube-system namespace -Role for the kube-dns component. +Role for the kube-dns component. system:node-bootstrapper @@ -530,7 +528,7 @@ This is commonly used by add-on API servers for unified authentication and autho The [Kubernetes controller manager](/docs/admin/kube-controller-manager/) runs core control loops. When invoked with `--use-service-account-credentials`, each control loop is started using a separate service account. Corresponding roles exist for each control loop, prefixed with `system:controller:`. -If the controller manager is not started with `--use-service-account-credentials`, +If the controller manager is not started with `--use-service-account-credentials`, it runs all control loops using its own credential, which must be granted all the relevant roles. These roles include: @@ -570,7 +568,7 @@ containing that permission. To allow a user to create/update roles: 1. Grant them a role that allows them to create/update `Role` or `ClusterRole` objects, as desired. 2. Grant them roles containing the permissions you would want them to be able to set in a `Role` or `ClusterRole`. If they attempt to create or modify a `Role` or `ClusterRole` with permissions they themselves have not been granted, the API request will be forbidden. -A user can only create/update a role binding if they already have all the permissions contained in the referenced role +A user can only create/update a role binding if they already have all the permissions contained in the referenced role (at the same scope as the role binding) *or* if they've been given explicit permission to perform the `bind` verb on the referenced role. For example, if "user-1" does not have the ability to list secrets cluster-wide, they cannot create a `ClusterRoleBinding` to a role that grants that permission. To allow a user to create/update role bindings: @@ -669,7 +667,7 @@ In order from most secure to least secure, the approaches are: and for the service account to be created (via the API, application manifest, `kubectl create serviceaccount`, etc.). For example, grant read-only permission within "my-namespace" to the "my-sa" service account: - + ```shell kubectl create rolebinding my-sa-view \ --clusterrole=view \ @@ -684,7 +682,7 @@ In order from most secure to least secure, the approaches are: NOTE: Permissions given to the "default" service account are available to any pod in the namespace that does not specify a `serviceAccountName`. For example, grant read-only permission within "my-namespace" to the "default" service account: - + ```shell kubectl create rolebinding default-view \ --clusterrole=view \ @@ -694,9 +692,9 @@ In order from most secure to least secure, the approaches are: Many [add-ons](/docs/concepts/cluster-administration/addons/) currently run as the "default" service account in the "kube-system" namespace. To allow those add-ons to run with super-user access, grant cluster-admin permissions to the "default" service account in the "kube-system" namespace. - + NOTE: Enabling this means the "kube-system" namespace contains secrets that grant super-user access to the API. - + ```shell kubectl create clusterrolebinding add-on-cluster-admin \ --clusterrole=cluster-admin \ @@ -709,7 +707,7 @@ In order from most secure to least secure, the approaches are: you can grant a role to the service account group for that namespace. For example, grant read-only permission within "my-namespace" to to all service accounts in that namespace: - + ```shell kubectl create rolebinding serviceaccounts-view \ --clusterrole=view \ @@ -722,7 +720,7 @@ In order from most secure to least secure, the approaches are: If you don't want to manage permissions per-namespace, you can grant a cluster-wide role to all service accounts. For example, grant read-only permission across all namespaces to all service accounts in the cluster: - + ```shell kubectl create clusterrolebinding serviceaccounts-view \ --clusterrole=view \ diff --git a/docs/admin/authorization/webhook.md b/docs/admin/authorization/webhook.md index 8a807bc35b..f451a0d569 100644 --- a/docs/admin/authorization/webhook.md +++ b/docs/admin/authorization/webhook.md @@ -20,7 +20,7 @@ service when determining user privileges. Mode `Webhook` requires a file for HTTP configuration, specify by the `--authorization-webhook-config-file=SOME_FILENAME` flag. -The configuration file uses the [kubeconfig](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/) +The configuration file uses the [kubeconfig](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) file format. Within the file "users" refers to the API Server webhook and "clusters" refers to the remote service. @@ -31,8 +31,10 @@ A configuration example which uses HTTPS client auth: clusters: - name: name-of-remote-authz-service cluster: - certificate-authority: /path/to/ca.pem # CA for verifying the remote service. - server: https://authz.example.com/authorize # URL of remote service to query. Must use 'https'. + # CA for verifying the remote service. + certificate-authority: /path/to/ca.pem + # URL of remote service to query. Must use 'https'. May not include parameters. + server: https://authz.example.com/authorize # users refers to the API Server's webhook configuration. users: diff --git a/docs/admin/cluster-large.md b/docs/admin/cluster-large.md index 312e9211f8..b443d42132 100644 --- a/docs/admin/cluster-large.md +++ b/docs/admin/cluster-large.md @@ -56,7 +56,7 @@ When creating a cluster, existing salt scripts: ### Size of master and master components -On GCE/GKE and AWS, `kube-up` automatically configures the proper VM size for your master depending on the number of nodes +On GCE/Google Kubernetes Engine, and AWS, `kube-up` automatically configures the proper VM size for your master depending on the number of nodes in your cluster. On other providers, you will need to configure it manually. For reference, the sizes we use on GCE are * 1-5 nodes: n1-standard-1 @@ -99,10 +99,10 @@ To avoid running into cluster addon resource issues, when creating a cluster wit * Scale memory and CPU limits for each of the following addons, if used, as you scale up the size of cluster (there is one replica of each handling the entire cluster so memory and CPU usage tends to grow proportionally with size/load on cluster): * [InfluxDB and Grafana](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml) - * [kubedns, dnsmasq, and sidecar](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/dns/kubedns-controller.yaml.in) - * [Kibana](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/kibana-controller.yaml) + * [kubedns, dnsmasq, and sidecar](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/dns/kube-dns.yaml.in) + * [Kibana](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/kibana-deployment.yaml) * Scale number of replicas for the following addons, if used, along with the size of cluster (there are multiple replicas of each so increasing replicas should help handle increased load, but, since load per replica also increases slightly, also consider increasing CPU/memory limits): - * [elasticsearch](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/es-controller.yaml) + * [elasticsearch](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/es-statefulset.yaml) * Increase memory and CPU limits slightly for each of the following addons, if used, along with the size of cluster (there is one replica per node but CPU/memory usage increases slightly along with cluster load/size as well): * [FluentD with ElasticSearch Plugin](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/fluentd-es-ds.yaml) * [FluentD with GCP Plugin](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-gcp/fluentd-gcp-ds.yaml) diff --git a/docs/admin/daemon.yaml b/docs/admin/daemon.yaml deleted file mode 100644 index c5cd14a592..0000000000 --- a/docs/admin/daemon.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: DaemonSet -metadata: - name: prometheus-node-exporter -spec: - template: - metadata: - name: prometheus-node-exporter - labels: - daemon: prom-node-exp - spec: - containers: - - name: c - image: prom/prometheus - ports: - - containerPort: 9090 - hostPort: 9090 - name: serverport diff --git a/docs/admin/federation/index.md b/docs/admin/federation/index.md index d4c524a926..9127a1aa36 100644 --- a/docs/admin/federation/index.md +++ b/docs/admin/federation/index.md @@ -6,7 +6,7 @@ approvers: title: (Deprecated) Using `federation-up` and `deploy.sh` --- -## The mechanisms explained in this doc to setup federation are deprecated. [`kubefed`](/docs/tutorials/federation/set-up-cluster-federation-kubefed/) is now the recommended way to deploy federation. +## The mechanisms explained in this doc to setup federation are deprecated. [`kubefed`](/docs/tasks/federation/set-up-cluster-federation-kubefed/) is now the recommended way to deploy federation. This guide explains how to set up cluster federation that lets us control multiple Kubernetes clusters. @@ -17,7 +17,7 @@ This guide explains how to set up cluster federation that lets us control multip ## Prerequisites This guide assumes that you have a running Kubernetes cluster. -If you need to start a new cluster, see the [getting started guides](/docs/getting-started-guides/) for instructions on bringing a cluster up. +If you need to start a new cluster, see the [getting started guides](/docs/setup/) for instructions on bringing a cluster up. To use the commands in this guide, you must download a Kubernetes release from the [getting started binary releases](/docs/getting-started-guides/binary_release/) and @@ -154,7 +154,7 @@ to be able to talk to federation apiserver. You can view this by running `kubectl config view`. Note: Dynamic provisioning for persistent volume currently works only on -AWS, GKE, and GCE. However, you can edit the created `Deployments` to suit +AWS, Google Kubernetes Engine, and GCE. However, you can edit the created `Deployments` to suit your needs, if required. ## Registering Kubernetes clusters with federation @@ -378,11 +378,11 @@ to be able to talk to federation apiserver. You can view this by running Note: `federation-up.sh` creates the federation-apiserver pod with an etcd container that is backed by a persistent volume, so as to persist data. This -currently works only on AWS, GKE, and GCE. You can edit +currently works only on AWS, Google Kubernetes Engine, and GCE. You can edit `federation/manifests/federation-apiserver-deployment.yaml` to suit your needs, if required. ## For more information - * [Federation proposal](https://git.k8s.io/community/contributors/design-proposals/federation/federation.md) details use cases that motivated this work. + * [Federation proposal](https://git.k8s.io/community/contributors/design-proposals/multicluster/federation.md) details use cases that motivated this work. diff --git a/docs/admin/high-availability/index.md b/docs/admin/high-availability/index.md index 298598d851..0b0cf61708 100644 --- a/docs/admin/high-availability/index.md +++ b/docs/admin/high-availability/index.md @@ -7,7 +7,7 @@ title: Building High-Availability Clusters This document describes how to build a high-availability (HA) Kubernetes cluster. This is a fairly advanced topic. Users who merely want to experiment with Kubernetes are encouraged to use configurations that are simpler to set up such as [Minikube](/docs/getting-started-guides/minikube/) -or try [Google Container Engine](https://cloud.google.com/container-engine/) for hosted Kubernetes. +or try [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine/) for hosted Kubernetes. Also, at this time high availability support for Kubernetes is not continuously tested in our end-to-end (e2e) testing. We will be working to add this continuous testing, but for now the single-node master installations are more heavily tested. diff --git a/docs/admin/high-availability/kube-scheduler.yaml b/docs/admin/high-availability/kube-scheduler.yaml index 9e997cbc47..40c863da48 100644 --- a/docs/admin/high-availability/kube-scheduler.yaml +++ b/docs/admin/high-availability/kube-scheduler.yaml @@ -21,9 +21,6 @@ spec: volumeMounts: - mountPath: /var/log/kube-scheduler.log name: logfile - - mountPath: /var/run/secrets/kubernetes.io/serviceaccount - name: default-token-s8ejd - readOnly: true volumes: - hostPath: path: /var/log/kube-scheduler.log diff --git a/docs/admin/kubelet-authentication-authorization.md b/docs/admin/kubelet-authentication-authorization.md index 6d26b1c670..03ab5fd64b 100644 --- a/docs/admin/kubelet-authentication-authorization.md +++ b/docs/admin/kubelet-authentication-authorization.md @@ -36,6 +36,8 @@ To enable API bearer tokens (including service account tokens) to be used to aut * start the kubelet with the `--authentication-token-webhook`, `--kubeconfig`, and `--require-kubeconfig` flags * the kubelet calls the `TokenReview` API on the configured API server to determine user information from bearer tokens +**Note:** The flag `--require-kubeconfig` is deprecated as of Kubernetes 1.8, this will be removed in a future version. You no longer need to use `--require-kubeconfig` in Kubernetes 1.8. + ## Kubelet authorization Any request that is successfully authenticated (including an anonymous request) is then authorized. The default authorization mode is `AlwaysAllow`, which allows all requests. @@ -52,6 +54,8 @@ To subdivide access to the kubelet API, delegate authorization to the API server * start the kubelet with the `--authorization-mode=Webhook`, `--kubeconfig`, and `--require-kubeconfig` flags * the kubelet calls the `SubjectAccessReview` API on the configured API server to determine whether each request is authorized +**Note:** The flag `--require-kubeconfig` is deprecated as of Kubernetes 1.8, this will be removed in a future version. You no longer need to use `--require-kubeconfig` in Kubernetes 1.8. + The kubelet authorizes API requests using the same [request attributes](/docs/admin/authorization/#request-attributes) approach as the apiserver. The verb is determined from the incoming request's HTTP verb: diff --git a/docs/admin/kubelet-tls-bootstrapping.md b/docs/admin/kubelet-tls-bootstrapping.md index 0d553828ec..516d5653b4 100644 --- a/docs/admin/kubelet-tls-bootstrapping.md +++ b/docs/admin/kubelet-tls-bootstrapping.md @@ -28,7 +28,7 @@ While any authentication strategy can be used for the kubelet's initial bootstra 1. [Bootstrap Tokens](/docs/admin/bootstrap-tokens/) - __alpha__ 2. [Token authentication file](#token-authentication-file) -Using bootstrap tokens is currently __alpha__ and will simplify the management of bootstrap token management especially in a HA scenario. +Using bootstrap tokens is currently __alpha__ and will simplify the management of bootstrap token management especially in a HA scenario. ### Token authentication file Tokens are arbitrary but should represent at least 128 bits of entropy derived from a secure random number @@ -133,9 +133,9 @@ rules: As of 1.8, equivalent roles to the ones listed above are automatically created as part of the default RBAC roles. For 1.8 clusters admins are recommended to bind tokens to the following roles instead of creating their own: -* `system:certificates.k8s.io:certificatesigningrequests:io:certificatesigningrequests:nodeclient` +* `system:certificates.k8s.io:certificatesigningrequests:nodeclient` - Automatically approve CSRs for client certs bound to this role. -* `system:certificates.k8s.io:certificatesigningrequests:io:certificatesigningrequests:selfnodeclient` +* `system:certificates.k8s.io:certificatesigningrequests:selfnodeclient` - Automatically approve CSRs when a client bound to its role renews its own certificate. These powers can be granted to credentials, such as bootstrapping tokens. For example, to replicate the behavior diff --git a/docs/admin/multiple-schedulers/pod1.yaml b/docs/admin/multiple-schedulers/pod1.yaml index 733aa97d99..6cf8fec25a 100644 --- a/docs/admin/multiple-schedulers/pod1.yaml +++ b/docs/admin/multiple-schedulers/pod1.yaml @@ -7,4 +7,4 @@ metadata: spec: containers: - name: pod-with-no-annotation-container - image: gcr.io/google_containers/pause:2.0 \ No newline at end of file + image: gcr.io/google_containers/pause:2.0 diff --git a/docs/admin/multiple-zones.md b/docs/admin/multiple-zones.md index e58bfd59fc..3f590016c0 100644 --- a/docs/admin/multiple-zones.md +++ b/docs/admin/multiple-zones.md @@ -11,7 +11,7 @@ title: Running in Multiple Zones Kubernetes 1.2 adds support for running a single cluster in multiple failure zones (GCE calls them simply "zones", AWS calls them "availability zones", here we'll refer to them as "zones"). This is a lightweight version of a broader Cluster Federation feature (previously referred to by the affectionate -nickname ["Ubernetes"](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/federation/federation.md)). +nickname ["Ubernetes"](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/multicluster/federation.md)). Full Cluster Federation allows combining separate Kubernetes clusters running in different regions or cloud providers (or on-premises data centers). However, many diff --git a/docs/api-reference/labels-annotations-taints.md b/docs/api-reference/labels-annotations-taints.md deleted file mode 100644 index 492237bd57..0000000000 --- a/docs/api-reference/labels-annotations-taints.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Well-Known Labels, Annotations and Taints ---- - -{% include api-reference-content-moved.md %} - -* [Well-Known Labels, Annotations and Taints](/docs/reference/labels-annotations-taints/) diff --git a/docs/api-reference/v1.5/LICENSE b/docs/api-reference/v1.5/LICENSE deleted file mode 100644 index 8dada3edaf..0000000000 --- a/docs/api-reference/v1.5/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file 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. diff --git a/docs/api-reference/v1.5/README.md b/docs/api-reference/v1.5/README.md deleted file mode 100644 index 4bee5de31a..0000000000 --- a/docs/api-reference/v1.5/README.md +++ /dev/null @@ -1,69 +0,0 @@ -## Synopsis - -Static compilation of html from markdown including processing for grouping code snippets into arbitrary tabs. - -## Code Example - -\> bdocs-tab:kubectl Deployment Config to run 3 nginx instances (max rollback set to 10 revisions). - -bdocs-tab:tab will be stripped during rendering and utilized to with CSS to show or hide the preferred tab. kubectl indicates the desired tab, since blockquotes have no specific syntax highlighting. - -\`\`\`bdocs-tab:kubectl_yaml -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: deployment-example -spec: - replicas: 3 - revisionHistoryLimit: 10 - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - image: nginx:1.10 -\`\`\` - -bdocs-tab:tab_lang will be used to indicate which tab these code snippets belong to. The tab section of the string indicates the tab, while, the language is pushed beyond the underscore. During rendering, the language will be properly highlighted as if the bdoc token was omitted. - -## Motivation - -This is a project to extend markdown documents and render them in html with a table of contents and code snippet pane. Most projects of this variety lean heavily on front end parsing with JavaScript/jQuery. This project uses NodeJS, Marked, and highlight.js to output syntax highlighted code blocks. - -With specific tokens on blockquotes and code blocks, the chunks can be placed according to their relevance. Ex: Multiple language code blocks that should be grouped under an arbitrary tab. - -## Installation - -Clone the repository, then add documents into documents directory. Modify the manifest.json to contain the document filenames in the order desired. The docs field is an array of objects with a filename key. - -As a NodeJS program, a valid installation of node is required. Once node is installed, verify it can be run from command line. -``` -node --version -``` -Next, depedencies need to be installed via npm from the root of the project directory. -``` -npm install -``` - -Once dependencies are installed, run -``` -node brodoc.js -``` - -This will generate the index.html file, which can be opened in a browser or served. - -The included node-static server can be run from the project root via -``` -npm start -``` - -## License - -Apache License Version 2.0 - -## FAQ - -Q: Why is it named brodocs? -A: This project was born out of a collaboration with my brother to create a suitable docs app for his purposes. It was a fun name for the the two of us to use as actual brothers. \ No newline at end of file diff --git a/docs/api-reference/v1.5/actions.js b/docs/api-reference/v1.5/actions.js deleted file mode 100644 index ce2b504b9e..0000000000 --- a/docs/api-reference/v1.5/actions.js +++ /dev/null @@ -1,58 +0,0 @@ -// https://jsfiddle.net/upqwhou2/ - -$(document).ready(function() { - var navigationLinks = $('#sidebar-wrapper > ul li a'); - var navigationSections = $('#sidebar-wrapper > ul > ul'); - var sectionIdTonavigationLink = {}; - var sections = $('#page-content-wrapper').find('h1, h2').map(function(index, node) { - if (node.id) { - sectionIdTonavigationLink[node.id] = $('#sidebar-wrapper > ul li a[href="#' + node.id + '"]'); - return node; - } - }); - var sectionIdToNavContainerLink = {}; - var topLevelSections = $('#page-content-wrapper').find('h1').map(function(index, node) { - if (node.id) { - sectionIdToNavContainerLink[node.id] = $('#sidebar-wrapper > ul > ul[id="' + node.id + '-nav' +'"]'); - return node; - } - }); - - var firstLevelNavs = $('#sidebar-wrapper > li'); - var secondLevelNavs = $('#sidebar-wrapper > ul > ul'); - var secondLevelNavContents = $('#sidebar-wrapper > ul > ul > li'); - var thirdLevelNavs = null; // TODO: When compile provides 3 level nav, implement - - var sectionsReversed = $(sections.get().reverse()); - - function checkScroll(event) { - var scrollPosition = $(window).scrollTop(); - var offset = 50; - scrollPosition += offset; - sections.each(function() { - var currentSection = $(this); - var sectionTop = $(this).offset().top; - var id = $(this).attr('id'); - if (scrollPosition >= sectionTop) { - navigationLinks.removeClass('selected'); - sectionIdTonavigationLink[id].addClass('selected'); - var sectionNavContainer = sectionIdToNavContainerLink[id]; - var sectionNavContainerDisplay; - if (sectionNavContainer) { - sectionNavContainerDisplay = sectionNavContainer.css('display'); - } - if (sectionNavContainer && sectionNavContainerDisplay === 'none') { - navigationSections.toggle(false); - sectionNavContainer.toggle(true); - } - } - if (($(this).offset().top < window.pageYOffset + 50) && $(this).offset().top + $(this).height() > window.pageYOffset) { - window.location.hash = id; - } - }); - } - checkScroll(); - $(window).on('scroll', function(event) { - checkScroll(event); - }); -}); \ No newline at end of file diff --git a/docs/api-reference/v1.5/brodoc.js b/docs/api-reference/v1.5/brodoc.js deleted file mode 100644 index da3507af76..0000000000 --- a/docs/api-reference/v1.5/brodoc.js +++ /dev/null @@ -1,211 +0,0 @@ -const docFolder = './documents/'; -const fs = require('fs'); -const marked = require('marked'); -const highlight = require('highlight.js'); -const renderer = new marked.Renderer(); -const brodocDec = require('./markedDecorations.js'); - - -marked.setOptions({ - renderer: renderer, - gfm: true, - tables: true, - breaks: false, - pedantic: false, - sanitize: false, - smartLists: true, - smartypants: false, - highlight: function (code, lang) { - return highlight.highlightAuto(code).value; - } -}); -brodocDec.decorateMarked(renderer); - -var config = require('./manifest'); -var docs = config.docs; - -var files = []; -var fileArray = []; -docs.forEach(file => { - files.push(file.filename); - fileArray.push(file); -}); - -var bodyContent = ''; -var navIds = brodocDec.navIds; -var codeTabs = brodocDec.codeTabs; - - -// const lexer = new marked.Lexer(); -// lexer.rules.bdoc = /^(\/{4} )(\w+).*$/; - -var path = docFolder; -var fIndex = 0; -var rIndex = 0; -var fileObj = {toc: [], content: [], tabs: []}; -fileArray.forEach((file, index) => { - fs.readFile(path + file.filename, 'utf8', (err, data) => { - rIndex++; - file.content = data; - - if (rIndex >= files.length) { - // do the things - parseFileContent(fileArray); - var navData = generateNavItems(navIds); - var navContent = navData.content; - var navDataArray = navData.navDataArray; - var codeTabContent = generateCodeTabItems(codeTabs); - var bodyContent = flattenContent(parsedContentArray); - generateDoc(navContent, bodyContent, codeTabContent); - generateNavJson(navDataArray); - } - }); -}); - -function flattenContent(content) { - var flattenedContent = content.reduce(function(accum, val) { - return accum + val; - }); - return flattenedContent; -} - -var parsedContentArray = []; -function parseFileContent(files) { - files.forEach((file, index) => { - parsedContentArray[index] = parseDoc(file.content); - }); -} -function parseDoc(doc) { - return marked(doc, { renderer: renderer }); -} - -function generateNavItems(navObjs) { - var reversedNavs = navObjs.reverse(); - var currentNestArray = []; - var currentStrongArray = []; - var flattenedNest = ''; - var nestedNavArray = []; // Array containing generated html menu items - is flattened into a string. - var navArrayInvert = []; // Deals with data layer of navigation; - var navSectionArray = []; - var navStrongSectionArray = []; - var navSectionArrayClone; - var flatNavArrayInvert = []; - reversedNavs.forEach(obj => { - flatNavArrayInvert.push(obj.id); - var strong = (obj.id.indexOf('-strong-') !== -1); - if (obj.level !== 1) { - if (strong && currentNestArray.length !== 0) { - flattenedNest = flattenContent(currentNestArray.reverse()); - currentStrongArray.push(generateNestedNav(obj, flattenedNest)); - currentNestArray.length = 0; - - navSectionArrayClone = Object.assign([], navSectionArray); - navStrongSectionArray.push({section: obj.id, subsections: navSectionArrayClone}); - navSectionArray.length = 0; - } else { - currentNestArray.push(generateNav(obj)); - navSectionArray.push({section: obj.id}); - } - } else if (obj.level === 1) { - if (currentStrongArray.length !== 0) { - currentNestArray.forEach(obj => { - currentStrongArray.push(obj); - }); - flattenedNest = flattenContent(currentStrongArray.reverse()); - } else if (currentNestArray.length !== 0) { - flattenedNest = flattenContent(currentNestArray.reverse()); - } - nestedNavArray.push(generateNestedNav(obj, flattenedNest)); - currentNestArray.length = 0; - currentStrongArray.length = 0; - flattenedNest = ''; - - navSectionArray.forEach(obj => { - navStrongSectionArray.push(obj); - }); - navSectionArrayClone = Object.assign([], navStrongSectionArray); - navStrongSectionArray.length = 0; - navArrayInvert.push({section: obj.id, subsections: navSectionArrayClone}); - navSectionArray.length = 0; - } - }); - - var navContent = flattenContent(nestedNavArray.reverse()); - return {content: navContent, navDataArray: {toc: navArrayInvert, flatToc: flatNavArrayInvert}}; -} - -function generateNav(obj) { - var classString = 'nav-level-' + obj.level; - var isStrong = obj.id.indexOf('-strong-') !== -1; - if (isStrong) { - classString += ' strong-nav'; - } - return '

  • ' + '' + obj.text + '
  • '; -} - -function generateNestedNav(parent, nest) { - var nestContent = ''; - if (nest.length > 0) { - nestContent = nest ? '' : ''; - } - return '
      ' + generateNav(parent) + nestContent + '
    '; -} - -function generateNavJson(data) { - var navJson = JSON.stringify(data); - navScript = `(function(){navData = ${navJson}})();`; - fs.writeFile('./navData.js', navScript, function(err) { - if (err) { - return console.log(err); - } - console.log("navData.js saved!"); - }); -} - -function generateCodeTabItems(tabs) { - var codeTabList = ''; - tabs.forEach(tab => { - codeTabList += generateCodeTab(tab); - }); - return codeTabList; -} - -function generateCodeTab(tab) { - return '
  • ' + tab + '
  • '; -} - -function generateDoc(navContent, bodyContent, codeTabContent) { - var doc = -` - - - -${config.title} - - - - - - - - - -
    -
      ${codeTabContent}
    -
    ${bodyContent}
    -
    - - - - - - - -`; - fs.writeFile('./index.html', doc, function (err) { - if (err) { - return console.log(err); - } - console.log("index.html saved!"); - }); -} \ No newline at end of file diff --git a/docs/api-reference/v1.5/index.html b/docs/api-reference/v1.5/index.html deleted file mode 100644 index b7365b0e7c..0000000000 --- a/docs/api-reference/v1.5/index.html +++ /dev/null @@ -1,57008 +0,0 @@ - - - - -Kubernetes API Reference Docs - - - - - - - - - -
    -
    • kubectl
    • curl
    -

    API OVERVIEW

    -

    Welcome to the Kubernetes API. You can use the Kubernetes API to read -and write Kubernetes resource objects via a Kubernetes API endpoint.

    -

    Resource Categories

    -

    This is a high-level overview of the basic types of resources provide by the Kubernetes API and their primary functions.

    -

    Workloads are objects you use to manage and run your containers on the cluster.

    -

    Discovery & LB resources are objects you use to "stitch" your workloads together into an externally accessible, load-balanced Service.

    -

    Config & Storage resources are objects you use to inject initialization data into your applications, and to persist data that is external to your container.

    -

    Cluster resources objects define how the cluster itself is configured; these are typically used only by cluster operators.

    -

    Metadata resources are objects you use to configure the behavior of other resources within the cluster, such as HorizontalPodAutoscaler for scaling workloads.

    -
    -

    Resource Objects

    -

    Resource objects typically have 3 components:

    -
      -
    • ResourceSpec: This is defined by the user and describes the desired state of system. Fill this in when creating or updating an -object.
    • -
    • ResourceStatus: This is filled in by the server and reports the current state of the system. Only kubernetes components should fill -this in
    • -
    • Resource ObjectMeta: This is metadata about the resource, such as its name, type, api version, annotations, and labels. This contains -fields that maybe updated both by the end user and the system (e.g. annotations)
    • -
    -
    -

    Resource Operations

    -

    Most resources provide the following Operations:

    -

    Create:

    -

    Create operations will create the resource in the storage backend. After a resource is created the system will apply -the desired state.

    -

    Update:

    -

    Updates come in 2 forms: Replace and Patch

    -

    Replace: -Replacing a resource object will update the resource by replacing the existing spec with the provided one. For -read-then-write operations this is safe because an optimistic lock failure will occur if the resource was modified -between the read and write. Note: The ResourceStatus will be ignored by the system and will not be updated. -To update the status, one must invoke the specific status update operation.

    -

    Note: Replacing a resource object may not result immediately in changes being propagated to downstream objects. For instance -replacing a ConfigMap or Secret resource will not result in all Pods seeing the changes unless the Pods are -restarted out of band.

    -

    Patch: -Patch will apply a change to a specific field. How the change is merged is defined per field. Lists may either be -replaced or merged. Merging lists will not preserve ordering.

    -

    Patches will never cause optimistic locking failures, and the last write will win. Patches are recommended - when the full state is not read before an update, or when failing on optimistic locking is undesirable. When patching - complex types, arrays and maps, how the patch is applied is defined on a per-field basis and may either replace - the field's current value, or merge the contents into the current value.

    -

    Read

    -

    Reads come in 3 forms: Get, List and Watch

    -

    Get: Get will retrieve a specific resource object by name.

    -

    List: List will retrieve all resource objects of a specific type within a namespace, and the results can be restricted to resources matching a selector query.

    -

    List All Namespaces: Like List but retrieves resources across all namespaces.

    -

    Watch: Watch will stream results for an object(s) as it is updated. Similar to a callback, watch is used to respond to resource changes.

    -

    Delete

    -

    Delete will delete a resource. Depending on the specific resource, child objects may or may not be garbage collected by the server. See -notes on specific resource objects for details.

    -

    Additional Operations

    -

    Resources may define additional operations specific to that resource type.

    -

    Rollback: Rollback a PodTemplate to a previous version. Only available for some resource types.

    -

    Read / Write Scale: Read or Update the number of replicas for the given resource. Only available for some resource types.

    -

    Read / Write Status: Read or Update the Status for a resource object. The Status can only changed through these update operations.

    -
    -

    WORKLOADS

    -

    Workloads resources are responsible for managing and running your containers on the cluster. Containers are created -by Controllers through Pods. Pods run Containers and provide environmental dependencies such as shared or -persistent storage Volumes and Configuration or Secret data injected into the -container.

    -

    The most common Controllers are:

    -
      -
    • Deployments for stateless persistent apps (e.g. http servers)
    • -
    • StatefulSets for stateful persistent apps (e.g. databases)
    • -
    • Jobs for run-to-completion apps (e.g. batch jobs).
    • -
    -
    -
    -

    Container v1

    -
    -

    Container Config to run nginx (must be embedded in a PodSpec to run).

    -
    -
    
    -name: nginx
    -# Run the nginx:1.10 image
    -image: nginx:1.10
    -
    -
    -

    Container Config to run nginx (must be embedded in a PodSpec to run).

    -
    -
    
    -name: nginx
    -# Run the nginx:1.10 image
    -image: nginx:1.10
    -
    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Container
    - - - - - - -

    A single application container that you want to run within a pod.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    args
    string array
    Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands
    command
    string array
    Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands
    env
    EnvVar array
    List of environment variables to set in the container. Cannot be updated.
    image
    string
    Docker image name. More info: http://kubernetes.io/docs/user-guide/images
    imagePullPolicy
    string
    Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/images#updating-images
    lifecycle
    Lifecycle
    Actions that the management system should take in response to container lifecycle events. Cannot be updated.
    livenessProbe
    Probe
    Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes
    name
    string
    Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.
    ports
    ContainerPort array
    List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.
    readinessProbe
    Probe
    Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes
    resources
    ResourceRequirements
    Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources
    securityContext
    SecurityContext
    Security options the pod should run with. More info: http://releases.k8s.io/HEAD/docs/design/security_context.md
    stdin
    boolean
    Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.
    stdinOnce
    boolean
    Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false
    terminationMessagePath
    string
    Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Defaults to /dev/termination-log. Cannot be updated.
    tty
    boolean
    Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.
    volumeMounts
    VolumeMount array
    Pod volumes to mount into the container's filesystem. Cannot be updated.
    workingDir
    string
    Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.
    -

    ContainerStatus v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    containerID
    string
    Container's ID in the format 'docker://'. More info: http://kubernetes.io/docs/user-guide/container-environment#container-information
    image
    string
    The image the container is running. More info: http://kubernetes.io/docs/user-guide/images
    imageID
    string
    ImageID of the container's image.
    lastState
    ContainerState
    Details about the container's last termination condition.
    name
    string
    This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.
    ready
    boolean
    Specifies whether the container has passed its readiness probe.
    restartCount
    integer
    The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC.
    state
    ContainerState
    Details about the container's current condition.
    -
    -

    CronJob v2alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Batchv2alpha1CronJob
    - - - - - - -

    CronJob represents the configuration of a single cron job.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    CronJobSpec
    Spec is a structure defining the expected behavior of a job, including the schedule. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    CronJobStatus
    Status is a structure describing current status of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    CronJobSpec v2alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    concurrencyPolicy
    string
    ConcurrencyPolicy specifies how to treat concurrent executions of a Job.
    jobTemplate
    JobTemplateSpec
    JobTemplate is the object that describes the job that will be created when executing a CronJob.
    schedule
    string
    Schedule contains the schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
    startingDeadlineSeconds
    integer
    Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.
    suspend
    boolean
    Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.
    -

    CronJobStatus v2alpha1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    active
    ObjectReference array
    Active holds pointers to currently running jobs.
    lastScheduleTime
    Time
    LastScheduleTime keeps information of when was the last time the job was successfully scheduled.
    -

    CronJobList v2alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    CronJob array
    Items is the list of CronJob.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a CronJob

    -

    HTTP Request

    -

    POST /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    CronJob
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJob
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified CronJob

    -

    HTTP Request

    -

    PUT /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CronJob
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    CronJob
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJob
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified CronJob

    -

    HTTP Request

    -

    PATCH /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CronJob
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJob
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a CronJob

    -

    HTTP Request

    -

    DELETE /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CronJob
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of CronJob

    -

    HTTP Request

    -

    DELETE /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified CronJob

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CronJob
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJob
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind CronJob

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJobList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind CronJob

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/cronjobs

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJobList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind CronJob

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/watch/namespaces/{namespace}/cronjobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CronJob
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of CronJob

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/watch/namespaces/{namespace}/cronjobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of CronJob

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/watch/cronjobs

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified CronJob

    -

    HTTP Request

    -

    PATCH /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CronJob
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJob
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified CronJob

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CronJob
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJob
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified CronJob

    -

    HTTP Request

    -

    PUT /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CronJob
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    CronJob
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CronJob
    OK
    -
    -

    DaemonSet v1beta1

    -
    -

    DaemonSet Config to print the hostname on each Node in the cluster every 10 seconds.

    -
    -
    
    -apiVersion: extensions/v1beta1
    -kind: DaemonSet
    -metadata:
    -  # Unique key of the DaemonSet instance
    -  name: daemonset-example
    -spec:
    -  template:
    -    metadata:
    -      labels:
    -        app: daemonset-example
    -    spec:
    -      containers:
    -      # This container is run once on each Node in the cluster
    -      - name: daemonset-example
    -        image: ubuntu:trusty
    -        command:
    -        - /bin/sh
    -        args:
    -        - -c
    -        # This script is run through `sh -c <script>`
    -        - >-
    -          while [ true ]; do
    -          echo "DaemonSet running on $(hostname)" ;
    -          sleep 10 ;
    -          done
    -
    -
    -

    DaemonSet Config to print the hostname on each Node in the cluster every 10 seconds.

    -
    -
    
    -apiVersion: extensions/v1beta1
    -kind: DaemonSet
    -metadata:
    -  # Unique key of the DaemonSet instance
    -  name: daemonset-example
    -spec:
    -  template:
    -    metadata:
    -      labels:
    -        app: daemonset-example
    -    spec:
    -      containers:
    -      # This container is run once on each Node in the cluster
    -      - name: daemonset-example
    -        image: ubuntu:trusty
    -        command:
    -        - /bin/sh
    -        args:
    -        - -c
    -        # This script is run through `sh -c <script>`
    -        - >-
    -          while [ true ]; do
    -          echo "DaemonSet running on $(hostname)" ;
    -          sleep 10 ;
    -          done
    -
    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Extensionsv1beta1DaemonSet
    -

    DaemonSet represents the configuration of a daemon set.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    DaemonSetSpec
    Spec defines the desired behavior of this daemon set. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    DaemonSetStatus
    Status is the current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    DaemonSetSpec v1beta1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    selector
    LabelSelector
    Selector is a label query over pods that are managed by the daemon set. Must match in order to be controlled. If empty, defaulted to labels on Pod template. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    template
    PodTemplateSpec
    Template is the object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template
    -

    DaemonSetStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    currentNumberScheduled
    integer
    CurrentNumberScheduled is the number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md
    desiredNumberScheduled
    integer
    DesiredNumberScheduled is the total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md
    numberMisscheduled
    integer
    NumberMisscheduled is the number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md
    numberReady
    integer
    NumberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.
    -

    DaemonSetList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    DaemonSet array
    Items is a list of daemon sets.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -$ echo 'apiVersion: extensions/v1beta1
    -kind: DaemonSet
    -metadata:
    -  name: daemonset-example
    -spec:
    -  template:
    -    metadata:
    -      labels:
    -        app: daemonset-example
    -    spec:
    -      containers:
    -      - name: daemonset-example
    -        image: ubuntu:trusty
    -        command:
    -        - /bin/sh
    -        args:
    -        - -c
    -        - >-
    -          while [ true ]; do
    -          echo "DaemonSet running on $(hostname)" ;
    -          sleep 10 ;
    -          done
    -' | kubectl create -f -
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X POST -H 'Content-Type: application/yaml' --data '
    -apiVersion: extensions/v1beta1
    -kind: DaemonSet
    -metadata:
    -  name: daemonset-example
    -spec:
    -  template:
    -    metadata:
    -      labels:
    -        app: daemonset-example
    -    spec:
    -      containers:
    -      - name: daemonset-example
    -        image: ubuntu:trusty
    -        command:
    -        - /bin/sh
    -        args:
    -        - -c
    -        - >-
    -          while [ true ]; do
    -          echo "DaemonSet running on $(hostname)" ;
    -          sleep 10 ;
    -          done
    -' http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/daemonsets
    -
    -
    -

    Output

    -
    -
    
    -daemonset "daemonset-example" created
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "DaemonSet",
    -  "apiVersion": "extensions/v1beta1",
    -  "metadata": {
    -    "name": "daemonset-example",
    -    "namespace": "default",
    -    "selfLink": "/apis/extensions/v1beta1/namespaces/default/daemonsets/daemonset-example",
    -    "uid": "65552ced-b0e2-11e6-aef0-42010af00229",
    -    "resourceVersion": "3558",
    -    "generation": 1,
    -    "creationTimestamp": "2016-11-22T18:35:09Z",
    -    "labels": {
    -      "app": "daemonset-example"
    -    }
    -  },
    -  "spec": {
    -    "selector": {
    -      "matchLabels": {
    -        "app": "daemonset-example"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "creationTimestamp": null,
    -        "labels": {
    -          "app": "daemonset-example"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "daemonset-example",
    -            "image": "ubuntu:trusty",
    -            "command": [
    -              "/bin/sh"
    -            ],
    -            "args": [
    -              "-c",
    -              "while [ true ]; do echo \"DaemonSet running on $(hostname)\" ; sleep 10 ; done"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "IfNotPresent"
    -          }
    -        ],
    -        "restartPolicy": "Always",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {
    -    "currentNumberScheduled": 0,
    -    "numberMisscheduled": 0,
    -    "desiredNumberScheduled": 0
    -  }
    -}
    -
    -

    create a DaemonSet

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DaemonSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSet
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified DaemonSet

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DaemonSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DaemonSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSet
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified DaemonSet

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DaemonSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSet
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl delete daemonset daemonset-example
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X DELETE -H 'Content-Type: application/yaml' --data '
    -gracePeriodSeconds: 0
    -orphanDependents: false
    -' 'http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/daemonsets/daemonset-example'
    -
    -
    -

    Output

    -
    -
    
    -daemonset "daemonset-example" deleted
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Status",
    -  "apiVersion": "v1",
    -  "metadata": {},
    -  "status": "Success",
    -  "code": 200
    -}
    -
    -

    delete a DaemonSet

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DaemonSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of DaemonSet

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get daemonset daemonset-example -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/daemonsets/daemonset-example
    -
    -
    -

    Output

    -
    -
    
    -
    -
    -

    Response Body

    -
    -
    
    -
    -

    read the specified DaemonSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DaemonSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSet
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind DaemonSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSetList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind DaemonSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/daemonsets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSetList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind DaemonSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DaemonSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of DaemonSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of DaemonSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/daemonsets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified DaemonSet

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DaemonSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSet
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified DaemonSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DaemonSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSet
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified DaemonSet

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DaemonSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DaemonSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DaemonSet
    OK
    -
    -

    Deployment v1beta1

    -
    -

    Deployment Config to run 3 nginx instances (max rollback set to 10 revisions).

    -
    -
    
    -apiVersion: extensions/v1beta1
    -kind: Deployment
    -metadata:
    -  # Unique key of the Deployment instance
    -  name: deployment-example
    -spec:
    -  # 3 Pods should exist at all times.
    -  replicas: 3
    -  # Keep record of 2 revisions for rollback
    -  revisionHistoryLimit: 2
    -  template:
    -    metadata:
    -      labels:
    -        # Apply this label to pods and default
    -        # the Deployment label selector to this value
    -        app: nginx
    -    spec:
    -      containers:
    -      - name: nginx
    -        # Run this image
    -        image: nginx:1.10
    -
    -
    -

    Deployment Config to run 3 nginx instances (max rollback set to 10 revisions).

    -
    -
    
    -apiVersion: extensions/v1beta1
    -kind: Deployment
    -metadata:
    -  # Unique key of the Deployment instance
    -  name: deployment-example
    -spec:
    -  # 3 Pods should exist at all times.
    -  replicas: 3
    -  # Keep record of 2 revisions for rollback
    -  revisionHistoryLimit: 2
    -  template:
    -    metadata:
    -      labels:
    -        # Apply this label to pods and default
    -        # the Deployment label selector to this value
    -        app: nginx
    -    spec:
    -      containers:
    -      - name: nginx
    -        # Run this image
    -        image: nginx:1.10
    -
    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Extensionsv1beta1Deployment
    -

    Deployment enables declarative updates for Pods and ReplicaSets.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object metadata.
    spec
    DeploymentSpec
    Specification of the desired behavior of the Deployment.
    status
    DeploymentStatus
    Most recently observed status of the Deployment.
    -

    DeploymentSpec v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    minReadySeconds
    integer
    Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)
    paused
    boolean
    Indicates that the deployment is paused and will not be processed by the deployment controller.
    progressDeadlineSeconds
    integer
    The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Once autoRollback is implemented, the deployment controller will automatically rollback failed deployments. Note that progress will not be estimated during the time a deployment is paused. This is not set by default.
    replicas
    integer
    Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.
    revisionHistoryLimit
    integer
    The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified.
    rollbackTo
    RollbackConfig
    The config this deployment is rolling back to. Will be cleared after rollback is done.
    selector
    LabelSelector
    Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment.
    strategy
    DeploymentStrategy
    The deployment strategy to use to replace existing pods with new ones.
    template
    PodTemplateSpec
    Template describes the pods that will be created.
    -

    DeploymentStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    availableReplicas
    integer
    Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
    conditions
    DeploymentCondition array
    Represents the latest available observations of a deployment's current state.
    observedGeneration
    integer
    The generation observed by the deployment controller.
    replicas
    integer
    Total number of non-terminated pods targeted by this deployment (their labels match the selector).
    unavailableReplicas
    integer
    Total number of unavailable pods targeted by this deployment.
    updatedReplicas
    integer
    Total number of non-terminated pods targeted by this deployment that have the desired template spec.
    -

    DeploymentList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Deployment array
    Items is the list of Deployments.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata.
    -

    DeploymentStrategy v1beta1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    rollingUpdate
    RollingUpdateDeployment
    Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.
    type
    string
    Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.
    -

    DeploymentRollback v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    name
    string
    Required: This must match the Name of a deployment.
    rollbackTo
    RollbackConfig
    The config of this deployment rollback.
    updatedAnnotations
    object
    The annotations to be updated to a deployment
    -

    RollingUpdateDeployment v1beta1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    maxSurge
    IntOrString
    The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. By default, a value of 1 is used. Example: when this is set to 30%, the new RC can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new RC can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods.
    maxUnavailable
    IntOrString
    The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0 if MaxSurge is 0. By default, a fixed value of 1 is used. Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old RC can be scaled down further, followed by scaling up the new RC, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -$ echo 'apiVersion: extensions/v1beta1
    -kind: Deployment
    -metadata:
    -  name: deployment-example
    -spec:
    -  replicas: 3
    -  revisionHistoryLimit: 10
    -  template:
    -    metadata:
    -      labels:
    -        app: nginx
    -    spec:
    -      containers:
    -      - name: nginx
    -        image: nginx:1.10
    -        ports:
    -        - containerPort: 80
    -' | kubectl create -f -
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X POST -H 'Content-Type: application/yaml' --data '
    -apiVersion: extensions/v1beta1
    -kind: Deployment
    -metadata:
    -  name: deployment-example
    -spec:
    -  replicas: 3
    -  revisionHistoryLimit: 10
    -  template:
    -    metadata:
    -      labels:
    -        app: nginx
    -    spec:
    -      containers:
    -      - name: nginx
    -        image: nginx:1.10
    -        ports:
    -        - containerPort: 80
    -' http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/deployments
    -
    -
    -

    Output

    -
    -
    
    -deployment "deployment-example" created
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Deployment",
    -  "apiVersion": "extensions/v1beta1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -    "uid": "4ccca349-9cb1-11e6-9c54-42010a800148",
    -    "resourceVersion": "2118306",
    -    "generation": 1,
    -    "creationTimestamp": "2016-10-28T01:53:19Z",
    -    "labels": {
    -      "app": "nginx"
    -    }
    -  },
    -  "spec": {
    -    "replicas": 3,
    -    "selector": {
    -      "matchLabels": {
    -        "app": "nginx"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "creationTimestamp": null,
    -        "labels": {
    -          "app": "nginx"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "nginx",
    -            "image": "nginx:1.10",
    -            "ports": [
    -              {
    -                "containerPort": 80,
    -                "protocol": "TCP"
    -              }
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "IfNotPresent"
    -          }
    -        ],
    -        "restartPolicy": "Always",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    },
    -    "strategy": {
    -      "type": "RollingUpdate",
    -      "rollingUpdate": {
    -        "maxUnavailable": 1,
    -        "maxSurge": 1
    -      }
    -    },
    -    "revisionHistoryLimit": 10
    -  },
    -  "status": {}
    -}
    -
    -

    create a Deployment

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/namespaces/{namespace}/deployments

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Deployment
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Deployment
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -$ echo 'apiVersion: extensions/v1beta1
    -kind: Deployment
    -metadata:
    -  name: deployment-example
    -spec:
    -  replicas: 3
    -  revisionHistoryLimit: 10
    -  template:
    -    metadata:
    -      labels:
    -        app: nginx
    -    spec:
    -      containers:
    -      - name: nginx
    -        image: nginx:1.11
    -        ports:
    -        - containerPort: 80
    -' | kubectl replace -f -
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X PUT -H 'Content-Type: application/yaml' --data '
    -apiVersion: extensions/v1beta1
    -kind: Deployment
    -metadata:
    -  name: deployment-example
    -spec:
    -  replicas: 3
    -  revisionHistoryLimit: 10
    -  template:
    -    metadata:
    -      labels:
    -        app: nginx
    -    spec:
    -      containers:
    -      - name: nginx
    -        image: nginx:1.11
    -        ports:
    -        - containerPort: 80
    -' http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example
    -
    -
    -

    Output

    -
    -
    
    -deployment "deployment-example" replaced
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Deployment",
    -  "apiVersion": "extensions/v1beta1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -    "uid": "4ccca349-9cb1-11e6-9c54-42010a800148",
    -    "resourceVersion": "2119082",
    -    "generation": 5,
    -    "creationTimestamp": "2016-10-28T01:53:19Z",
    -    "labels": {
    -      "app": "nginx"
    -    }
    -  },
    -  "spec": {
    -    "replicas": 3,
    -    "selector": {
    -      "matchLabels": {
    -        "app": "nginx"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "creationTimestamp": null,
    -        "labels": {
    -          "app": "nginx"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "nginx",
    -            "image": "nginx:1.11",
    -            "ports": [
    -              {
    -                "containerPort": 80,
    -                "protocol": "TCP"
    -              }
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "IfNotPresent"
    -          }
    -        ],
    -        "restartPolicy": "Always",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    },
    -    "strategy": {
    -      "type": "RollingUpdate",
    -      "rollingUpdate": {
    -        "maxUnavailable": 1,
    -        "maxSurge": 1
    -      }
    -    },
    -    "revisionHistoryLimit": 10
    -  },
    -  "status": {
    -    "observedGeneration": 4,
    -    "replicas": 3,
    -    "updatedReplicas": 3,
    -    "availableReplicas": 3
    -  }
    -}
    -
    -

    replace the specified Deployment

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Deployment
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Deployment
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Deployment
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl patch deployment deployment-example -p \
    -    '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:1.11"}]}}}}'
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' --data '
    -{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:1.11"}]}}}}' \
    -    'http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example'
    -
    -
    -

    Output

    -
    -
    
    -"deployment-example" patched
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Deployment",
    -  "apiVersion": "extensions/v1beta1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -    "uid": "5dc3a8e6-b0ee-11e6-aef0-42010af00229",
    -    "resourceVersion": "164489",
    -    "generation": 11,
    -    "creationTimestamp": "2016-11-22T20:00:50Z",
    -    "labels": {
    -      "app": "nginx"
    -    },
    -    "annotations": {
    -      "deployment.kubernetes.io/revision": "5"
    -    }
    -  },
    -  "spec": {
    -    "replicas": 3,
    -    "selector": {
    -      "matchLabels": {
    -        "app": "nginx"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "creationTimestamp": null,
    -        "labels": {
    -          "app": "nginx"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "nginx",
    -            "image": "nginx:1.11",
    -            "ports": [
    -              {
    -                "containerPort": 80,
    -                "protocol": "TCP"
    -              }
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "IfNotPresent"
    -          }
    -        ],
    -        "restartPolicy": "Always",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    },
    -    "strategy": {
    -      "type": "RollingUpdate",
    -      "rollingUpdate": {
    -        "maxUnavailable": 1,
    -        "maxSurge": 1
    -      }
    -    },
    -    "revisionHistoryLimit": 10
    -  },
    -  "status": {
    -    "observedGeneration": 10,
    -    "replicas": 3,
    -    "updatedReplicas": 3,
    -    "availableReplicas": 3
    -  }
    -}
    -
    -

    partially update the specified Deployment

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Deployment
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Deployment
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl delete deployment deployment-example
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X DELETE -H 'Content-Type: application/yaml' --data '
    -gracePeriodSeconds: 0
    -orphanDependents: false
    -' 'http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example'
    -
    -
    -

    Output

    -
    -
    
    -deployment "deployment-example" deleted
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Status",
    -  "apiVersion": "v1",
    -  "metadata": {},
    -  "status": "Success",
    -  "code": 200
    -}
    -
    -

    delete a Deployment

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Deployment
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Deployment

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/deployments

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get deployment deployment-example -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "Deployment",
    -  "apiVersion": "extensions/v1beta1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -    "uid": "1b33145a-9c63-11e6-9c54-42010a800148",
    -    "resourceVersion": "2064726",
    -    "generation": 4,
    -    "creationTimestamp": "2016-10-27T16:33:35Z",
    -    "labels": {
    -      "app": "nginx"
    -    },
    -    "annotations": {
    -      "deployment.kubernetes.io/revision": "1"
    -    }
    -  },
    -  "spec": {
    -    "replicas": 3,
    -    "selector": {
    -      "matchLabels": {
    -        "app": "nginx"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "creationTimestamp": null,
    -        "labels": {
    -          "app": "nginx"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "nginx",
    -            "image": "nginx:1.10",
    -            "ports": [
    -              {
    -                "containerPort": 80,
    -                "protocol": "TCP"
    -              }
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "IfNotPresent"
    -          }
    -        ],
    -        "restartPolicy": "Always",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    },
    -    "strategy": {
    -      "type": "RollingUpdate",
    -      "rollingUpdate": {
    -        "maxUnavailable": 1,
    -        "maxSurge": 1
    -      }
    -    }
    -  },
    -  "status": {
    -    "observedGeneration": 4,
    -    "replicas": 3,
    -    "updatedReplicas": 3,
    -    "availableReplicas": 3
    -  }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Deployment",
    -  "apiVersion": "extensions/v1beta1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -    "uid": "1b33145a-9c63-11e6-9c54-42010a800148",
    -    "resourceVersion": "2064726",
    -    "generation": 4,
    -    "creationTimestamp": "2016-10-27T16:33:35Z",
    -    "labels": {
    -      "app": "nginx"
    -    },
    -    "annotations": {
    -      "deployment.kubernetes.io/revision": "1"
    -    }
    -  },
    -  "spec": {
    -    "replicas": 3,
    -    "selector": {
    -      "matchLabels": {
    -        "app": "nginx"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "creationTimestamp": null,
    -        "labels": {
    -          "app": "nginx"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "nginx",
    -            "image": "nginx:1.10",
    -            "ports": [
    -              {
    -                "containerPort": 80,
    -                "protocol": "TCP"
    -              }
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "IfNotPresent"
    -          }
    -        ],
    -        "restartPolicy": "Always",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    },
    -    "strategy": {
    -      "type": "RollingUpdate",
    -      "rollingUpdate": {
    -        "maxUnavailable": 1,
    -        "maxSurge": 1
    -      }
    -    }
    -  },
    -  "status": {
    -    "observedGeneration": 4,
    -    "replicas": 3,
    -    "updatedReplicas": 3,
    -    "availableReplicas": 3
    -  }
    -}
    -
    -

    read the specified Deployment

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Deployment
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Deployment
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get deployment -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/deployments'
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "List",
    -  "apiVersion": "v1",
    -  "metadata": {},
    -  "items": [
    -    {
    -      "kind": "Deployment",
    -      "apiVersion": "extensions/v1beta1",
    -      "metadata": {
    -        "name": "docs",
    -        "namespace": "default",
    -        "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/docs",
    -        "uid": "ef49e1d2-915e-11e6-be81-42010a80003f",
    -        "resourceVersion": "1924126",
    -        "generation": 21,
    -        "creationTimestamp": "2016-10-13T16:06:00Z",
    -        "labels": {
    -          "run": "docs"
    -        },
    -        "annotations": {
    -          "deployment.kubernetes.io/revision": "10",
    -          "replicatingperfection.net/push-image": "true"
    -        }
    -      },
    -      "spec": {
    -        "replicas": 1,
    -        "selector": {
    -          "matchLabels": {
    -            "run": "docs"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "creationTimestamp": null,
    -            "labels": {
    -              "auto-pushed-image-pwittrock/api-docs": "1477496453",
    -              "run": "docs"
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "docs",
    -                "image": "pwittrock/api-docs:v9",
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "Always"
    -              }
    -            ],
    -            "restartPolicy": "Always",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        },
    -        "strategy": {
    -          "type": "RollingUpdate",
    -          "rollingUpdate": {
    -            "maxUnavailable": 1,
    -            "maxSurge": 1
    -          }
    -        }
    -      },
    -      "status": {
    -        "observedGeneration": 21,
    -        "replicas": 1,
    -        "updatedReplicas": 1,
    -        "availableReplicas": 1
    -      }
    -    },
    -    {
    -      "kind": "Deployment",
    -      "apiVersion": "extensions/v1beta1",
    -      "metadata": {
    -        "name": "deployment-example",
    -        "namespace": "default",
    -        "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -        "uid": "1b33145a-9c63-11e6-9c54-42010a800148",
    -        "resourceVersion": "2064726",
    -        "generation": 4,
    -        "creationTimestamp": "2016-10-27T16:33:35Z",
    -        "labels": {
    -          "app": "nginx"
    -        },
    -        "annotations": {
    -          "deployment.kubernetes.io/revision": "1"
    -        }
    -      },
    -      "spec": {
    -        "replicas": 3,
    -        "selector": {
    -          "matchLabels": {
    -            "app": "nginx"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "creationTimestamp": null,
    -            "labels": {
    -              "app": "nginx"
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "nginx",
    -                "image": "nginx:1.10",
    -                "ports": [
    -                  {
    -                    "containerPort": 80,
    -                    "protocol": "TCP"
    -                  }
    -                ],
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "IfNotPresent"
    -              }
    -            ],
    -            "restartPolicy": "Always",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        },
    -        "strategy": {
    -          "type": "RollingUpdate",
    -          "rollingUpdate": {
    -            "maxUnavailable": 1,
    -            "maxSurge": 1
    -          }
    -        }
    -      },
    -      "status": {
    -        "observedGeneration": 4,
    -        "replicas": 3,
    -        "updatedReplicas": 3,
    -        "availableReplicas": 3
    -      }
    -    }
    -  ]
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "List",
    -  "apiVersion": "v1",
    -  "metadata": {},
    -  "items": [
    -    {
    -      "kind": "Deployment",
    -      "apiVersion": "extensions/v1beta1",
    -      "metadata": {
    -        "name": "docs",
    -        "namespace": "default",
    -        "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/docs",
    -        "uid": "ef49e1d2-915e-11e6-be81-42010a80003f",
    -        "resourceVersion": "1924126",
    -        "generation": 21,
    -        "creationTimestamp": "2016-10-13T16:06:00Z",
    -        "labels": {
    -          "run": "docs"
    -        },
    -        "annotations": {
    -          "deployment.kubernetes.io/revision": "10",
    -          "replicatingperfection.net/push-image": "true"
    -        }
    -      },
    -      "spec": {
    -        "replicas": 1,
    -        "selector": {
    -          "matchLabels": {
    -            "run": "docs"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "creationTimestamp": null,
    -            "labels": {
    -              "auto-pushed-image-pwittrock/api-docs": "1477496453",
    -              "run": "docs"
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "docs",
    -                "image": "pwittrock/api-docs:v9",
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "Always"
    -              }
    -            ],
    -            "restartPolicy": "Always",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        },
    -        "strategy": {
    -          "type": "RollingUpdate",
    -          "rollingUpdate": {
    -            "maxUnavailable": 1,
    -            "maxSurge": 1
    -          }
    -        }
    -      },
    -      "status": {
    -        "observedGeneration": 21,
    -        "replicas": 1,
    -        "updatedReplicas": 1,
    -        "availableReplicas": 1
    -      }
    -    },
    -    {
    -      "kind": "Deployment",
    -      "apiVersion": "extensions/v1beta1",
    -      "metadata": {
    -        "name": "deployment-example",
    -        "namespace": "default",
    -        "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -        "uid": "1b33145a-9c63-11e6-9c54-42010a800148",
    -        "resourceVersion": "2064726",
    -        "generation": 4,
    -        "creationTimestamp": "2016-10-27T16:33:35Z",
    -        "labels": {
    -          "app": "nginx"
    -        },
    -        "annotations": {
    -          "deployment.kubernetes.io/revision": "1"
    -        }
    -      },
    -      "spec": {
    -        "replicas": 3,
    -        "selector": {
    -          "matchLabels": {
    -            "app": "nginx"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "creationTimestamp": null,
    -            "labels": {
    -              "app": "nginx"
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "nginx",
    -                "image": "nginx:1.10",
    -                "ports": [
    -                  {
    -                    "containerPort": 80,
    -                    "protocol": "TCP"
    -                  }
    -                ],
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "IfNotPresent"
    -              }
    -            ],
    -            "restartPolicy": "Always",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        },
    -        "strategy": {
    -          "type": "RollingUpdate",
    -          "rollingUpdate": {
    -            "maxUnavailable": 1,
    -            "maxSurge": 1
    -          }
    -        }
    -      },
    -      "status": {
    -        "observedGeneration": 4,
    -        "replicas": 3,
    -        "updatedReplicas": 3,
    -        "availableReplicas": 3
    -      }
    -    }
    -  ]
    -}
    -
    -

    list or watch objects of kind Deployment

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/deployments

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DeploymentList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Deployment

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/deployments

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DeploymentList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get deployment deployment-example --watch -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/apis/extensions/v1beta1/watch/namespaces/default/deployments/deployment-example'
    -
    -
    -

    Output

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Deployment",
    -        "apiVersion": "extensions/v1beta1",
    -        "metadata": {
    -            "name": "deployment-example",
    -            "namespace": "default",
    -            "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -            "uid": "64c12290-9cbf-11e6-9c54-42010a800148",
    -            "resourceVersion": "2128095",
    -            "generation": 2,
    -            "creationTimestamp": "2016-10-28T03:34:12Z",
    -            "labels": {
    -                "app": "nginx"
    -            },
    -            "annotations": {
    -                "deployment.kubernetes.io/revision": "3"
    -            }
    -        },
    -        "spec": {
    -            "replicas": 3,
    -            "selector": {
    -                "matchLabels": {
    -                    "app": "nginx"
    -                }
    -            },
    -            "template": {
    -                "metadata": {
    -                    "creationTimestamp": null,
    -                    "labels": {
    -                        "app": "nginx"
    -                    }
    -                },
    -                "spec": {
    -                    "containers": [
    -                        {
    -                            "name": "nginx",
    -                            "image": "nginx:1.10",
    -                            "ports": [
    -                                {
    -                                    "containerPort": 80,
    -                                    "protocol": "TCP"
    -                                }
    -                            ],
    -                            "resources": {
    -                            },
    -                            "terminationMessagePath": "/dev/termination-log",
    -                            "imagePullPolicy": "IfNotPresent"
    -                        }
    -                    ],
    -                    "restartPolicy": "Always",
    -                    "terminationGracePeriodSeconds": 30,
    -                    "dnsPolicy": "ClusterFirst",
    -                    "securityContext": {
    -                    }
    -                }
    -            },
    -            "strategy": {
    -                "type": "RollingUpdate",
    -                "rollingUpdate": {
    -                    "maxUnavailable": 1,
    -                    "maxSurge": 1
    -                }
    -            }
    -        },
    -        "status": {
    -            "observedGeneration": 2,
    -            "replicas": 3,
    -            "updatedReplicas": 3,
    -            "availableReplicas": 3
    -        }
    -    }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Deployment",
    -        "apiVersion": "extensions/v1beta1",
    -        "metadata": {
    -            "name": "deployment-example",
    -            "namespace": "default",
    -            "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    -            "uid": "64c12290-9cbf-11e6-9c54-42010a800148",
    -            "resourceVersion": "2128095",
    -            "generation": 2,
    -            "creationTimestamp": "2016-10-28T03:34:12Z",
    -            "labels": {
    -                "app": "nginx"
    -            },
    -            "annotations": {
    -                "deployment.kubernetes.io/revision": "3"
    -            }
    -        },
    -        "spec": {
    -            "replicas": 3,
    -            "selector": {
    -                "matchLabels": {
    -                    "app": "nginx"
    -                }
    -            },
    -            "template": {
    -                "metadata": {
    -                    "creationTimestamp": null,
    -                    "labels": {
    -                        "app": "nginx"
    -                    }
    -                },
    -                "spec": {
    -                    "containers": [
    -                        {
    -                            "name": "nginx",
    -                            "image": "nginx:1.10",
    -                            "ports": [
    -                                {
    -                                    "containerPort": 80,
    -                                    "protocol": "TCP"
    -                                }
    -                            ],
    -                            "resources": {
    -                            },
    -                            "terminationMessagePath": "/dev/termination-log",
    -                            "imagePullPolicy": "IfNotPresent"
    -                        }
    -                    ],
    -                    "restartPolicy": "Always",
    -                    "terminationGracePeriodSeconds": 30,
    -                    "dnsPolicy": "ClusterFirst",
    -                    "securityContext": {
    -                    }
    -                }
    -            },
    -            "strategy": {
    -                "type": "RollingUpdate",
    -                "rollingUpdate": {
    -                    "maxUnavailable": 1,
    -                    "maxSurge": 1
    -                }
    -            }
    -        },
    -        "status": {
    -            "observedGeneration": 2,
    -            "replicas": 3,
    -            "updatedReplicas": 3,
    -            "availableReplicas": 3
    -        }
    -    }
    -}
    -
    -

    watch changes to an object of kind Deployment

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/deployments/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Deployment
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Deployment

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/deployments

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Deployment

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/deployments

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Deployment

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Deployment
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Deployment
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Deployment

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Deployment
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Deployment
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Deployment

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Deployment
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Deployment
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Deployment
    OK
    -

    Misc Operations

    -

    See supported operations below...

    -

    Read Scale

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read scale of the specified Scale

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/scale

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Scale
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Scale
    OK
    -

    Replace Scale

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace scale of the specified Scale

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/scale

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Scale
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Scale
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Scale
    OK
    -

    Patch Scale

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update scale of the specified Scale

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/scale

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Scale
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Scale
    OK
    -

    Rollback

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create rollback of a DeploymentRollback

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/rollback

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the DeploymentRollback
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeploymentRollback
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    DeploymentRollback
    OK
    -
    -

    Job v1

    -
    -

    Job Config to print pi up to 2000 digits (then exit).

    -
    -
    
    -apiVersion: batch/v1
    -kind: Job
    -metadata:
    -  # Unique key of the Job instance
    -  name: example-job
    -spec:
    -  template:
    -    metadata:
    -      name: example-job
    -    spec:
    -      containers:
    -      - name: pi
    -        image: perl
    -        command: ["perl"]
    -        args: ["-Mbignum=bpi", "-wle", "print bpi(2000)"]
    -      # Do not restart containers after they exit
    -      restartPolicy: Never
    -
    -
    -

    Job Config to print pi up to 2000 digits (then exit).

    -
    -
    
    -apiVersion: batch/v1
    -kind: Job
    -metadata:
    -  # Unique key of the Job instance
    -  name: example-job
    -spec:
    -  template:
    -    metadata:
    -      name: example-job
    -    spec:
    -      containers:
    -      - name: pi
    -        image: perl
    -        command: ["perl"]
    -        args: ["-Mbignum=bpi", "-wle", "print bpi(2000)"]
    -      # Do not restart containers after they exit
    -      restartPolicy: Never
    -
    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Batchv1Job
    - - - -

    Job represents the configuration of a single job.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    JobSpec
    Spec is a structure defining the expected behavior of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    JobStatus
    Status is a structure describing current status of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    JobSpec v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    activeDeadlineSeconds
    integer
    Optional duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer
    completions
    integer
    Completions specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: http://kubernetes.io/docs/user-guide/jobs
    manualSelector
    boolean
    ManualSelector controls generation of pod labels and pod selectors. Leave manualSelector unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see manualSelector=true in jobs that were created with the old extensions/v1beta1 API. More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md
    parallelism
    integer
    Parallelism specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: http://kubernetes.io/docs/user-guide/jobs
    selector
    LabelSelector
    Selector is a label query over pods that should match the pod count. Normally, the system sets this field for you. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    template
    PodTemplateSpec
    Template is the object that describes the pod that will be created when executing a job. More info: http://kubernetes.io/docs/user-guide/jobs
    -

    JobStatus v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    active
    integer
    Active is the number of actively running pods.
    completionTime
    Time
    CompletionTime represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
    conditions
    JobCondition array
    Conditions represent the latest available observations of an object's current state. More info: http://kubernetes.io/docs/user-guide/jobs
    failed
    integer
    Failed is the number of pods which reached Phase Failed.
    startTime
    Time
    StartTime represents time when the job was acknowledged by the Job Manager. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
    succeeded
    integer
    Succeeded is the number of pods which reached Phase Succeeded.
    -

    JobList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Job array
    Items is the list of Job.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -$ echo 'apiVersion: batch/v1
    -kind: Job
    -metadata:
    -  name: example-job
    -spec:
    -  template:
    -    metadata:
    -      name: example-job
    -    spec:
    -      containers:
    -      - name: pi
    -        image: perl
    -        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
    -      restartPolicy: Never
    -' | kubectl create -f -
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X POST -H 'Content-Type: application/yaml' --data '
    -apiVersion: batch/v1
    -kind: Job
    -metadata:
    -  name: example-job
    -spec:
    -  template:
    -    metadata:
    -      name: example-job
    -    spec:
    -      containers:
    -      - name: pi
    -        image: perl
    -        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
    -      restartPolicy: Never
    -' http://127.0.0.1:8001/apis/batch/v1/namespaces/default/jobs
    -
    -
    -

    Output

    -
    -
    
    -job "example-job" created
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7479",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {}
    -}
    -
    -

    create a Job

    -

    HTTP Request

    -

    POST /apis/batch/v1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Job

    -

    HTTP Request

    -

    PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Job

    -

    HTTP Request

    -

    PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl delete job example-job
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X DELETE -H 'Content-Type: application/yaml' --data '
    -gracePeriodSeconds: 0
    -orphanDependents: false
    -' 'http://127.0.0.1:8001/apis/batch/v1/namespaces/default/jobs/example-job'
    -
    -
    -

    Output

    -
    -
    
    -job "example-job" deleted
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Status",
    -  "apiVersion": "v1",
    -  "metadata": {},
    -  "status": "Success",
    -  "code": 200
    -}
    -
    -

    delete a Job

    -

    HTTP Request

    -

    DELETE /apis/batch/v1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Job

    -

    HTTP Request

    -

    DELETE /apis/batch/v1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job example-job -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET http://127.0.0.1:8001/apis/batch/v1/namespaces/default/jobs/example-job
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7482",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {
    -    "startTime": "2016-11-04T18:45:25Z",
    -    "active": 1
    -  }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7482",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {
    -    "startTime": "2016-11-04T18:45:25Z",
    -    "active": 1
    -  }
    -}
    -
    -

    read the specified Job

    -

    HTTP Request

    -

    GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/apis/batch/v1/namespaces/default/jobs'
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "JobList",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs",
    -    "resourceVersion": "7589"
    -  },
    -  "items": [
    -    {
    -      "metadata": {
    -        "name": "",
    -        "namespace": "default",
    -        "selfLink": "/apis/batch/v1/namespaces/default/jobs/",
    -        "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -        "resourceVersion": "7482",
    -        "creationTimestamp": "2016-11-04T18:45:25Z"
    -      },
    -      "spec": {
    -        "parallelism": 1,
    -        "completions": 1,
    -        "selector": {
    -          "matchLabels": {
    -            "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "name": "",
    -            "creationTimestamp": null,
    -            "labels": {
    -              "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -              "job-name": ""
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "pi",
    -                "image": "perl",
    -                "command": [
    -                  "perl",
    -                  "-Mbignum=bpi",
    -                  "-wle",
    -                  "print bpi(2000)"
    -                ],
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "Always"
    -              }
    -            ],
    -            "restartPolicy": "Never",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        }
    -      },
    -      "status": {
    -        "startTime": "2016-11-04T18:45:25Z",
    -        "active": 1
    -      }
    -    }
    -  ]
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "JobList",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs",
    -    "resourceVersion": "7589"
    -  },
    -  "items": [
    -    {
    -      "metadata": {
    -        "name": "",
    -        "namespace": "default",
    -        "selfLink": "/apis/batch/v1/namespaces/default/jobs/",
    -        "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -        "resourceVersion": "7482",
    -        "creationTimestamp": "2016-11-04T18:45:25Z"
    -      },
    -      "spec": {
    -        "parallelism": 1,
    -        "completions": 1,
    -        "selector": {
    -          "matchLabels": {
    -            "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "name": "",
    -            "creationTimestamp": null,
    -            "labels": {
    -              "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -              "job-name": ""
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "pi",
    -                "image": "perl",
    -                "command": [
    -                  "perl",
    -                  "-Mbignum=bpi",
    -                  "-wle",
    -                  "print bpi(2000)"
    -                ],
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "Always"
    -              }
    -            ],
    -            "restartPolicy": "Never",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        }
    -      },
    -      "status": {
    -        "startTime": "2016-11-04T18:45:25Z",
    -        "active": 1
    -      }
    -    }
    -  ]
    -}
    -
    -

    list or watch objects of kind Job

    -

    HTTP Request

    -

    GET /apis/batch/v1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    JobList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Job

    -

    HTTP Request

    -

    GET /apis/batch/v1/jobs

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    JobList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job example-job --watch -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/apis/batch/v1/watch/namespaces/default/jobs/example-job'
    -
    -
    -

    Output

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Job",
    -        "apiVersion": "batch/v1",
    -        "metadata": {
    -            "name": "example-job",
    -            "namespace": "default",
    -            "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -            "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -            "resourceVersion": "7482",
    -            "creationTimestamp": "2016-11-04T18:45:25Z"
    -        },
    -        "spec": {
    -            "parallelism": 1,
    -            "completions": 1,
    -            "selector": {
    -                "matchLabels": {
    -                    "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -                }
    -            },
    -            "template": {
    -                "metadata": {
    -                    "name": "example-job",
    -                    "creationTimestamp": null,
    -                    "labels": {
    -                        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -                        "job-name": "example-job"
    -                    }
    -                },
    -                "spec": {
    -                    "containers": [
    -                        {
    -                            "name": "pi",
    -                            "image": "perl",
    -                            "command": [
    -                                "perl",
    -                                "-Mbignum=bpi",
    -                                "-wle",
    -                                "print bpi(2000)"
    -                            ],
    -                            "resources": {
    -                            },
    -                            "terminationMessagePath": "/dev/termination-log",
    -                            "imagePullPolicy": "Always"
    -                        }
    -                    ],
    -                    "restartPolicy": "Never",
    -                    "terminationGracePeriodSeconds": 30,
    -                    "dnsPolicy": "ClusterFirst",
    -                    "securityContext": {
    -                    }
    -                }
    -            }
    -        },
    -        "status": {
    -            "startTime": "2016-11-04T18:45:25Z",
    -            "active": 1
    -        }
    -    }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Job",
    -        "apiVersion": "batch/v1",
    -        "metadata": {
    -            "name": "example-job",
    -            "namespace": "default",
    -            "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -            "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -            "resourceVersion": "7482",
    -            "creationTimestamp": "2016-11-04T18:45:25Z"
    -        },
    -        "spec": {
    -            "parallelism": 1,
    -            "completions": 1,
    -            "selector": {
    -                "matchLabels": {
    -                    "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -                }
    -            },
    -            "template": {
    -                "metadata": {
    -                    "name": "example-job",
    -                    "creationTimestamp": null,
    -                    "labels": {
    -                        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -                        "job-name": "example-job"
    -                    }
    -                },
    -                "spec": {
    -                    "containers": [
    -                        {
    -                            "name": "pi",
    -                            "image": "perl",
    -                            "command": [
    -                                "perl",
    -                                "-Mbignum=bpi",
    -                                "-wle",
    -                                "print bpi(2000)"
    -                            ],
    -                            "resources": {
    -                            },
    -                            "terminationMessagePath": "/dev/termination-log",
    -                            "imagePullPolicy": "Always"
    -                        }
    -                    ],
    -                    "restartPolicy": "Never",
    -                    "terminationGracePeriodSeconds": 30,
    -                    "dnsPolicy": "ClusterFirst",
    -                    "securityContext": {
    -                    }
    -                }
    -            }
    -        },
    -        "status": {
    -            "startTime": "2016-11-04T18:45:25Z",
    -            "active": 1
    -        }
    -    }
    -}
    -
    -

    watch changes to an object of kind Job

    -

    HTTP Request

    -

    GET /apis/batch/v1/watch/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Job

    -

    HTTP Request

    -

    GET /apis/batch/v1/watch/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Job

    -

    HTTP Request

    -

    GET /apis/batch/v1/watch/jobs

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Job

    -

    HTTP Request

    -

    PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Job

    -

    HTTP Request

    -

    GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Job

    -

    HTTP Request

    -

    PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -
    -

    Pod v1

    -
    -

    Pod Config to print "Hello World".

    -
    -
    
    -apiVersion: v1
    -kind: Pod
    -metadata:
    -  name: pod-example
    -spec:
    -  containers:
    -  - image: ubuntu:trusty
    -    command: ["echo"]
    -    args: ["Hello World"]
    -
    -
    -

    Pod Config to print "Hello World".

    -
    -
    
    -apiVersion: v1
    -kind: Pod
    -metadata:
    -  name: pod-example
    -spec:
    -  containers:
    -  - image: ubuntu:trusty
    -    command: ["echo"]
    -    args: ["Hello World"]
    -
    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Pod
    - - - - - - -

    Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    PodSpec
    Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    PodStatus
    Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    PodSpec v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    activeDeadlineSeconds
    integer
    Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.
    containers
    Container array
    List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers
    dnsPolicy
    string
    Set DNS policy for containers within the pod. One of 'ClusterFirst' or 'Default'. Defaults to "ClusterFirst".
    hostIPC
    boolean
    Use the host's ipc namespace. Optional: Default to false.
    hostNetwork
    boolean
    Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.
    hostPID
    boolean
    Use the host's pid namespace. Optional: Default to false.
    hostname
    string
    Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.
    imagePullSecrets
    LocalObjectReference array
    ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod
    nodeName
    string
    NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.
    nodeSelector
    object
    NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: http://kubernetes.io/docs/user-guide/node-selection
    restartPolicy
    string
    Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: http://kubernetes.io/docs/user-guide/pod-states#restartpolicy
    securityContext
    PodSecurityContext
    SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.
    serviceAccount
    string
    DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.
    serviceAccountName
    string
    ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md
    subdomain
    string
    If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all.
    terminationGracePeriodSeconds
    integer
    Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.
    volumes
    Volume array
    List of volumes that can be mounted by containers belonging to the pod. More info: http://kubernetes.io/docs/user-guide/volumes
    -

    PodStatus v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    conditions
    PodCondition array
    Current service state of pod. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions
    containerStatuses
    ContainerStatus array
    The list has one entry per container in the manifest. Each entry is currently the output of docker inspect. More info: http://kubernetes.io/docs/user-guide/pod-states#container-statuses
    hostIP
    string
    IP address of the host to which the pod is assigned. Empty if not yet scheduled.
    message
    string
    A human readable message indicating details about why the pod is in this condition.
    phase
    string
    Current condition of the pod. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-phase
    podIP
    string
    IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.
    reason
    string
    A brief CamelCase message indicating details about why the pod is in this state. e.g. 'OutOfDisk'
    startTime
    Time
    RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.
    -

    PodList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Pod array
    List of pods. More info: http://kubernetes.io/docs/user-guide/pods
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a Pod

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/pods

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Pod
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Pod
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Pod

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Pod
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Pod
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Pod

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Pod
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a Pod

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Pod

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/pods

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified Pod

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Pod
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Pod

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/pods

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Pod

    -

    HTTP Request

    -

    GET /api/v1/pods

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind Pod

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Pod

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/pods

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Pod

    -

    HTTP Request

    -

    GET /api/v1/watch/pods

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Pod

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/pods/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Pod
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Pod

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/pods/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Pod
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Pod

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/pods/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Pod
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Pod
    OK
    -

    Proxy Operations

    -

    See supported operations below...

    -

    Create Connect Portforward

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect POST requests to portforward of Pod

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/pods/{name}/portforward

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect POST requests to proxy of Pod

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/pods/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect POST requests to proxy of Pod

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy POST requests to Pod

    -

    HTTP Request

    -

    POST /api/v1/proxy/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy POST requests to Pod

    -

    HTTP Request

    -

    POST /api/v1/proxy/namespaces/{namespace}/pods/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect DELETE requests to proxy of Pod

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/pods/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect DELETE requests to proxy of Pod

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy DELETE requests to Pod

    -

    HTTP Request

    -

    DELETE /api/v1/proxy/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy DELETE requests to Pod

    -

    HTTP Request

    -

    DELETE /api/v1/proxy/namespaces/{namespace}/pods/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Connect Portforward

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect GET requests to portforward of Pod

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/pods/{name}/portforward

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect GET requests to proxy of Pod

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/pods/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect GET requests to proxy of Pod

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy GET requests to Pod

    -

    HTTP Request

    -

    GET /api/v1/proxy/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy GET requests to Pod

    -

    HTTP Request

    -

    GET /api/v1/proxy/namespaces/{namespace}/pods/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Head Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect HEAD requests to proxy of Pod

    -

    HTTP Request

    -

    HEAD /api/v1/namespaces/{namespace}/pods/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Head Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect HEAD requests to proxy of Pod

    -

    HTTP Request

    -

    HEAD /api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect PUT requests to proxy of Pod

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/pods/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect PUT requests to proxy of Pod

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to pod.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy PUT requests to Pod

    -

    HTTP Request

    -

    PUT /api/v1/proxy/namespaces/{namespace}/pods/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy PUT requests to Pod

    -

    HTTP Request

    -

    PUT /api/v1/proxy/namespaces/{namespace}/pods/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Misc Operations

    -

    See supported operations below...

    -

    Read Log

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read log of the specified Pod

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/pods/{name}/log

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Pod
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    containerThe container for which to stream logs. Defaults to only container if there is one container in the pod.
    followFollow the log stream of the pod. Defaults to false.
    limitBytesIf set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit.
    prettyIf 'true', then the output is pretty printed.
    previousReturn previous terminated container logs. Defaults to false.
    sinceSecondsA relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.
    sinceTimeAn RFC3339 timestamp from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.
    tailLinesIf set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime
    timestampsIf true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -
    -

    ReplicaSet v1beta1

    -
    -

    ReplicaSet Config to run 3 nginx instances.

    -
    -
    
    -apiVersion: extensions/v1beta1
    -kind: ReplicaSet
    -metadata:
    -  # Unique key of the ReplicaSet instance
    -  name: replicaset-example
    -spec:
    -  # 3 Pods should exist at all times.
    -  replicas: 3
    -  template:
    -    metadata:
    -      labels:
    -        app: nginx
    -    spec:
    -      containers:
    -      # Run the nginx image
    -      - name: nginx
    -        image: nginx:1.10
    -
    -
    -

    ReplicaSet Config to run 3 nginx instances.

    -
    -
    
    -apiVersion: extensions/v1beta1
    -kind: ReplicaSet
    -metadata:
    -  # Unique key of the ReplicaSet instance
    -  name: replicaset-example
    -spec:
    -  # 3 Pods should exist at all times.
    -  replicas: 3
    -  template:
    -    metadata:
    -      labels:
    -        app: nginx
    -    spec:
    -      containers:
    -      # Run the nginx image
    -      - name: nginx
    -        image: nginx:1.10
    -
    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Extensionsv1beta1ReplicaSet
    - - - - - - -

    ReplicaSet represents the configuration of a ReplicaSet.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    ReplicaSetSpec
    Spec defines the specification of the desired behavior of the ReplicaSet. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    ReplicaSetStatus
    Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    ReplicaSetSpec v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    minReadySeconds
    integer
    Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)
    replicas
    integer
    Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller
    selector
    LabelSelector
    Selector is a label query over pods that should match the replica count. If the selector is empty, it is defaulted to the labels present on the pod template. Label keys and values that must match in order to be controlled by this replica set. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    template
    PodTemplateSpec
    Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template
    -

    ReplicaSetStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    availableReplicas
    integer
    The number of available replicas (ready for at least minReadySeconds) for this replica set.
    conditions
    ReplicaSetCondition array
    Represents the latest available observations of a replica set's current state.
    fullyLabeledReplicas
    integer
    The number of pods that have labels matching the labels of the pod template of the replicaset.
    observedGeneration
    integer
    ObservedGeneration reflects the generation of the most recently observed ReplicaSet.
    readyReplicas
    integer
    The number of ready replicas for this replica set.
    replicas
    integer
    Replicas is the most recently oberved number of replicas. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller
    -

    ReplicaSetList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ReplicaSet array
    List of ReplicaSets. More info: http://kubernetes.io/docs/user-guide/replication-controller
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a ReplicaSet

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/namespaces/{namespace}/replicasets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ReplicaSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSet
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified ReplicaSet

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicaSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ReplicaSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSet
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified ReplicaSet

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicaSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSet
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a ReplicaSet

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicaSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of ReplicaSet

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/replicasets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ReplicaSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicaSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSet
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ReplicaSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/replicasets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSetList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ReplicaSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/replicasets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSetList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind ReplicaSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/replicasets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicaSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ReplicaSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/replicasets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ReplicaSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/replicasets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified ReplicaSet

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicaSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSet
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified ReplicaSet

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicaSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSet
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified ReplicaSet

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicaSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ReplicaSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicaSet
    OK
    -

    Misc Operations

    -

    See supported operations below...

    -

    Read Scale

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read scale of the specified Scale

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/scale

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Scale
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Scale
    OK
    -

    Replace Scale

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace scale of the specified Scale

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/scale

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Scale
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Scale
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Scale
    OK
    -

    Patch Scale

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update scale of the specified Scale

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/scale

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Scale
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Scale
    OK
    -
    -

    ReplicationController v1

    -
    -

    ReplicationController Config to run 3 nginx instances.

    -
    -
    
    -apiVersion: v1
    -kind: ReplicationController
    -metadata:
    -  # Unique key of the ReplicationController instance
    -  name: replicationcontroller-example
    -spec:
    -  # 3 Pods should exist at all times.
    -  replicas: 3
    -  template:
    -    metadata:
    -      labels:
    -        app: nginx
    -    spec:
    -      containers:
    -      # Run the nginx image
    -      - name: nginx
    -        image: nginx:1.10
    -
    -
    -

    ReplicationController Config to run 3 nginx instances.

    -
    -
    
    -apiVersion: v1
    -kind: ReplicationController
    -metadata:
    -  # Unique key of the ReplicationController instance
    -  name: replicationcontroller-example
    -spec:
    -  # 3 Pods should exist at all times.
    -  replicas: 3
    -  template:
    -    metadata:
    -      labels:
    -        app: nginx
    -    spec:
    -      containers:
    -      # Run the nginx image
    -      - name: nginx
    -        image: nginx:1.10
    -
    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ReplicationController
    - - - - - - -

    ReplicationController represents the configuration of a replication controller.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    ReplicationControllerSpec
    Spec defines the specification of the desired behavior of the replication controller. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    ReplicationControllerStatus
    Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    ReplicationControllerSpec v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    minReadySeconds
    integer
    Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)
    replicas
    integer
    Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller
    selector
    object
    Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    template
    PodTemplateSpec
    Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template
    -

    ReplicationControllerStatus v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    availableReplicas
    integer
    The number of available replicas (ready for at least minReadySeconds) for this replication controller.
    conditions
    ReplicationControllerCondition array
    Represents the latest available observations of a replication controller's current state.
    fullyLabeledReplicas
    integer
    The number of pods that have labels matching the labels of the pod template of the replication controller.
    observedGeneration
    integer
    ObservedGeneration reflects the generation of the most recently observed replication controller.
    readyReplicas
    integer
    The number of ready replicas for this replication controller.
    replicas
    integer
    Replicas is the most recently oberved number of replicas. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller
    -

    ReplicationControllerList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ReplicationController array
    List of replication controllers. More info: http://kubernetes.io/docs/user-guide/replication-controller
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a ReplicationController

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/replicationcontrollers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ReplicationController
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationController
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified ReplicationController

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicationController
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ReplicationController
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationController
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified ReplicationController

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/replicationcontrollers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicationController
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationController
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a ReplicationController

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/replicationcontrollers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicationController
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of ReplicationController

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/replicationcontrollers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ReplicationController

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/replicationcontrollers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicationController
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationController
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ReplicationController

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/replicationcontrollers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationControllerList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ReplicationController

    -

    HTTP Request

    -

    GET /api/v1/replicationcontrollers

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationControllerList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind ReplicationController

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicationController
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ReplicationController

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/replicationcontrollers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ReplicationController

    -

    HTTP Request

    -

    GET /api/v1/watch/replicationcontrollers

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified ReplicationController

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicationController
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationController
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified ReplicationController

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicationController
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationController
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified ReplicationController

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ReplicationController
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ReplicationController
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ReplicationController
    OK
    -
    -

    StatefulSet v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Appsv1beta1StatefulSet
    -

    StatefulSet represents a set of pods with consistent identities. Identities are defined as:

    -
      -
    • Network: A single stable DNS and hostname.
    • -
    • Storage: As many VolumeClaims as requested. -The StatefulSet guarantees that a given network identity will always map to the same storage identity.
    • -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    spec
    StatefulSetSpec
    Spec defines the desired identities of pods in this set.
    status
    StatefulSetStatus
    Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.
    -

    StatefulSetSpec v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    replicas
    integer
    Replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.
    selector
    LabelSelector
    Selector is a label query over pods that should match the replica count. If empty, defaulted to labels on the pod template. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    serviceName
    string
    ServiceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller.
    template
    PodTemplateSpec
    Template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.
    volumeClaimTemplates
    PersistentVolumeClaim array
    VolumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.
    -

    StatefulSetStatus v1beta1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    observedGeneration
    integer
    most recent generation observed by this autoscaler.
    replicas
    integer
    Replicas is the number of actual replicas.
    -

    StatefulSetList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    StatefulSet array
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a StatefulSet

    -

    HTTP Request

    -

    POST /apis/apps/v1beta1/namespaces/{namespace}/statefulsets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    StatefulSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSet
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified StatefulSet

    -

    HTTP Request

    -

    PUT /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StatefulSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    StatefulSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSet
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified StatefulSet

    -

    HTTP Request

    -

    PATCH /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StatefulSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSet
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a StatefulSet

    -

    HTTP Request

    -

    DELETE /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StatefulSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of StatefulSet

    -

    HTTP Request

    -

    DELETE /apis/apps/v1beta1/namespaces/{namespace}/statefulsets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified StatefulSet

    -

    HTTP Request

    -

    GET /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StatefulSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSet
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind StatefulSet

    -

    HTTP Request

    -

    GET /apis/apps/v1beta1/namespaces/{namespace}/statefulsets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSetList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind StatefulSet

    -

    HTTP Request

    -

    GET /apis/apps/v1beta1/statefulsets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSetList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind StatefulSet

    -

    HTTP Request

    -

    GET /apis/apps/v1beta1/watch/namespaces/{namespace}/statefulsets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StatefulSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of StatefulSet

    -

    HTTP Request

    -

    GET /apis/apps/v1beta1/watch/namespaces/{namespace}/statefulsets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of StatefulSet

    -

    HTTP Request

    -

    GET /apis/apps/v1beta1/watch/statefulsets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified StatefulSet

    -

    HTTP Request

    -

    PATCH /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StatefulSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSet
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified StatefulSet

    -

    HTTP Request

    -

    GET /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StatefulSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSet
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified StatefulSet

    -

    HTTP Request

    -

    PUT /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StatefulSet
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    StatefulSet
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StatefulSet
    OK
    -

    DISCOVERY & LOAD BALANCING

    -

    Discovery and Load Balancing resources are responsible for stitching your workloads together into an accessible Loadbalanced Service. By default, -Workloads are only accessible within the cluster, and they must be exposed externally using a either -a LoadBalancer or NodePort Service. For development, internally accessible -Workloads can be accessed via proxy through the api master using the kubectl proxy command.

    -

    Common resource types:

    -
      -
    • Services for providing a single ip endpoint loadbalanced across multiple Workload replicas.
    • -
    • Ingress for providing a https(s) endpoint http(s) routed to one or more Services
    • -
    -
    -
    -

    Endpoints v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Endpoints
    -

    Endpoints is a collection of endpoints that implement the actual service. Example: - Name: "mysvc", - Subsets: [ - { - Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], - Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] - }, - { - Addresses: [{"ip": "10.10.3.3"}], - Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] - }, - ]

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    subsets
    EndpointSubset array
    The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.
    -

    EndpointsList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Endpoints array
    List of endpoints.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create Endpoints

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/endpoints

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Endpoints
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Endpoints
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Endpoints

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/endpoints/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Endpoints
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Endpoints
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Endpoints
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Endpoints

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/endpoints/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Endpoints
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Endpoints
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete Endpoints

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/endpoints/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Endpoints
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Endpoints

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/endpoints

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified Endpoints

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/endpoints/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Endpoints
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Endpoints
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Endpoints

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/endpoints

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    EndpointsList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Endpoints

    -

    HTTP Request

    -

    GET /api/v1/endpoints

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    EndpointsList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind Endpoints

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/endpoints/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Endpoints
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Endpoints

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/endpoints

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Endpoints

    -

    HTTP Request

    -

    GET /api/v1/watch/endpoints

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    Ingress v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Extensionsv1beta1Ingress
    -

    Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    IngressSpec
    Spec is the desired state of the Ingress. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    IngressStatus
    Status is the current state of the Ingress. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    IngressSpec v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    backend
    IngressBackend
    A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default.
    rules
    IngressRule array
    A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.
    tls
    IngressTLS array
    TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.
    -

    IngressStatus v1beta1

    - - - - - - - - - - - - - - - -
    FieldDescription
    loadBalancer
    LoadBalancerStatus
    LoadBalancer contains the current status of the load-balancer.
    -

    IngressList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Ingress array
    Items is the list of Ingress.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create an Ingress

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/namespaces/{namespace}/ingresses

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Ingress
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Ingress
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Ingress

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Ingress
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Ingress
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Ingress
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Ingress

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Ingress
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Ingress
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete an Ingress

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Ingress
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Ingress

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/ingresses

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified Ingress

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Ingress
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Ingress
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Ingress

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/ingresses

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    IngressList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Ingress

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/ingresses

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    IngressList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind Ingress

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Ingress
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Ingress

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Ingress

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/ingresses

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Ingress

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Ingress
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Ingress
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Ingress

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Ingress
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Ingress
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Ingress

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Ingress
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Ingress
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Ingress
    OK
    -
    -

    Service v1

    -
    -

    Service Config to load balance traffic across all Pods with the app=nginx label. Receives on and sends to port 80. Exposes an externally accessible endpoint.

    -
    -
    
    -kind: Service
    -apiVersion: v1
    -metadata:
    -  # Unique key of the Service instance
    -  name: service-example
    -spec:
    -  ports:
    -  # Accept traffic sent to port 80
    -  - name: http
    -    port: 80
    -    targetPort: 80
    -  selector:
    -    # Loadbalance traffic across Pods matching
    -    # this label selector
    -    app: nginx
    -  # Create an HA proxy in the cloud provider
    -  # with an External IP address - *Only supported
    -  # by some cloud providers*
    -  type: LoadBalancer
    -
    -
    -

    Service Config to load balance traffic across all Pods with the app=nginx label. Receives on and sends to port 80. Exposes an externally accessible endpoint.

    -
    -
    
    -kind: Service
    -apiVersion: v1
    -metadata:
    -  # Unique key of the Service instance
    -  name: service-example
    -spec:
    -  ports:
    -  # Accept traffic sent to port 80
    -  - name: http
    -    port: 80
    -    targetPort: 80
    -  selector:
    -    # Loadbalance traffic across Pods matching
    -    # this label selector
    -    app: nginx
    -  # Create an HA proxy in the cloud provider
    -  # with an External IP address - *Only supported
    -  # by some cloud providers*
    -  type: LoadBalancer
    -
    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Service
    -

    Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    ServiceSpec
    Spec defines the behavior of a service. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    ServiceStatus
    Most recently observed status of the service. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    ServiceSpec v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    clusterIP
    string
    clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are "None", empty string (""), or a valid IP address. "None" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
    deprecatedPublicIPs
    string array
    deprecatedPublicIPs is deprecated and replaced by the externalIPs field with almost the exact same semantics. This field is retained in the v1 API for compatibility until at least 8/20/2016. It will be removed from any new API revisions. If both deprecatedPublicIPs and externalIPs are set, deprecatedPublicIPs is used.
    externalIPs
    string array
    externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. A previous form of this functionality exists as the deprecatedPublicIPs field. When using this field, callers should also clear the deprecatedPublicIPs field.
    externalName
    string
    externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid DNS name and requires Type to be ExternalName.
    loadBalancerIP
    string
    Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature.
    loadBalancerSourceRanges
    string array
    If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." More info: http://kubernetes.io/docs/user-guide/services-firewalls
    ports
    ServicePort array
    The list of ports that are exposed by this service. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
    selector
    object
    Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: http://kubernetes.io/docs/user-guide/services#overview
    sessionAffinity
    string
    Supports "ClientIP" and "None". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies
    type
    string
    type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ExternalName" maps to the specified externalName. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: http://kubernetes.io/docs/user-guide/services#overview
    -

    ServiceStatus v1

    - - - - - - - - - - - - - - - -
    FieldDescription
    loadBalancer
    LoadBalancerStatus
    LoadBalancer contains the current status of the load-balancer, if one is present.
    -

    ServiceList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Service array
    List of services
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -$ echo 'kind: Service
    -apiVersion: v1
    -metadata:
    -  name: service-example
    -spec:
    -  ports:
    -  - name: http
    -    port: 80
    -    targetPort: 80
    -  selector:
    -    app: nginx
    -  type: LoadBalancer
    -' | kubectl create -f -
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X POST -H 'Content-Type: application/yaml' --data '
    -kind: Service
    -apiVersion: v1
    -metadata:
    -  name: service-example
    -spec:
    -  ports:
    -  - name: http
    -    port: 80
    -    targetPort: 80
    -  selector:
    -    app: nginx
    -  type: LoadBalancer
    -' http://127.0.0.1:8001/api/v1/namespaces/default/services
    -
    -
    -

    Output

    -
    -
    
    -service "service-example" created
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Service",
    -  "apiVersion": "v1",
    -  "metadata": {
    -    "name": "service-example",
    -    "namespace": "default",
    -    "selfLink": "/api/v1/namespaces/default/services/service-example",
    -    "uid": "93e5c731-9d30-11e6-9c54-42010a800148",
    -    "resourceVersion": "2205767",
    -    "creationTimestamp": "2016-10-28T17:04:24Z"
    -  },
    -  "spec": {
    -    "ports": [
    -      {
    -        "name": "http",
    -        "protocol": "TCP",
    -        "port": 80,
    -        "targetPort": 80,
    -        "nodePort": 32417
    -      }
    -    ],
    -    "selector": {
    -      "app": "nginx"
    -    },
    -    "clusterIP": "10.183.250.161",
    -    "type": "LoadBalancer",
    -    "sessionAffinity": "None"
    -  },
    -  "status": {
    -    "loadBalancer": {}
    -  }
    -}
    -
    -

    create a Service

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/services

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Service
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Service
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -$ echo 'apiVersion: v1
    -kind: Service
    -metadata:
    -  name: deployment-example
    -  resourceVersion: "2205995"
    -spec:
    -  clusterIP: 10.183.250.161
    -  ports:
    -  - name: http
    -    nodePort: 32417
    -    port: 80
    -    protocol: TCP
    -    targetPort: 8080
    -  selector:
    -    app: nginx
    -  sessionAffinity: None
    -  type: LoadBalancer
    -' | kubectl replace -f -
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X PUT -H 'Content-Type: application/yaml' --data '
    -apiVersion: v1
    -kind: Service
    -metadata:
    -  name: deployment-example
    -  resourceVersion: "2205995"
    -spec:
    -  clusterIP: 10.183.250.161
    -  ports:
    -  - name: http
    -    nodePort: 32417
    -    port: 80
    -    protocol: TCP
    -    targetPort: 8080
    -  selector:
    -    app: nginx
    -  sessionAffinity: None
    -  type: LoadBalancer
    -' http://127.0.0.1:8001/api/v1/namespaces/default/services/deployment-example
    -
    -
    -

    Output

    -
    -
    
    -service "deployment-example" replaced
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Service",
    -  "apiVersion": "v1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/api/v1/namespaces/default/services/deployment-example",
    -    "uid": "93e5c731-9d30-11e6-9c54-42010a800148",
    -    "resourceVersion": "2208672",
    -    "creationTimestamp": "2016-10-28T17:04:24Z"
    -  },
    -  "spec": {
    -    "ports": [
    -      {
    -        "name": "http",
    -        "protocol": "TCP",
    -        "port": 80,
    -        "targetPort": 8080,
    -        "nodePort": 32417
    -      }
    -    ],
    -    "selector": {
    -      "app": "nginx"
    -    },
    -    "clusterIP": "10.183.250.161",
    -    "type": "LoadBalancer",
    -    "sessionAffinity": "None"
    -  },
    -  "status": {
    -    "loadBalancer": {
    -      "ingress": [
    -        {
    -          "ip": "104.198.186.106"
    -        }
    -      ]
    -    }
    -  }
    -}
    -
    -

    replace the specified Service

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Service
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Service
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl patch service  -p \
    -    '{"spec":{"ports":[{"name":"http","port":80,"targetPort":8080}]}}'
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' --data '
    -{"spec":{"ports":[{"name":"http","port":80,"targetPort":8080}]}}' \
    -    'http://127.0.0.1:8001/api/v1/namespaces/default/services/'
    -
    -
    -

    Output

    -
    -
    
    -"" patched
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Service",
    -  "apiVersion": "v1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/api/v1/namespaces/default/services/deployment-example",
    -    "uid": "93e5c731-9d30-11e6-9c54-42010a800148",
    -    "resourceVersion": "2205995",
    -    "creationTimestamp": "2016-10-28T17:04:24Z"
    -  },
    -  "spec": {
    -    "ports": [
    -      {
    -        "name": "http",
    -        "protocol": "TCP",
    -        "port": 80,
    -        "targetPort": 8080,
    -        "nodePort": 32417
    -      }
    -    ],
    -    "selector": {
    -      "app": "nginx"
    -    },
    -    "clusterIP": "10.183.250.161",
    -    "type": "LoadBalancer",
    -    "sessionAffinity": "None"
    -  },
    -  "status": {
    -    "loadBalancer": {
    -      "ingress": [
    -        {
    -          "ip": "104.198.186.106"
    -        }
    -      ]
    -    }
    -  }
    -}
    -
    -

    partially update the specified Service

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Service
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl delete service deployment-example
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X DELETE -H 'Content-Type: application/yaml' --data '
    -gracePeriodSeconds: 0
    -orphanDependents: false
    -' 'http://127.0.0.1:8001/api/v1/namespaces/default/services/deployment-example'
    -
    -
    -

    Output

    -
    -
    
    -service "deployment-example" deleted
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Status",
    -  "apiVersion": "v1",
    -  "metadata": {},
    -  "status": "Success",
    -  "code": 200
    -}
    -
    -

    delete a Service

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get service deployment-example -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET http://127.0.0.1:8001/api/v1/namespaces/default/services/deployment-example
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "Service",
    -  "apiVersion": "v1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/api/v1/namespaces/default/services/deployment-example",
    -    "uid": "93e5c731-9d30-11e6-9c54-42010a800148",
    -    "resourceVersion": "2205995",
    -    "creationTimestamp": "2016-10-28T17:04:24Z"
    -  },
    -  "spec": {
    -    "ports": [
    -      {
    -        "name": "http",
    -        "protocol": "TCP",
    -        "port": 80,
    -        "targetPort": 8080,
    -        "nodePort": 32417
    -      }
    -    ],
    -    "selector": {
    -      "app": "nginx"
    -    },
    -    "clusterIP": "10.183.250.161",
    -    "type": "LoadBalancer",
    -    "sessionAffinity": "None"
    -  },
    -  "status": {
    -    "loadBalancer": {
    -      "ingress": [
    -        {
    -          "ip": "104.198.186.106"
    -        }
    -      ]
    -    }
    -  }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Service",
    -  "apiVersion": "v1",
    -  "metadata": {
    -    "name": "deployment-example",
    -    "namespace": "default",
    -    "selfLink": "/api/v1/namespaces/default/services/deployment-example",
    -    "uid": "93e5c731-9d30-11e6-9c54-42010a800148",
    -    "resourceVersion": "2205995",
    -    "creationTimestamp": "2016-10-28T17:04:24Z"
    -  },
    -  "spec": {
    -    "ports": [
    -      {
    -        "name": "http",
    -        "protocol": "TCP",
    -        "port": 80,
    -        "targetPort": 8080,
    -        "nodePort": 32417
    -      }
    -    ],
    -    "selector": {
    -      "app": "nginx"
    -    },
    -    "clusterIP": "10.183.250.161",
    -    "type": "LoadBalancer",
    -    "sessionAffinity": "None"
    -  },
    -  "status": {
    -    "loadBalancer": {
    -      "ingress": [
    -        {
    -          "ip": "104.198.186.106"
    -        }
    -      ]
    -    }
    -  }
    -}
    -
    -

    read the specified Service

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Service
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get service -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/api/v1/namespaces/default/services'
    -
    -
    -

    Output

    -
    -
    
    -
    -
    -

    Response Body

    -
    -
    
    -
    -

    list or watch objects of kind Service

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/services

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ServiceList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Service

    -

    HTTP Request

    -

    GET /api/v1/services

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ServiceList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get service deployment-example --watch -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/api/v1/watch/namespaces/default/services/deployment-example'
    -
    -
    -

    Output

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Service",
    -        "apiVersion": "v1",
    -        "metadata": {
    -            "name": "deployment-example",
    -            "namespace": "default",
    -            "selfLink": "/api/v1/namespaces/default/services/deployment-example",
    -            "uid": "93e5c731-9d30-11e6-9c54-42010a800148",
    -            "resourceVersion": "2205995",
    -            "creationTimestamp": "2016-10-28T17:04:24Z"
    -        },
    -        "spec": {
    -            "ports": [
    -                {
    -                    "name": "http",
    -                    "protocol": "TCP",
    -                    "port": 80,
    -                    "targetPort": 8080,
    -                    "nodePort": 32417
    -                }
    -            ],
    -            "selector": {
    -                "app": "nginx"
    -            },
    -            "clusterIP": "10.183.250.161",
    -            "type": "LoadBalancer",
    -            "sessionAffinity": "None"
    -        },
    -        "status": {
    -            "loadBalancer": {
    -                "ingress": [
    -                    {
    -                        "ip": "104.198.186.106"
    -                    }
    -                ]
    -            }
    -        }
    -    }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Service",
    -        "apiVersion": "v1",
    -        "metadata": {
    -            "name": "deployment-example",
    -            "namespace": "default",
    -            "selfLink": "/api/v1/namespaces/default/services/deployment-example",
    -            "uid": "93e5c731-9d30-11e6-9c54-42010a800148",
    -            "resourceVersion": "2205995",
    -            "creationTimestamp": "2016-10-28T17:04:24Z"
    -        },
    -        "spec": {
    -            "ports": [
    -                {
    -                    "name": "http",
    -                    "protocol": "TCP",
    -                    "port": 80,
    -                    "targetPort": 8080,
    -                    "nodePort": 32417
    -                }
    -            ],
    -            "selector": {
    -                "app": "nginx"
    -            },
    -            "clusterIP": "10.183.250.161",
    -            "type": "LoadBalancer",
    -            "sessionAffinity": "None"
    -        },
    -        "status": {
    -            "loadBalancer": {
    -                "ingress": [
    -                    {
    -                        "ip": "104.198.186.106"
    -                    }
    -                ]
    -            }
    -        }
    -    }
    -}
    -
    -

    watch changes to an object of kind Service

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Service

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/services

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Service

    -

    HTTP Request

    -

    GET /api/v1/watch/services

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Service

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/services/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Service
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Service

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/services/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Service
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Service

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/services/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Service
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Service
    OK
    -

    Proxy Operations

    -

    See supported operations below...

    -

    Create Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect POST requests to proxy of Service

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/services/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect POST requests to proxy of Service

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/services/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy POST requests to Service

    -

    HTTP Request

    -

    POST /api/v1/proxy/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy POST requests to Service

    -

    HTTP Request

    -

    POST /api/v1/proxy/namespaces/{namespace}/services/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect DELETE requests to proxy of Service

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/services/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect DELETE requests to proxy of Service

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/services/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy DELETE requests to Service

    -

    HTTP Request

    -

    DELETE /api/v1/proxy/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy DELETE requests to Service

    -

    HTTP Request

    -

    DELETE /api/v1/proxy/namespaces/{namespace}/services/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect GET requests to proxy of Service

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/services/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect GET requests to proxy of Service

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/services/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy GET requests to Service

    -

    HTTP Request

    -

    GET /api/v1/proxy/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy GET requests to Service

    -

    HTTP Request

    -

    GET /api/v1/proxy/namespaces/{namespace}/services/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Head Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect HEAD requests to proxy of Service

    -

    HTTP Request

    -

    HEAD /api/v1/namespaces/{namespace}/services/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Head Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect HEAD requests to proxy of Service

    -

    HTTP Request

    -

    HEAD /api/v1/namespaces/{namespace}/services/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect PUT requests to proxy of Service

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/services/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect PUT requests to proxy of Service

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/services/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy PUT requests to Service

    -

    HTTP Request

    -

    PUT /api/v1/proxy/namespaces/{namespace}/services/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy PUT requests to Service

    -

    HTTP Request

    -

    PUT /api/v1/proxy/namespaces/{namespace}/services/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Service
    namespaceobject name and auth scope, such as for teams and projects
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    CONFIG & STORAGE

    -

    Config and Storage resources are responsible for injecting data into your applications and persisting data externally to your container.

    -

    Common resource types:

    -
      -
    • ConfigMaps for providing text key value pairs injected into the application through environment variables, command line arguments, or files
    • -
    • Secrets for providing binary data injected into the application through files
    • -
    • Volumes for providing a filesystem external to the Container. Maybe shared across Containers within the same Pod and have a lifetime persisting beyond a Container or Pod.
    • -
    -
    -
    -

    ConfigMap v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ConfigMap
    -

    ConfigMap holds configuration data for pods to consume.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    data
    object
    Data contains the configuration data. Each key must be a valid DNS_SUBDOMAIN with an optional leading dot.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    ConfigMapList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ConfigMap array
    Items is the list of ConfigMaps.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a ConfigMap

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/configmaps

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ConfigMap
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ConfigMap
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified ConfigMap

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/configmaps/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ConfigMap
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ConfigMap
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ConfigMap
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified ConfigMap

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/configmaps/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ConfigMap
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ConfigMap
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a ConfigMap

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/configmaps/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ConfigMap
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of ConfigMap

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/configmaps

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ConfigMap

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/configmaps/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ConfigMap
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ConfigMap
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ConfigMap

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/configmaps

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ConfigMapList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ConfigMap

    -

    HTTP Request

    -

    GET /api/v1/configmaps

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ConfigMapList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind ConfigMap

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/configmaps/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ConfigMap
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ConfigMap

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/configmaps

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ConfigMap

    -

    HTTP Request

    -

    GET /api/v1/watch/configmaps

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    Secret v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Secret
    -

    Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    data
    object
    Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN or leading dot followed by valid DNS_SUBDOMAIN. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    stringData
    object
    stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.
    type
    string
    Used to facilitate programmatic handling of secret data.
    -

    SecretList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Secret array
    Items is a list of secret objects. More info: http://kubernetes.io/docs/user-guide/secrets
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a Secret

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/secrets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Secret
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Secret
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Secret

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/secrets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Secret
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Secret
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Secret
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Secret

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/secrets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Secret
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Secret
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a Secret

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/secrets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Secret
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Secret

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/secrets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified Secret

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/secrets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Secret
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Secret
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Secret

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/secrets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    SecretList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Secret

    -

    HTTP Request

    -

    GET /api/v1/secrets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    SecretList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind Secret

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/secrets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Secret
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Secret

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/secrets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Secret

    -

    HTTP Request

    -

    GET /api/v1/watch/secrets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    PersistentVolumeClaim v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1PersistentVolumeClaim
    - - - - - -

    PersistentVolumeClaim is a user's request for and claim to a persistent volume

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    PersistentVolumeClaimSpec
    Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
    status
    PersistentVolumeClaimStatus
    Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
    -

    PersistentVolumeClaimSpec v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    accessModes
    string array
    AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1
    resources
    ResourceRequirements
    Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources
    selector
    LabelSelector
    A label query over volumes to consider for binding.
    volumeName
    string
    VolumeName is the binding reference to the PersistentVolume backing this claim.
    -

    PersistentVolumeClaimStatus v1

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    accessModes
    string array
    AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1
    capacity
    object
    Represents the actual resources of the underlying volume.
    phase
    string
    Phase represents the current phase of PersistentVolumeClaim.
    -

    PersistentVolumeClaimList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    PersistentVolumeClaim array
    A list of persistent volume claims. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a PersistentVolumeClaim

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/persistentvolumeclaims

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PersistentVolumeClaim
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaim
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified PersistentVolumeClaim

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolumeClaim
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PersistentVolumeClaim
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaim
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified PersistentVolumeClaim

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolumeClaim
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaim
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a PersistentVolumeClaim

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolumeClaim
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of PersistentVolumeClaim

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/persistentvolumeclaims

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified PersistentVolumeClaim

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolumeClaim
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaim
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind PersistentVolumeClaim

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/persistentvolumeclaims

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaimList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind PersistentVolumeClaim

    -

    HTTP Request

    -

    GET /api/v1/persistentvolumeclaims

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaimList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind PersistentVolumeClaim

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolumeClaim
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of PersistentVolumeClaim

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/persistentvolumeclaims

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of PersistentVolumeClaim

    -

    HTTP Request

    -

    GET /api/v1/watch/persistentvolumeclaims

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified PersistentVolumeClaim

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolumeClaim
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaim
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified PersistentVolumeClaim

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolumeClaim
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaim
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified PersistentVolumeClaim

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolumeClaim
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PersistentVolumeClaim
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeClaim
    OK
    -
    -

    StorageClass v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Storagev1beta1StorageClass
    -

    StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.

    -

    StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    parameters
    object
    Parameters holds the parameters for the provisioner that should create volumes of this storage class.
    provisioner
    string
    Provisioner indicates the type of the provisioner.
    -

    StorageClassList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    StorageClass array
    Items is the list of StorageClasses
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a StorageClass

    -

    HTTP Request

    -

    POST /apis/storage.k8s.io/v1beta1/storageclasses

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    StorageClass
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StorageClass
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified StorageClass

    -

    HTTP Request

    -

    PUT /apis/storage.k8s.io/v1beta1/storageclasses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StorageClass
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    StorageClass
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StorageClass
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified StorageClass

    -

    HTTP Request

    -

    PATCH /apis/storage.k8s.io/v1beta1/storageclasses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StorageClass
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StorageClass
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a StorageClass

    -

    HTTP Request

    -

    DELETE /apis/storage.k8s.io/v1beta1/storageclasses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StorageClass
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of StorageClass

    -

    HTTP Request

    -

    DELETE /apis/storage.k8s.io/v1beta1/storageclasses

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified StorageClass

    -

    HTTP Request

    -

    GET /apis/storage.k8s.io/v1beta1/storageclasses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StorageClass
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StorageClass
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind StorageClass

    -

    HTTP Request

    -

    GET /apis/storage.k8s.io/v1beta1/storageclasses

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    StorageClassList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind StorageClass

    -

    HTTP Request

    -

    GET /apis/storage.k8s.io/v1beta1/watch/storageclasses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the StorageClass
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of StorageClass

    -

    HTTP Request

    -

    GET /apis/storage.k8s.io/v1beta1/watch/storageclasses

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    Volume v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Volume
    -

    Volume represents a named volume in a pod that may be accessed by any container in the pod.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    awsElasticBlockStore
    AWSElasticBlockStoreVolumeSource
    AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
    azureDisk
    AzureDiskVolumeSource
    AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
    azureFile
    AzureFileVolumeSource
    AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
    cephfs
    CephFSVolumeSource
    CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
    cinder
    CinderVolumeSource
    Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
    configMap
    ConfigMapVolumeSource
    ConfigMap represents a configMap that should populate this volume
    downwardAPI
    DownwardAPIVolumeSource
    DownwardAPI represents downward API about the pod that should populate this volume
    emptyDir
    EmptyDirVolumeSource
    EmptyDir represents a temporary directory that shares a pod's lifetime. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir
    fc
    FCVolumeSource
    FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
    flexVolume
    FlexVolumeSource
    FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.
    flocker
    FlockerVolumeSource
    Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
    gcePersistentDisk
    GCEPersistentDiskVolumeSource
    GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
    gitRepo
    GitRepoVolumeSource
    GitRepo represents a git repository at a particular revision.
    glusterfs
    GlusterfsVolumeSource
    Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
    hostPath
    HostPathVolumeSource
    HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath
    iscsi
    ISCSIVolumeSource
    ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md
    name
    string
    Volume's name. Must be a DNS_LABEL and unique within the pod. More info: http://kubernetes.io/docs/user-guide/identifiers#names
    nfs
    NFSVolumeSource
    NFS represents an NFS mount on the host that shares a pod's lifetime More info: http://kubernetes.io/docs/user-guide/volumes#nfs
    persistentVolumeClaim
    PersistentVolumeClaimVolumeSource
    PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
    photonPersistentDisk
    PhotonPersistentDiskVolumeSource
    PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
    quobyte
    QuobyteVolumeSource
    Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
    rbd
    RBDVolumeSource
    RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
    secret
    SecretVolumeSource
    Secret represents a secret that should populate this volume. More info: http://kubernetes.io/docs/user-guide/volumes#secrets
    vsphereVolume
    VsphereVirtualDiskVolumeSource
    VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
    -

    METADATA

    -

    Metadata resources are responsible for configuring behavior of your other Resources within the Cluster.

    -

    Common resource types:

    -
      -
    • HorizontalPodAutoscaler (HPA) for automatically scaling the replicacount of your workloads in response to load
    • -
    • PodDisruptionBudget for configuring how many replicas in a given workload maybe made concurrently unavailable when performing maintenance.
    • -
    • ThirdPartyResource for extending the Kubernetes APIs with your own types
    • -
    • Event for notification of resource lifecycle events in the cluster.
    • -
    -
    -
    -

    Event v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Event
    - - - -

    Event is a report of an event somewhere in the cluster.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    count
    integer
    The number of times this event has occurred.
    firstTimestamp
    Time
    The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
    involvedObject
    ObjectReference
    The object that this event is about.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    lastTimestamp
    Time
    The time at which the most recent occurrence of this event was recorded.
    message
    string
    A human-readable description of the status of this operation.
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    reason
    string
    This should be a short, machine understandable string that gives the reason for the transition into the object's current status.
    source
    EventSource
    The component reporting this event. Should be a short machine understandable string.
    type
    string
    Type of this event (Normal, Warning), new types could be added in the future
    -

    EventList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Event array
    List of events
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create an Event

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/events

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Event
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Event

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/events/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Event
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Event
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Event

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/events/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Event
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete an Event

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/events/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Event
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Event

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/events

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified Event

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/events/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Event
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Event

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/events

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    EventList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Event

    -

    HTTP Request

    -

    GET /api/v1/events

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    EventList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind Event

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/events/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Event
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Event

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/events

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Event

    -

    HTTP Request

    -

    GET /api/v1/watch/events

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    LimitRange v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1LimitRange
    -

    LimitRange sets resource usage limits for each kind of resource in a Namespace.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    LimitRangeSpec
    Spec defines the limits enforced. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    LimitRangeSpec v1

    - - - - - - - - - - - - - - - -
    FieldDescription
    limits
    LimitRangeItem array
    Limits is the list of LimitRangeItem objects that are enforced.
    -

    LimitRangeList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    LimitRange array
    Items is a list of LimitRange objects. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a LimitRange

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/limitranges

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    LimitRange
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    LimitRange
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified LimitRange

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/limitranges/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the LimitRange
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    LimitRange
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    LimitRange
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified LimitRange

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/limitranges/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the LimitRange
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    LimitRange
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a LimitRange

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/limitranges/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the LimitRange
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of LimitRange

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/limitranges

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified LimitRange

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/limitranges/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the LimitRange
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    LimitRange
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind LimitRange

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/limitranges

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    LimitRangeList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind LimitRange

    -

    HTTP Request

    -

    GET /api/v1/limitranges

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    LimitRangeList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind LimitRange

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/limitranges/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the LimitRange
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of LimitRange

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/limitranges

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of LimitRange

    -

    HTTP Request

    -

    GET /api/v1/watch/limitranges

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    HorizontalPodAutoscaler v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Autoscalingv1HorizontalPodAutoscaler
    - - - -

    configuration of a horizontal pod autoscaler.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    HorizontalPodAutoscalerSpec
    behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.
    status
    HorizontalPodAutoscalerStatus
    current information about the autoscaler.
    -

    HorizontalPodAutoscalerSpec v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    maxReplicas
    integer
    upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.
    minReplicas
    integer
    lower limit for the number of pods that can be set by the autoscaler, default 1.
    scaleTargetRef
    CrossVersionObjectReference
    reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption and will set the desired number of pods by using its Scale subresource.
    targetCPUUtilizationPercentage
    integer
    target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.
    -

    HorizontalPodAutoscalerStatus v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    currentCPUUtilizationPercentage
    integer
    current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.
    currentReplicas
    integer
    current number of replicas of pods managed by this autoscaler.
    desiredReplicas
    integer
    desired number of replicas of pods managed by this autoscaler.
    lastScaleTime
    Time
    last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed.
    observedGeneration
    integer
    most recent generation observed by this autoscaler.
    -

    HorizontalPodAutoscalerList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    HorizontalPodAutoscaler array
    list of horizontal pod autoscaler objects.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a HorizontalPodAutoscaler

    -

    HTTP Request

    -

    POST /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    HorizontalPodAutoscaler
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    HorizontalPodAutoscaler
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    PATCH /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a HorizontalPodAutoscaler

    -

    HTTP Request

    -

    DELETE /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of HorizontalPodAutoscaler

    -

    HTTP Request

    -

    DELETE /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscalerList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/autoscaling/v1/horizontalpodautoscalers

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscalerList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/autoscaling/v1/watch/horizontalpodautoscalers

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    PATCH /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    HorizontalPodAutoscaler
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -
    -

    PodTemplate v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1PodTemplate
    -

    PodTemplate describes a template for creating copies of a predefined pod.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    template
    PodTemplateSpec
    Template defines the pods that will be created from this pod template. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    PodTemplateSpec v1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    PodSpec
    Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    PodTemplateList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    PodTemplate array
    List of pod templates
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a PodTemplate

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/podtemplates

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PodTemplate
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodTemplate
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified PodTemplate

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/podtemplates/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodTemplate
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PodTemplate
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodTemplate
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified PodTemplate

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/podtemplates/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodTemplate
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodTemplate
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a PodTemplate

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/podtemplates/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodTemplate
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of PodTemplate

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/podtemplates

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified PodTemplate

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/podtemplates/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodTemplate
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodTemplate
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind PodTemplate

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/podtemplates

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodTemplateList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind PodTemplate

    -

    HTTP Request

    -

    GET /api/v1/podtemplates

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodTemplateList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind PodTemplate

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/podtemplates/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodTemplate
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of PodTemplate

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/podtemplates

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of PodTemplate

    -

    HTTP Request

    -

    GET /api/v1/watch/podtemplates

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    PodDisruptionBudget v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Policyv1beta1PodDisruptionBudget
    -

    PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    spec
    PodDisruptionBudgetSpec
    Specification of the desired behavior of the PodDisruptionBudget.
    status
    PodDisruptionBudgetStatus
    Most recently observed status of the PodDisruptionBudget.
    -

    PodDisruptionBudgetSpec v1beta1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    minAvailable
    IntOrString
    An eviction is allowed if at least "minAvailable" pods selected by "selector" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying "100%".
    selector
    LabelSelector
    Label query over pods whose evictions are managed by the disruption budget.
    -

    PodDisruptionBudgetStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    currentHealthy
    integer
    current number of healthy pods
    desiredHealthy
    integer
    minimum desired number of healthy pods
    disruptedPods
    object
    DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.
    disruptionsAllowed
    integer
    Number of pod disruptions that are currently allowed.
    expectedPods
    integer
    total number of pods counted by this disruption budget
    observedGeneration
    integer
    Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other status informatio is valid only if observedGeneration equals to PDB's object generation.
    -

    PodDisruptionBudgetList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    PodDisruptionBudget array
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a PodDisruptionBudget

    -

    HTTP Request

    -

    POST /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PodDisruptionBudget
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudget
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified PodDisruptionBudget

    -

    HTTP Request

    -

    PUT /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodDisruptionBudget
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PodDisruptionBudget
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudget
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified PodDisruptionBudget

    -

    HTTP Request

    -

    PATCH /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodDisruptionBudget
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudget
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a PodDisruptionBudget

    -

    HTTP Request

    -

    DELETE /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodDisruptionBudget
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of PodDisruptionBudget

    -

    HTTP Request

    -

    DELETE /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified PodDisruptionBudget

    -

    HTTP Request

    -

    GET /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodDisruptionBudget
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudget
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind PodDisruptionBudget

    -

    HTTP Request

    -

    GET /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudgetList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind PodDisruptionBudget

    -

    HTTP Request

    -

    GET /apis/policy/v1beta1/poddisruptionbudgets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudgetList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind PodDisruptionBudget

    -

    HTTP Request

    -

    GET /apis/policy/v1beta1/watch/namespaces/{namespace}/poddisruptionbudgets/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodDisruptionBudget
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of PodDisruptionBudget

    -

    HTTP Request

    -

    GET /apis/policy/v1beta1/watch/namespaces/{namespace}/poddisruptionbudgets

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of PodDisruptionBudget

    -

    HTTP Request

    -

    GET /apis/policy/v1beta1/watch/poddisruptionbudgets

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified PodDisruptionBudget

    -

    HTTP Request

    -

    PATCH /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodDisruptionBudget
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudget
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified PodDisruptionBudget

    -

    HTTP Request

    -

    GET /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodDisruptionBudget
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudget
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified PodDisruptionBudget

    -

    HTTP Request

    -

    PUT /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PodDisruptionBudget
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PodDisruptionBudget
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PodDisruptionBudget
    OK
    -
    -

    ThirdPartyResource v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Extensionsv1beta1ThirdPartyResource
    -

    A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource types to the API. It consists of one or more Versions of the api.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    description
    string
    Description is the description of this object.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object metadata
    versions
    APIVersion array
    Versions are versions for this third party object
    -

    ThirdPartyResourceList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ThirdPartyResource array
    Items is the list of ThirdPartyResources.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a ThirdPartyResource

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/thirdpartyresources

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ThirdPartyResource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ThirdPartyResource
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified ThirdPartyResource

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/thirdpartyresources/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ThirdPartyResource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ThirdPartyResource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ThirdPartyResource
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified ThirdPartyResource

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/thirdpartyresources/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ThirdPartyResource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ThirdPartyResource
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a ThirdPartyResource

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/thirdpartyresources/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ThirdPartyResource
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of ThirdPartyResource

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/thirdpartyresources

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ThirdPartyResource

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/thirdpartyresources/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ThirdPartyResource
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ThirdPartyResource
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ThirdPartyResource

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/thirdpartyresources

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ThirdPartyResourceList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind ThirdPartyResource

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/thirdpartyresources/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ThirdPartyResource
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ThirdPartyResource

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/thirdpartyresources

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    CLUSTER

    -

    Cluster resources are responsible for defining configuration of the cluster itself, and are generally only used by cluster operators.

    -
    -
    -

    Binding v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Binding
    -

    Binding ties one object to another. For example, a pod is bound to a node by a scheduler.

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    target
    ObjectReference
    The target object that you want to bind to the standard object.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a Binding

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/bindings

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Binding
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Binding
    OK
    -
    -

    CertificateSigningRequest v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Certificatesv1alpha1CertificateSigningRequest
    -

    Describes a certificate signing request

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    spec
    CertificateSigningRequestSpec
    The certificate request itself and any additional information.
    status
    CertificateSigningRequestStatus
    Derived information about the request.
    -

    CertificateSigningRequestSpec v1alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    groups
    string array
    request
    string
    Base64-encoded PKCS#10 CSR data
    uid
    string
    username
    string
    Information about the requesting user (if relevant) See user.Info interface for details
    -

    CertificateSigningRequestStatus v1alpha1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    certificate
    string
    If request was approved, the controller will place the issued certificate here.
    conditions
    CertificateSigningRequestCondition array
    Conditions applied to the request, such as approval or denial.
    -

    CertificateSigningRequestList v1alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    CertificateSigningRequest array
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a CertificateSigningRequest

    -

    HTTP Request

    -

    POST /apis/certificates.k8s.io/v1alpha1/certificatesigningrequests

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    CertificateSigningRequest
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CertificateSigningRequest
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified CertificateSigningRequest

    -

    HTTP Request

    -

    PUT /apis/certificates.k8s.io/v1alpha1/certificatesigningrequests/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CertificateSigningRequest
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    CertificateSigningRequest
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CertificateSigningRequest
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified CertificateSigningRequest

    -

    HTTP Request

    -

    PATCH /apis/certificates.k8s.io/v1alpha1/certificatesigningrequests/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CertificateSigningRequest
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CertificateSigningRequest
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a CertificateSigningRequest

    -

    HTTP Request

    -

    DELETE /apis/certificates.k8s.io/v1alpha1/certificatesigningrequests/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CertificateSigningRequest
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of CertificateSigningRequest

    -

    HTTP Request

    -

    DELETE /apis/certificates.k8s.io/v1alpha1/certificatesigningrequests

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified CertificateSigningRequest

    -

    HTTP Request

    -

    GET /apis/certificates.k8s.io/v1alpha1/certificatesigningrequests/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CertificateSigningRequest
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CertificateSigningRequest
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind CertificateSigningRequest

    -

    HTTP Request

    -

    GET /apis/certificates.k8s.io/v1alpha1/certificatesigningrequests

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CertificateSigningRequestList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind CertificateSigningRequest

    -

    HTTP Request

    -

    GET /apis/certificates.k8s.io/v1alpha1/watch/certificatesigningrequests/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CertificateSigningRequest
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of CertificateSigningRequest

    -

    HTTP Request

    -

    GET /apis/certificates.k8s.io/v1alpha1/watch/certificatesigningrequests

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified CertificateSigningRequest

    -

    HTTP Request

    -

    PUT /apis/certificates.k8s.io/v1alpha1/certificatesigningrequests/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the CertificateSigningRequest
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    CertificateSigningRequest
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    CertificateSigningRequest
    OK
    -
    -

    ClusterRole v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    RbacAuthorizationv1alpha1ClusterRole
    -

    ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata.
    rules
    PolicyRule array
    Rules holds all the PolicyRules for this ClusterRole
    -

    ClusterRoleList v1alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ClusterRole array
    Items is a list of ClusterRoles
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard object's metadata.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a ClusterRole

    -

    HTTP Request

    -

    POST /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ClusterRole
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRole
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified ClusterRole

    -

    HTTP Request

    -

    PUT /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRole
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ClusterRole
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRole
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified ClusterRole

    -

    HTTP Request

    -

    PATCH /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRole
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRole
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a ClusterRole

    -

    HTTP Request

    -

    DELETE /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRole
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of ClusterRole

    -

    HTTP Request

    -

    DELETE /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ClusterRole

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRole
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRole
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ClusterRole

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRoleList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind ClusterRole

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterroles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRole
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ClusterRole

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterroles

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    ClusterRoleBinding v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    RbacAuthorizationv1alpha1ClusterRoleBinding
    -

    ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata.
    roleRef
    RoleRef
    RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.
    subjects
    Subject array
    Subjects holds references to the objects the role applies to.
    -

    ClusterRoleBindingList v1alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ClusterRoleBinding array
    Items is a list of ClusterRoleBindings
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard object's metadata.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a ClusterRoleBinding

    -

    HTTP Request

    -

    POST /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ClusterRoleBinding
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRoleBinding
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified ClusterRoleBinding

    -

    HTTP Request

    -

    PUT /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRoleBinding
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ClusterRoleBinding
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRoleBinding
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified ClusterRoleBinding

    -

    HTTP Request

    -

    PATCH /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRoleBinding
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRoleBinding
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a ClusterRoleBinding

    -

    HTTP Request

    -

    DELETE /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRoleBinding
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of ClusterRoleBinding

    -

    HTTP Request

    -

    DELETE /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ClusterRoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRoleBinding
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRoleBinding
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ClusterRoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ClusterRoleBindingList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind ClusterRoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterrolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ClusterRoleBinding
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ClusterRoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterrolebindings

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    ComponentStatus v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ComponentStatus
    -

    ComponentStatus (and ComponentStatusList) holds the cluster validation info.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    conditions
    ComponentCondition array
    List of component conditions observed
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    ComponentStatusList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ComponentStatus array
    List of ComponentStatus objects.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ComponentStatus

    -

    HTTP Request

    -

    GET /api/v1/componentstatuses/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ComponentStatus
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ComponentStatus
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list objects of kind ComponentStatus

    -

    HTTP Request

    -

    GET /api/v1/componentstatuses

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ComponentStatusList
    OK
    -
    -

    LocalSubjectAccessReview v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Authorizationv1beta1LocalSubjectAccessReview
    -

    LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    spec
    SubjectAccessReviewSpec
    Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace you made the request against. If empty, it is defaulted.
    status
    SubjectAccessReviewStatus
    Status is filled in by the server and indicates whether the request is allowed or not
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a LocalSubjectAccessReview

    -

    HTTP Request

    -

    POST /apis/authorization.k8s.io/v1beta1/namespaces/{namespace}/localsubjectaccessreviews

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    LocalSubjectAccessReview
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    LocalSubjectAccessReview
    OK
    -
    -

    Namespace v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Namespace
    -

    Namespace provides a scope for Names. Use of multiple namespaces is optional.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    NamespaceSpec
    Spec defines the behavior of the Namespace. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    NamespaceStatus
    Status describes the current status of a Namespace. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    NamespaceSpec v1

    - - - - - - - - - - - - - - - -
    FieldDescription
    finalizers
    string array
    Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers
    -

    NamespaceStatus v1

    - - - - - - - - - - - - - - - -
    FieldDescription
    phase
    string
    Phase is the current lifecycle phase of the namespace. More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases
    -

    NamespaceList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Namespace array
    Items is the list of Namespace objects in the list. More info: http://kubernetes.io/docs/user-guide/namespaces
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a Namespace

    -

    HTTP Request

    -

    POST /api/v1/namespaces

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Namespace
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Namespace
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Namespace

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Namespace
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Namespace
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Namespace
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Namespace

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Namespace
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Namespace
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a Namespace

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Namespace
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Namespace

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified Namespace

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Namespace
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Namespace
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Namespace

    -

    HTTP Request

    -

    GET /api/v1/namespaces

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    NamespaceList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind Namespace

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Namespace
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Namespace

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Namespace

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Namespace
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Namespace
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Namespace

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Namespace
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Namespace
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Namespace

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Namespace
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Namespace
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Namespace
    OK
    -
    -

    Node v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Node
    -

    Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    NodeSpec
    Spec defines the behavior of a node. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    NodeStatus
    Most recently observed status of the node. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    NodeSpec v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    externalID
    string
    External ID of the node assigned by some machine database (e.g. a cloud provider). Deprecated.
    podCIDR
    string
    PodCIDR represents the pod IP range assigned to the node.
    providerID
    string
    ID of the node assigned by the cloud provider in the format: ://
    unschedulable
    boolean
    Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration"
    -

    NodeStatus v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    addresses
    NodeAddress array
    List of addresses reachable to the node. Queried from cloud provider, if available. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses
    allocatable
    object
    Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.
    capacity
    object
    Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity for more details.
    conditions
    NodeCondition array
    Conditions is an array of current observed node conditions. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition
    daemonEndpoints
    NodeDaemonEndpoints
    Endpoints of daemons running on the Node.
    images
    ContainerImage array
    List of container images on this node
    nodeInfo
    NodeSystemInfo
    Set of ids/uuids to uniquely identify the node. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info
    phase
    string
    NodePhase is the recently observed lifecycle phase of the node. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase The field is never populated, and now is deprecated.
    volumesAttached
    AttachedVolume array
    List of volumes that are attached to the node.
    volumesInUse
    string array
    List of attachable volumes in use (mounted) by the node.
    -

    NodeList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Node array
    List of nodes
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a Node

    -

    HTTP Request

    -

    POST /api/v1/nodes

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Node
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Node
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Node

    -

    HTTP Request

    -

    PUT /api/v1/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Node
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Node
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Node

    -

    HTTP Request

    -

    PATCH /api/v1/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Node
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a Node

    -

    HTTP Request

    -

    DELETE /api/v1/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Node

    -

    HTTP Request

    -

    DELETE /api/v1/nodes

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified Node

    -

    HTTP Request

    -

    GET /api/v1/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Node
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Node

    -

    HTTP Request

    -

    GET /api/v1/nodes

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    NodeList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind Node

    -

    HTTP Request

    -

    GET /api/v1/watch/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Node

    -

    HTTP Request

    -

    GET /api/v1/watch/nodes

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Node

    -

    HTTP Request

    -

    PATCH /api/v1/nodes/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Node
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Node

    -

    HTTP Request

    -

    GET /api/v1/nodes/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Node
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Node

    -

    HTTP Request

    -

    PUT /api/v1/nodes/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Node
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Node
    OK
    -

    Proxy Operations

    -

    See supported operations below...

    -

    Create Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect POST requests to proxy of Node

    -

    HTTP Request

    -

    POST /api/v1/nodes/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect POST requests to proxy of Node

    -

    HTTP Request

    -

    POST /api/v1/nodes/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy POST requests to Node

    -

    HTTP Request

    -

    POST /api/v1/proxy/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Create Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy POST requests to Node

    -

    HTTP Request

    -

    POST /api/v1/proxy/nodes/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect DELETE requests to proxy of Node

    -

    HTTP Request

    -

    DELETE /api/v1/nodes/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect DELETE requests to proxy of Node

    -

    HTTP Request

    -

    DELETE /api/v1/nodes/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy DELETE requests to Node

    -

    HTTP Request

    -

    DELETE /api/v1/proxy/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Delete Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy DELETE requests to Node

    -

    HTTP Request

    -

    DELETE /api/v1/proxy/nodes/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect GET requests to proxy of Node

    -

    HTTP Request

    -

    GET /api/v1/nodes/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect GET requests to proxy of Node

    -

    HTTP Request

    -

    GET /api/v1/nodes/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy GET requests to Node

    -

    HTTP Request

    -

    GET /api/v1/proxy/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Get Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy GET requests to Node

    -

    HTTP Request

    -

    GET /api/v1/proxy/nodes/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Head Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect HEAD requests to proxy of Node

    -

    HTTP Request

    -

    HEAD /api/v1/nodes/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Head Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect HEAD requests to proxy of Node

    -

    HTTP Request

    -

    HEAD /api/v1/nodes/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Connect Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect PUT requests to proxy of Node

    -

    HTTP Request

    -

    PUT /api/v1/nodes/{name}/proxy

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Connect Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    connect PUT requests to proxy of Node

    -

    HTTP Request

    -

    PUT /api/v1/nodes/{name}/proxy/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    pathPath is the URL path to use for the current proxy request to node.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Proxy

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy PUT requests to Node

    -

    HTTP Request

    -

    PUT /api/v1/proxy/nodes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -

    Replace Proxy Path

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    proxy PUT requests to Node

    -

    HTTP Request

    -

    PUT /api/v1/proxy/nodes/{name}/{path}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Node
    pathpath to the resource
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    string
    OK
    -
    -

    PersistentVolume v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1PersistentVolume
    - - - - - -

    PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    PersistentVolumeSpec
    Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes
    status
    PersistentVolumeStatus
    Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes
    -

    PersistentVolumeSpec v1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    accessModes
    string array
    AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
    awsElasticBlockStore
    AWSElasticBlockStoreVolumeSource
    AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
    azureDisk
    AzureDiskVolumeSource
    AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
    azureFile
    AzureFileVolumeSource
    AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
    capacity
    object
    A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity
    cephfs
    CephFSVolumeSource
    CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
    cinder
    CinderVolumeSource
    Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
    claimRef
    ObjectReference
    ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#binding
    fc
    FCVolumeSource
    FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
    flexVolume
    FlexVolumeSource
    FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.
    flocker
    FlockerVolumeSource
    Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
    gcePersistentDisk
    GCEPersistentDiskVolumeSource
    GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
    glusterfs
    GlusterfsVolumeSource
    Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
    hostPath
    HostPathVolumeSource
    HostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath
    iscsi
    ISCSIVolumeSource
    ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin.
    nfs
    NFSVolumeSource
    NFS represents an NFS mount on the host. Provisioned by an admin. More info: http://kubernetes.io/docs/user-guide/volumes#nfs
    persistentVolumeReclaimPolicy
    string
    What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#recycling-policy
    photonPersistentDisk
    PhotonPersistentDiskVolumeSource
    PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
    quobyte
    QuobyteVolumeSource
    Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
    rbd
    RBDVolumeSource
    RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
    vsphereVolume
    VsphereVirtualDiskVolumeSource
    VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
    -

    PersistentVolumeStatus v1

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    message
    string
    A human-readable message indicating details about why the volume is in this state.
    phase
    string
    Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#phase
    reason
    string
    Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.
    -

    PersistentVolumeList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    PersistentVolume array
    List of persistent volumes. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a PersistentVolume

    -

    HTTP Request

    -

    POST /api/v1/persistentvolumes

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PersistentVolume
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolume
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified PersistentVolume

    -

    HTTP Request

    -

    PUT /api/v1/persistentvolumes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolume
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PersistentVolume
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolume
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified PersistentVolume

    -

    HTTP Request

    -

    PATCH /api/v1/persistentvolumes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolume
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolume
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a PersistentVolume

    -

    HTTP Request

    -

    DELETE /api/v1/persistentvolumes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolume
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of PersistentVolume

    -

    HTTP Request

    -

    DELETE /api/v1/persistentvolumes

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified PersistentVolume

    -

    HTTP Request

    -

    GET /api/v1/persistentvolumes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolume
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolume
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind PersistentVolume

    -

    HTTP Request

    -

    GET /api/v1/persistentvolumes

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolumeList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind PersistentVolume

    -

    HTTP Request

    -

    GET /api/v1/watch/persistentvolumes/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolume
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of PersistentVolume

    -

    HTTP Request

    -

    GET /api/v1/watch/persistentvolumes

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified PersistentVolume

    -

    HTTP Request

    -

    PATCH /api/v1/persistentvolumes/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolume
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolume
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified PersistentVolume

    -

    HTTP Request

    -

    GET /api/v1/persistentvolumes/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolume
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolume
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified PersistentVolume

    -

    HTTP Request

    -

    PUT /api/v1/persistentvolumes/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namename of the PersistentVolume
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    PersistentVolume
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    PersistentVolume
    OK
    -
    -

    ResourceQuota v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ResourceQuota
    -

    ResourceQuota sets aggregate quota restrictions enforced per namespace

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    ResourceQuotaSpec
    Spec defines the desired quota. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    ResourceQuotaStatus
    Status defines the actual enforced quota and its current usage. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    ResourceQuotaSpec v1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    hard
    object
    Hard is the set of desired hard limits for each named resource. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota
    scopes
    string array
    A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.
    -

    ResourceQuotaStatus v1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    hard
    object
    Hard is the set of enforced hard limits for each named resource. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota
    used
    object
    Used is the current observed total usage of the resource in the namespace.
    -

    ResourceQuotaList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ResourceQuota array
    Items is a list of ResourceQuota objects. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a ResourceQuota

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/resourcequotas

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ResourceQuota
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuota
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified ResourceQuota

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/resourcequotas/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ResourceQuota
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ResourceQuota
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuota
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified ResourceQuota

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/resourcequotas/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ResourceQuota
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuota
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a ResourceQuota

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/resourcequotas/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ResourceQuota
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of ResourceQuota

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/resourcequotas

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ResourceQuota

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/resourcequotas/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ResourceQuota
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuota
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ResourceQuota

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/resourcequotas

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuotaList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ResourceQuota

    -

    HTTP Request

    -

    GET /api/v1/resourcequotas

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuotaList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind ResourceQuota

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/resourcequotas/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ResourceQuota
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ResourceQuota

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/resourcequotas

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ResourceQuota

    -

    HTTP Request

    -

    GET /api/v1/watch/resourcequotas

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified ResourceQuota

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/resourcequotas/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ResourceQuota
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuota
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified ResourceQuota

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/resourcequotas/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ResourceQuota
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuota
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified ResourceQuota

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/resourcequotas/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ResourceQuota
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ResourceQuota
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ResourceQuota
    OK
    -
    -

    Role v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    RbacAuthorizationv1alpha1Role
    -

    Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata.
    rules
    PolicyRule array
    Rules holds all the PolicyRules for this Role
    -

    RoleList v1alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Role array
    Items is a list of Roles
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard object's metadata.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a Role

    -

    HTTP Request

    -

    POST /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Role
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Role
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Role

    -

    HTTP Request

    -

    PUT /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Role
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Role
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Role
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Role

    -

    HTTP Request

    -

    PATCH /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Role
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Role
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a Role

    -

    HTTP Request

    -

    DELETE /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Role
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Role

    -

    HTTP Request

    -

    DELETE /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified Role

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Role
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Role
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Role

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    RoleList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Role

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/roles

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    RoleList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind Role

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/roles/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Role
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Role

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/roles

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Role

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/roles

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    RoleBinding v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    RbacAuthorizationv1alpha1RoleBinding
    -

    RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata.
    roleRef
    RoleRef
    RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.
    subjects
    Subject array
    Subjects holds references to the objects the role applies to.
    -

    RoleBindingList v1alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    RoleBinding array
    Items is a list of RoleBindings
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard object's metadata.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a RoleBinding

    -

    HTTP Request

    -

    POST /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    RoleBinding
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    RoleBinding
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified RoleBinding

    -

    HTTP Request

    -

    PUT /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the RoleBinding
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    RoleBinding
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    RoleBinding
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified RoleBinding

    -

    HTTP Request

    -

    PATCH /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the RoleBinding
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    RoleBinding
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a RoleBinding

    -

    HTTP Request

    -

    DELETE /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the RoleBinding
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of RoleBinding

    -

    HTTP Request

    -

    DELETE /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified RoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the RoleBinding
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    RoleBinding
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind RoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    RoleBindingList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind RoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/rolebindings

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    RoleBindingList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind RoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/rolebindings/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the RoleBinding
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of RoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/rolebindings

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of RoleBinding

    -

    HTTP Request

    -

    GET /apis/rbac.authorization.k8s.io/v1alpha1/watch/rolebindings

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    SelfSubjectAccessReview v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Authorizationv1beta1SelfSubjectAccessReview
    -

    SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    spec
    SelfSubjectAccessReviewSpec
    Spec holds information about the request being evaluated. user and groups must be empty
    status
    SubjectAccessReviewStatus
    Status is filled in by the server and indicates whether the request is allowed or not
    -

    SelfSubjectAccessReviewSpec v1beta1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    nonResourceAttributes
    NonResourceAttributes
    NonResourceAttributes describes information for a non-resource access request
    resourceAttributes
    ResourceAttributes
    ResourceAuthorizationAttributes describes information for a resource access request
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a SelfSubjectAccessReview

    -

    HTTP Request

    -

    POST /apis/authorization.k8s.io/v1beta1/selfsubjectaccessreviews

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    SelfSubjectAccessReview
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    SelfSubjectAccessReview
    OK
    -
    -

    ServiceAccount v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ServiceAccount
    -

    ServiceAccount binds together: a name, understood by users, and perhaps by peripheral systems, for an identity a principal that can be authenticated and authorized * a set of secrets

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    imagePullSecrets
    LocalObjectReference array
    ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: http://kubernetes.io/docs/user-guide/secrets#manually-specifying-an-imagepullsecret
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    secrets
    ObjectReference array
    Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: http://kubernetes.io/docs/user-guide/secrets
    -

    ServiceAccountList v1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    ServiceAccount array
    List of ServiceAccounts. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a ServiceAccount

    -

    HTTP Request

    -

    POST /api/v1/namespaces/{namespace}/serviceaccounts

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ServiceAccount
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ServiceAccount
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified ServiceAccount

    -

    HTTP Request

    -

    PUT /api/v1/namespaces/{namespace}/serviceaccounts/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ServiceAccount
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    ServiceAccount
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ServiceAccount
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified ServiceAccount

    -

    HTTP Request

    -

    PATCH /api/v1/namespaces/{namespace}/serviceaccounts/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ServiceAccount
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ServiceAccount
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a ServiceAccount

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/serviceaccounts/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ServiceAccount
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of ServiceAccount

    -

    HTTP Request

    -

    DELETE /api/v1/namespaces/{namespace}/serviceaccounts

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified ServiceAccount

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/serviceaccounts/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ServiceAccount
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ServiceAccount
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ServiceAccount

    -

    HTTP Request

    -

    GET /api/v1/namespaces/{namespace}/serviceaccounts

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ServiceAccountList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind ServiceAccount

    -

    HTTP Request

    -

    GET /api/v1/serviceaccounts

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    ServiceAccountList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind ServiceAccount

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the ServiceAccount
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ServiceAccount

    -

    HTTP Request

    -

    GET /api/v1/watch/namespaces/{namespace}/serviceaccounts

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of ServiceAccount

    -

    HTTP Request

    -

    GET /api/v1/watch/serviceaccounts

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -
    -

    SubjectAccessReview v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Authorizationv1beta1SubjectAccessReview
    -

    SubjectAccessReview checks whether or not a user or group can perform an action.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    spec
    SubjectAccessReviewSpec
    Spec holds information about the request being evaluated
    status
    SubjectAccessReviewStatus
    Status is filled in by the server and indicates whether the request is allowed or not
    -

    SubjectAccessReviewSpec v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    extra
    object
    Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.
    group
    string array
    Groups is the groups you're testing for.
    nonResourceAttributes
    NonResourceAttributes
    NonResourceAttributes describes information for a non-resource access request
    resourceAttributes
    ResourceAttributes
    ResourceAuthorizationAttributes describes information for a resource access request
    user
    string
    User is the user you're testing for. If you specify "User" but not "Group", then is it interpreted as "What if User were not a member of any groups
    -

    SubjectAccessReviewStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    allowed
    boolean
    Allowed is required. True if the action would be allowed, false otherwise.
    evaluationError
    string
    EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.
    reason
    string
    Reason is optional. It indicates why a request was allowed or denied.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a SubjectAccessReview

    -

    HTTP Request

    -

    POST /apis/authorization.k8s.io/v1beta1/subjectaccessreviews

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    SubjectAccessReview
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    SubjectAccessReview
    OK
    -
    -

    TokenReview v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Authenticationv1beta1TokenReview
    -

    TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    spec
    TokenReviewSpec
    Spec holds information about the request being evaluated
    status
    TokenReviewStatus
    Status is filled in by the server and indicates whether the request can be authenticated.
    -

    TokenReviewSpec v1beta1

    - - - - - - - - - - - - - - - -
    FieldDescription
    token
    string
    Token is the opaque bearer token.
    -

    TokenReviewStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    authenticated
    boolean
    Authenticated indicates that the token was associated with a known user.
    error
    string
    Error indicates that the token couldn't be checked
    user
    UserInfo
    User is the UserInfo associated with the provided token.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a TokenReview

    -

    HTTP Request

    -

    POST /apis/authentication.k8s.io/v1beta1/tokenreviews

    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    TokenReview
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    TokenReview
    OK
    -
    -

    NetworkPolicy v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Extensionsv1beta1NetworkPolicy
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    NetworkPolicySpec
    Specification of the desired behavior for this NetworkPolicy.
    -

    NetworkPolicySpec v1beta1

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    ingress
    NetworkPolicyIngressRule array
    List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if namespace.networkPolicy.ingress.isolation is undefined and cluster policy allows it, OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not affect ingress isolation. If this field is present and contains at least one rule, this policy allows any traffic which matches at least one of the ingress rules in this list.
    podSelector
    LabelSelector
    Selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace.
    -

    NetworkPolicyList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    NetworkPolicy array
    Items is a list of schema objects.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a NetworkPolicy

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    NetworkPolicy
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    NetworkPolicy
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified NetworkPolicy

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the NetworkPolicy
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    NetworkPolicy
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    NetworkPolicy
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified NetworkPolicy

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the NetworkPolicy
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    NetworkPolicy
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a NetworkPolicy

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the NetworkPolicy
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of NetworkPolicy

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified NetworkPolicy

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the NetworkPolicy
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    NetworkPolicy
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind NetworkPolicy

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    NetworkPolicyList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind NetworkPolicy

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/networkpolicies

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    NetworkPolicyList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind NetworkPolicy

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/networkpolicies/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the NetworkPolicy
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of NetworkPolicy

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/networkpolicies

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of NetworkPolicy

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/networkpolicies

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    DEFINITIONS

    -

    This section contains definitions for objects used in the Kubernetes APIs.

    -

    APIGroup unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedAPIGroup
    -

    APIGroup contains the name, the supported versions, and the preferred version of a group.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    name
    string
    name is the name of the group.
    preferredVersion
    GroupVersionForDiscovery
    preferredVersion is the version preferred by the API server, which probably is the storage version.
    serverAddressByClientCIDRs
    ServerAddressByClientCIDR array
    a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.
    versions
    GroupVersionForDiscovery array
    versions are the versions supported in this group.
    -

    APIResource unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedAPIResource
    -

    APIResource specifies the name of a resource and whether it is namespaced.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    kind
    string
    kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')
    name
    string
    name is the name of the resource.
    namespaced
    boolean
    namespaced indicates if a resource is namespaced or not.
    -

    APIVersion v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1APIVersion
    -

    An APIVersion represents a single concrete version of an object model.

    - - - - - - - - - - - - - - - -
    FieldDescription
    name
    string
    Name of this version (e.g. 'v1').
    -

    APIVersions unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedAPIVersions
    -

    APIVersions lists the versions that are available, to allow clients to discover the API at /api, which is the root path of the legacy v1 API.

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    serverAddressByClientCIDRs
    ServerAddressByClientCIDR array
    a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.
    versions
    string array
    versions are the api versions that are available.
    -

    AWSElasticBlockStoreVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1AWSElasticBlockStoreVolumeSource
    -

    Represents a Persistent Disk resource in AWS.

    -

    An AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsType
    string
    Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
    partition
    integer
    The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
    readOnly
    boolean
    Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
    volumeID
    string
    Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore
    -

    AttachedVolume v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1AttachedVolume
    -

    AttachedVolume describes a volume attached to a node

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    devicePath
    string
    DevicePath represents the device path where the volume should be available
    name
    string
    Name of the attached volume
    -

    AzureDiskVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1AzureDiskVolumeSource
    -

    AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    cachingMode
    string
    Host Caching mode: None, Read Only, Read Write.
    diskName
    string
    The Name of the data disk in the blob storage
    diskURI
    string
    The URI the data disk in the blob storage
    fsType
    string
    Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
    readOnly
    boolean
    Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.
    -

    AzureFileVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1AzureFileVolumeSource
    -

    AzureFile represents an Azure File Service mount on the host and bind mount to the pod.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    readOnly
    boolean
    Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.
    secretName
    string
    the name of secret that contains Azure Storage Account Name and Key
    shareName
    string
    Share Name
    -

    CPUTargetUtilization v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1CPUTargetUtilization
    - - - - - - - - - - - - - - - -
    FieldDescription
    targetPercentage
    integer
    fraction of the requested CPU that should be utilized/used, e.g. 70 means that 70% of the requested CPU should be in use.
    -

    Capabilities v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Capabilities
    -

    Adds and removes POSIX capabilities from running containers.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    add
    string array
    Added capabilities
    drop
    string array
    Removed capabilities
    -

    CephFSVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1CephFSVolumeSource
    -

    Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    monitors
    string array
    Required: Monitors is a collection of Ceph monitors More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
    path
    string
    Optional: Used as the mounted root, rather than the full Ceph tree, default is /
    readOnly
    boolean
    Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
    secretFile
    string
    Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
    secretRef
    LocalObjectReference
    Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
    user
    string
    Optional: User is the rados user name, default is admin More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
    -

    CertificateSigningRequestCondition v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1alpha1CertificateSigningRequestCondition
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastUpdateTime
    Time
    timestamp for the last update to this condition
    message
    string
    human readable message with details about the request state
    reason
    string
    brief reason for the request state
    type
    string
    request approval state, currently Approved or Denied.
    -

    CinderVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1CinderVolumeSource
    -

    Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsType
    string
    Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
    readOnly
    boolean
    Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
    volumeID
    string
    volume id used to identify the volume in cinder More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
    -

    ComponentCondition v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ComponentCondition
    -

    Information about the condition of a component.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    error
    string
    Condition error code for a component. For example, a health check error code.
    message
    string
    Message about the condition for a component. For example, information about a health check.
    status
    string
    Status of the condition for a component. Valid values for "Healthy": "True", "False", or "Unknown".
    type
    string
    Type of condition for a component. Valid value: "Healthy"
    -

    ConfigMapKeySelector v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ConfigMapKeySelector
    -

    Selects a key from a ConfigMap.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    key
    string
    The key to select.
    name
    string
    Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
    -

    ConfigMapVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ConfigMapVolumeSource
    -

    Adapts a ConfigMap into a volume.

    -

    The contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    defaultMode
    integer
    Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
    items
    KeyToPath array
    If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error. Paths must be relative and may not contain the '..' path or start with '..'.
    name
    string
    Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
    -

    ContainerImage v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ContainerImage
    -

    Describe a container image

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    names
    string array
    Names by which this image is known. e.g. ["gcr.io/google_containers/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]
    sizeBytes
    integer
    The size of the image in bytes.
    -

    ContainerPort v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ContainerPort
    -

    ContainerPort represents a network port in a single container.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    containerPort
    integer
    Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.
    hostIP
    string
    What host IP to bind the external port to.
    hostPort
    integer
    Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.
    name
    string
    If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.
    protocol
    string
    Protocol for port. Must be UDP or TCP. Defaults to "TCP".
    -

    ContainerState v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ContainerState
    -

    ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    running
    ContainerStateRunning
    Details about a running container
    terminated
    ContainerStateTerminated
    Details about a terminated container
    waiting
    ContainerStateWaiting
    Details about a waiting container
    -

    ContainerStateRunning v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ContainerStateRunning
    -

    ContainerStateRunning is a running state of a container.

    - - - - - - - - - - - - - - - -
    FieldDescription
    startedAt
    Time
    Time at which the container was last (re-)started
    -

    ContainerStateTerminated v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ContainerStateTerminated
    -

    ContainerStateTerminated is a terminated state of a container.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    containerID
    string
    Container's ID in the format 'docker://'
    exitCode
    integer
    Exit status from the last termination of the container
    finishedAt
    Time
    Time at which the container last terminated
    message
    string
    Message regarding the last termination of the container
    reason
    string
    (brief) reason from the last termination of the container
    signal
    integer
    Signal from the last termination of the container
    startedAt
    Time
    Time at which previous execution of the container started
    -

    ContainerStateWaiting v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ContainerStateWaiting
    -

    ContainerStateWaiting is a waiting state of a container.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    message
    string
    Message regarding why the container is not yet running.
    reason
    string
    (brief) reason the container is not yet running.
    -

    CrossVersionObjectReference v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1CrossVersionObjectReference
    -

    CrossVersionObjectReference contains enough information to let you identify the referred resource.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    API version of the referent
    kind
    string
    Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds"
    name
    string
    Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names
    -

    DaemonEndpoint v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1DaemonEndpoint
    -

    DaemonEndpoint contains information about a single Daemon endpoint.

    - - - - - - - - - - - - - - - -
    FieldDescription
    Port
    integer
    Port number of the given endpoint.
    -

    DeleteOptions v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1DeleteOptions
    -

    DeleteOptions may be provided when deleting an API object

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    gracePeriodSeconds
    integer
    The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    orphanDependents
    boolean
    Should the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    preconditions
    Preconditions
    Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.
    -

    DeploymentCondition v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1DeploymentCondition
    -

    DeploymentCondition describes the state of a deployment at a certain point.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastTransitionTime
    Time
    Last time the condition transitioned from one status to another.
    lastUpdateTime
    Time
    The last time this condition was updated.
    message
    string
    A human readable message indicating details about the transition.
    reason
    string
    The reason for the condition's last transition.
    status
    string
    Status of the condition, one of True, False, Unknown.
    type
    string
    Type of deployment condition.
    -

    DownwardAPIVolumeFile v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1DownwardAPIVolumeFile
    -

    DownwardAPIVolumeFile represents information to create the file containing the pod field

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fieldRef
    ObjectFieldSelector
    Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
    mode
    integer
    Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
    path
    string
    Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
    resourceFieldRef
    ResourceFieldSelector
    Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
    -

    DownwardAPIVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1DownwardAPIVolumeSource
    -

    DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    defaultMode
    integer
    Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
    items
    DownwardAPIVolumeFile array
    Items is a list of downward API volume file
    -

    EmptyDirVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1EmptyDirVolumeSource
    -

    Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - -
    FieldDescription
    medium
    string
    What type of storage medium should back this directory. The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir
    -

    EndpointAddress v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1EndpointAddress
    -

    EndpointAddress is a tuple that describes single IP address.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    hostname
    string
    The Hostname of this endpoint
    ip
    string
    The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.
    nodeName
    string
    Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
    targetRef
    ObjectReference
    Reference to object providing the endpoint.
    -

    EndpointPort v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1EndpointPort
    -

    EndpointPort is a tuple that describes a single port.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    name
    string
    The name of this port (corresponds to ServicePort.Name). Must be a DNS_LABEL. Optional only if one port is defined.
    port
    integer
    The port number of the endpoint.
    protocol
    string
    The IP protocol for this port. Must be UDP or TCP. Default is TCP.
    -

    EndpointSubset v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1EndpointSubset
    -

    EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given: - { - Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], - Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] - } -The resulting set of endpoints can be viewed as: - a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], - b: [ 10.10.1.1:309, 10.10.2.2:309 ]

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    addresses
    EndpointAddress array
    IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.
    notReadyAddresses
    EndpointAddress array
    IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.
    ports
    EndpointPort array
    Port numbers available on the related IP addresses.
    -

    EnvVar v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1EnvVar
    -

    EnvVar represents an environment variable present in a Container.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    name
    string
    Name of the environment variable. Must be a C_IDENTIFIER.
    value
    string
    Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".
    valueFrom
    EnvVarSource
    Source for the environment variable's value. Cannot be used if value is not empty.
    -

    EnvVarSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1EnvVarSource
    -

    EnvVarSource represents a source for the value of an EnvVar.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    configMapKeyRef
    ConfigMapKeySelector
    Selects a key of a ConfigMap.
    fieldRef
    ObjectFieldSelector
    Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP.
    resourceFieldRef
    ResourceFieldSelector
    Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
    secretKeyRef
    SecretKeySelector
    Selects a key of a secret in the pod's namespace
    -

    EventSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1EventSource
    -

    EventSource contains information for an event.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    component
    string
    Component from which the event is generated.
    host
    string
    Node name on which the event is generated.
    -

    Eviction v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1Eviction
    -

    Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions.

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    deleteOptions
    DeleteOptions
    DeleteOptions may be provided
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    ObjectMeta describes the pod that is being evicted.
    -

    ExecAction v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ExecAction
    -

    ExecAction describes a "run in container" action.

    - - - - - - - - - - - - - - - - -
    FieldDescription
    command
    string array
    Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
    -

    FCVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1FCVolumeSource
    -

    Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsType
    string
    Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
    lun
    integer
    Required: FC target lun number
    readOnly
    boolean
    Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.
    targetWWNs
    string array
    Required: FC target worldwide names (WWNs)
    -

    FlexVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1FlexVolumeSource
    -

    FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    driver
    string
    Driver is the name of the driver to use for this volume.
    fsType
    string
    Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
    options
    object
    Optional: Extra command options if any.
    readOnly
    boolean
    Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.
    secretRef
    LocalObjectReference
    Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.
    -

    FlockerVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1FlockerVolumeSource
    -

    Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    datasetName
    string
    Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated
    datasetUUID
    string
    UUID of the dataset. This is unique identifier of a Flocker dataset
    -

    GCEPersistentDiskVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1GCEPersistentDiskVolumeSource
    -

    Represents a Persistent Disk resource in Google Compute Engine.

    -

    A GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsType
    string
    Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
    partition
    integer
    The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
    pdName
    string
    Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
    readOnly
    boolean
    ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk
    -

    GitRepoVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1GitRepoVolumeSource
    -

    Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    directory
    string
    Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.
    repository
    string
    Repository URL
    revision
    string
    Commit hash for the specified revision.
    -

    GlusterfsVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1GlusterfsVolumeSource
    -

    Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    endpoints
    string
    EndpointsName is the endpoint name that details Glusterfs topology. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
    path
    string
    Path is the Glusterfs volume path. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
    readOnly
    boolean
    ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
    -

    GroupVersionForDiscovery unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedGroupVersionForDiscovery
    -

    GroupVersion contains the "group/version" and "version" string of a version. It is made a struct to keep extensibility.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    groupVersion
    string
    groupVersion specifies the API group and version in the form "group/version"
    version
    string
    version specifies the version in the form of "version". This is to save the clients the trouble of splitting the GroupVersion.
    -

    HTTPGetAction v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1HTTPGetAction
    -

    HTTPGetAction describes an action based on HTTP Get requests.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    host
    string
    Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
    httpHeaders
    HTTPHeader array
    Custom headers to set in the request. HTTP allows repeated headers.
    path
    string
    Path to access on the HTTP server.
    port
    IntOrString
    Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
    scheme
    string
    Scheme to use for connecting to the host. Defaults to HTTP.
    -

    HTTPHeader v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1HTTPHeader
    -

    HTTPHeader describes a custom header to be used in HTTP probes

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    name
    string
    The header field name
    value
    string
    The header field value
    -

    HTTPIngressPath v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1HTTPIngressPath
    -

    HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    backend
    IngressBackend
    Backend defines the referenced service endpoint to which the traffic will be forwarded to.
    path
    string
    Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional "path" part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend.
    -

    HTTPIngressRuleValue v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1HTTPIngressRuleValue
    -

    HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.

    - - - - - - - - - - - - - - - -
    FieldDescription
    paths
    HTTPIngressPath array
    A collection of paths that map requests to backends.
    -

    Handler v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Handler
    -

    Handler defines a specific action that should be taken

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    exec
    ExecAction
    One and only one of the following should be specified. Exec specifies the action to take.
    httpGet
    HTTPGetAction
    HTTPGet specifies the http request to perform.
    tcpSocket
    TCPSocketAction
    TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported
    -

    HostPathVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1HostPathVolumeSource
    -

    Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.

    - - - - - - - - - - - - - - - -
    FieldDescription
    path
    string
    Path of the directory on the host. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath
    -

    ISCSIVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ISCSIVolumeSource
    -

    Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsType
    string
    Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#iscsi
    iqn
    string
    Target iSCSI Qualified Name.
    iscsiInterface
    string
    Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport.
    lun
    integer
    iSCSI target lun number.
    readOnly
    boolean
    ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.
    targetPortal
    string
    iSCSI target portal. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).
    -

    Info version

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreversionInfo
    -

    Info contains versioning information. how we'll want to distribute that information.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    buildDate
    string
    compiler
    string
    gitCommit
    string
    gitTreeState
    string
    gitVersion
    string
    goVersion
    string
    major
    string
    minor
    string
    platform
    string
    -

    IngressBackend v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1IngressBackend
    -

    IngressBackend describes all endpoints for a given service and port.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    serviceName
    string
    Specifies the name of the referenced service.
    servicePort
    IntOrString
    Specifies the port of the referenced service.
    -

    IngressRule v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1IngressRule
    -

    IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    host
    string
    Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the "host" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the IP in the Spec of the parent Ingress. 2. The : delimiter is not respected because ports are not allowed. Currently the port of an Ingress is implicitly :80 for http and :443 for https. Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.
    http
    HTTPIngressRuleValue
    -

    IngressTLS v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1IngressTLS
    -

    IngressTLS describes the transport layer security associated with an Ingress.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    hosts
    string array
    Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.
    secretName
    string
    SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.
    -

    IntOrString intstr

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreintstrIntOrString
    - - - - - - - - - - - - - - -
    FieldDescription
    -

    JobCondition v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1JobCondition
    - - -

    JobCondition describes current state of a job.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastProbeTime
    Time
    Last time the condition was checked.
    lastTransitionTime
    Time
    Last time the condition transit from one status to another.
    message
    string
    Human readable message indicating details about last transition.
    reason
    string
    (brief) reason for the condition's last transition.
    status
    string
    Status of the condition, one of True, False, Unknown.
    type
    string
    Type of job condition, Complete or Failed.
    -

    JobTemplateSpec v2alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev2alpha1JobTemplateSpec
    -

    JobTemplateSpec describes the data a Job should have when created from a template

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    metadata
    ObjectMeta
    Standard object's metadata of the jobs created from this template. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    JobSpec
    Specification of the desired behavior of the job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    KeyToPath v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1KeyToPath
    -

    Maps a string key to a path within a volume.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    key
    string
    The key to project.
    mode
    integer
    Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
    path
    string
    The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
    -

    LabelSelector unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedLabelSelector
    -

    A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    matchExpressions
    LabelSelectorRequirement array
    matchExpressions is a list of label selector requirements. The requirements are ANDed.
    matchLabels
    object
    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
    -

    LabelSelectorRequirement unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedLabelSelectorRequirement
    -

    A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    key
    string
    key is the label key that the selector applies to.
    operator
    string
    operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist.
    values
    string array
    values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
    -

    Lifecycle v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Lifecycle
    -

    Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    postStart
    Handler
    PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details
    preStop
    Handler
    PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details
    -

    LimitRangeItem v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1LimitRangeItem
    -

    LimitRangeItem defines a min/max usage limit for any resource that matches on kind.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    default
    object
    Default resource requirement limit value by resource name if resource limit is omitted.
    defaultRequest
    object
    DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
    max
    object
    Max usage constraints on this kind by resource name.
    maxLimitRequestRatio
    object
    MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
    min
    object
    Min usage constraints on this kind by resource name.
    type
    string
    Type of resource that this limit applies to.
    -

    ListMeta unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedListMeta
    -

    ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    resourceVersion
    string
    String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency
    selfLink
    string
    SelfLink is a URL representing this object. Populated by the system. Read-only.
    -

    LoadBalancerIngress v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1LoadBalancerIngress
    -

    LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    hostname
    string
    Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)
    ip
    string
    IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)
    -

    LoadBalancerStatus v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1LoadBalancerStatus
    -

    LoadBalancerStatus represents the status of a load-balancer.

    - - - - - - - - - - - - - - - -
    FieldDescription
    ingress
    LoadBalancerIngress array
    Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.
    -

    LocalObjectReference v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1LocalObjectReference
    -

    LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

    - - - - - - - - - - - - - - - -
    FieldDescription
    name
    string
    Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
    -

    NFSVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1NFSVolumeSource
    -

    Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    path
    string
    Path that is exported by the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs
    readOnly
    boolean
    ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#nfs
    server
    string
    Server is the hostname or IP address of the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs
    -

    NetworkPolicyIngressRule v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1NetworkPolicyIngressRule
    -

    This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    from
    NetworkPolicyPeer array
    List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is not provided, this rule matches all sources (traffic not restricted by source). If this field is empty, this rule matches no sources (no traffic matches). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.
    ports
    NetworkPolicyPort array
    List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is not provided, this rule matches all ports (traffic not restricted by port). If this field is empty, this rule matches no ports (no traffic matches). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.
    -

    NetworkPolicyPeer v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1NetworkPolicyPeer
    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    namespaceSelector
    LabelSelector
    Selects Namespaces using cluster scoped-labels. This matches all pods in all namespaces selected by this label selector. This field follows standard label selector semantics. If omitted, this selector selects no namespaces. If present but empty, this selector selects all namespaces.
    podSelector
    LabelSelector
    This is a label selector which selects Pods in this namespace. This field follows standard label selector semantics. If not provided, this selector selects no pods. If present but empty, this selector selects all pods in this namespace.
    -

    NetworkPolicyPort v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1NetworkPolicyPort
    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    port
    IntOrString
    If specified, the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.
    protocol
    string
    Optional. The protocol (TCP or UDP) which traffic must match. If not specified, this field defaults to TCP.
    -

    NodeAddress v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1NodeAddress
    -

    NodeAddress contains information for the node's address.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    address
    string
    The node address.
    type
    string
    Node address type, one of Hostname, ExternalIP or InternalIP.
    -

    NodeCondition v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1NodeCondition
    -

    NodeCondition contains condition information for a node.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastHeartbeatTime
    Time
    Last time we got an update on a given condition.
    lastTransitionTime
    Time
    Last time the condition transit from one status to another.
    message
    string
    Human readable message indicating details about last transition.
    reason
    string
    (brief) reason for the condition's last transition.
    status
    string
    Status of the condition, one of True, False, Unknown.
    type
    string
    Type of node condition.
    -

    NodeDaemonEndpoints v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1NodeDaemonEndpoints
    -

    NodeDaemonEndpoints lists ports opened by daemons running on the Node.

    - - - - - - - - - - - - - - - -
    FieldDescription
    kubeletEndpoint
    DaemonEndpoint
    Endpoint on which Kubelet is listening.
    -

    NodeSystemInfo v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1NodeSystemInfo
    -

    NodeSystemInfo is a set of ids/uuids to uniquely identify the node.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    architecture
    string
    The Architecture reported by the node
    bootID
    string
    Boot ID reported by the node.
    containerRuntimeVersion
    string
    ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).
    kernelVersion
    string
    Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
    kubeProxyVersion
    string
    KubeProxy Version reported by the node.
    kubeletVersion
    string
    Kubelet Version reported by the node.
    machineID
    string
    MachineID reported by the node. For unique machine identification in the cluster this field is prefered. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
    operatingSystem
    string
    The Operating System reported by the node
    osImage
    string
    OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
    systemUUID
    string
    SystemUUID reported by the node. For unique machine identification MachineID is prefered. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html
    -

    NonResourceAttributes v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1NonResourceAttributes
    -

    NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    path
    string
    Path is the URL path of the request
    verb
    string
    Verb is the standard HTTP verb
    -

    ObjectFieldSelector v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ObjectFieldSelector
    -

    ObjectFieldSelector selects an APIVersioned field of an object.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    Version of the schema the FieldPath is written in terms of, defaults to "v1".
    fieldPath
    string
    Path of the field to select in the specified API version.
    -

    ObjectMeta v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ObjectMeta
    -

    ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    annotations
    object
    Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations
    clusterName
    string
    The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
    creationTimestamp
    Time
    CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    deletionGracePeriodSeconds
    integer
    Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.
    deletionTimestamp
    Time
    DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    finalizers
    string array
    Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.
    generateName
    string
    GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency
    generation
    integer
    A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
    labels
    object
    Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels
    name
    string
    Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names
    namespace
    string
    Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces
    ownerReferences
    OwnerReference array
    List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.
    resourceVersion
    string
    An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency
    selfLink
    string
    SelfLink is a URL representing this object. Populated by the system. Read-only.
    uid
    string
    UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
    -

    ObjectReference v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ObjectReference
    -

    ObjectReference contains enough information to let you inspect or modify the referred object.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    API version of the referent.
    fieldPath
    string
    If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
    kind
    string
    Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    name
    string
    Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
    namespace
    string
    Namespace of the referent. More info: http://kubernetes.io/docs/user-guide/namespaces
    resourceVersion
    string
    Specific resourceVersion to which this reference is made, if any. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency
    uid
    string
    UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
    -

    OwnerReference v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1OwnerReference
    -

    OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    API version of the referent.
    controller
    boolean
    If true, this reference points to the managing controller.
    kind
    string
    Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    name
    string
    Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
    uid
    string
    UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
    -

    Patch unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedPatch
    -

    Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.

    - - - - - - - - - - - - -
    FieldDescription
    -

    PersistentVolumeClaimVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1PersistentVolumeClaimVolumeSource
    -

    PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    claimName
    string
    ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
    readOnly
    boolean
    Will force the ReadOnly setting in VolumeMounts. Default false.
    -

    PhotonPersistentDiskVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1PhotonPersistentDiskVolumeSource
    -

    Represents a Photon Controller persistent disk resource.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsType
    string
    Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
    pdID
    string
    ID that identifies Photon Controller persistent disk
    -

    PodCondition v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1PodCondition
    -

    PodCondition contains details for the current condition of this pod.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastProbeTime
    Time
    Last time we probed the condition.
    lastTransitionTime
    Time
    Last time the condition transitioned from one status to another.
    message
    string
    Human-readable message indicating details about last transition.
    reason
    string
    Unique, one-word, CamelCase reason for the condition's last transition.
    status
    string
    Status is the status of the condition. Can be True, False, Unknown. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions
    type
    string
    Type is the type of the condition. Currently only Ready. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions
    -

    PodSecurityContext v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1PodSecurityContext
    -

    PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsGroup
    integer
    A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- If unset, the Kubelet will not modify the ownership and permissions of any volume.
    runAsNonRoot
    boolean
    Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
    runAsUser
    integer
    The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.
    seLinuxOptions
    SELinuxOptions
    The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.
    supplementalGroups
    integer array
    A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.
    -

    PolicyRule v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1alpha1PolicyRule
    -

    PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiGroups
    string array
    APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.
    attributeRestrictions
    RawExtension
    AttributeRestrictions will vary depending on what the Authorizer/AuthorizationAttributeBuilder pair supports. If the Authorizer does not recognize how to handle the AttributeRestrictions, the Authorizer should report an error.
    nonResourceURLs
    string array
    NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.
    resourceNames
    string array
    ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.
    resources
    string array
    Resources is a list of resources this rule applies to. ResourceAll represents all resources.
    verbs
    string array
    Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.
    -

    Preconditions v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Preconditions
    -

    Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.

    - - - - - - - - - - - - - - - -
    FieldDescription
    uid
    string
    Specifies the target UID.
    -

    Probe v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Probe
    -

    Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    exec
    ExecAction
    One and only one of the following should be specified. Exec specifies the action to take.
    failureThreshold
    integer
    Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
    httpGet
    HTTPGetAction
    HTTPGet specifies the http request to perform.
    initialDelaySeconds
    integer
    Number of seconds after the container has started before liveness probes are initiated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes
    periodSeconds
    integer
    How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
    successThreshold
    integer
    Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
    tcpSocket
    TCPSocketAction
    TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported
    timeoutSeconds
    integer
    Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes
    -

    Quantity resource

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreresourceQuantity
    - - - - - - - - - - - - - - -
    FieldDescription
    -

    QuobyteVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1QuobyteVolumeSource
    -

    Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    group
    string
    Group to map volume access to Default is no group
    readOnly
    boolean
    ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.
    registry
    string
    Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes
    user
    string
    User to map volume access to Defaults to serivceaccount user
    volume
    string
    Volume is a string that references an already created Quobyte volume by name.
    -

    RBDVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1RBDVolumeSource
    -

    Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsType
    string
    Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#rbd
    image
    string
    The rados image name. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
    keyring
    string
    Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
    monitors
    string array
    A collection of Ceph monitors. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
    pool
    string
    The rados pool name. Default is rbd. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it.
    readOnly
    boolean
    ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
    secretRef
    LocalObjectReference
    SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
    user
    string
    The rados user name. Default is admin. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
    -

    RawExtension runtime

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreruntimeRawExtension
    -

    RawExtension is used to hold extensions in external versions.

    -

    To use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.

    -

    // Internal package: type MyAPIObject struct { - runtime.TypeMeta json:",inline" - MyPlugin runtime.Object json:"myPlugin" -} type PluginA struct { - AOption string json:"aOption" -}

    -

    // External package: type MyAPIObject struct { - runtime.TypeMeta json:",inline" - MyPlugin runtime.RawExtension json:"myPlugin" -} type PluginA struct { - AOption string json:"aOption" -}

    -

    // On the wire, the JSON will look something like this: { - "kind":"MyAPIObject", - "apiVersion":"v1", - "myPlugin": { - "kind":"PluginA", - "aOption":"foo", - }, -}

    -

    So what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)

    - - - - - - - - - - - - - - - -
    FieldDescription
    Raw
    string
    Raw is the underlying serialization of this object.
    -

    ReplicaSetCondition v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1ReplicaSetCondition
    -

    ReplicaSetCondition describes the state of a replica set at a certain point.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastTransitionTime
    Time
    The last time the condition transitioned from one status to another.
    message
    string
    A human readable message indicating details about the transition.
    reason
    string
    The reason for the condition's last transition.
    status
    string
    Status of the condition, one of True, False, Unknown.
    type
    string
    Type of replica set condition.
    -

    ReplicationControllerCondition v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ReplicationControllerCondition
    -

    ReplicationControllerCondition describes the state of a replication controller at a certain point.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastTransitionTime
    Time
    The last time the condition transitioned from one status to another.
    message
    string
    A human readable message indicating details about the transition.
    reason
    string
    The reason for the condition's last transition.
    status
    string
    Status of the condition, one of True, False, Unknown.
    type
    string
    Type of replication controller condition.
    -

    ResourceAttributes v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1ResourceAttributes
    -

    ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    group
    string
    Group is the API Group of the Resource. "*" means all.
    name
    string
    Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.
    namespace
    string
    Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview
    resource
    string
    Resource is one of the existing resource types. "*" means all.
    subresource
    string
    Subresource is one of the existing resource types. "" means none.
    verb
    string
    Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all.
    version
    string
    Version is the API Version of the Resource. "*" means all.
    -

    ResourceFieldSelector v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ResourceFieldSelector
    -

    ResourceFieldSelector represents container resources (cpu, memory) and their output format

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    containerName
    string
    Container name: required for volumes, optional for env vars
    divisor
    Quantity
    Specifies the output format of the exposed resources, defaults to "1"
    resource
    string
    Required: resource to select
    -

    ResourceRequirements v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ResourceRequirements
    -

    ResourceRequirements describes the compute resource requirements.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    limits
    object
    Limits describes the maximum amount of compute resources allowed. More info: http://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
    requests
    object
    Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: http://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
    -

    RoleRef v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1alpha1RoleRef
    -

    RoleRef contains information that points to the role being used

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiGroup
    string
    APIGroup is the group for the resource being referenced
    kind
    string
    Kind is the type of resource being referenced
    name
    string
    Name is the name of resource being referenced
    -

    RollbackConfig v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1RollbackConfig
    - - - - - - - - - - - - - - - -
    FieldDescription
    revision
    integer
    The revision to rollback to. If set to 0, rollbck to the last revision.
    -

    SELinuxOptions v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1SELinuxOptions
    -

    SELinuxOptions are the labels to be applied to the container

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    level
    string
    Level is SELinux level label that applies to the container.
    role
    string
    Role is a SELinux role label that applies to the container.
    type
    string
    Type is a SELinux type label that applies to the container.
    user
    string
    User is a SELinux user label that applies to the container.
    -

    Scale v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1Scale
    - - -

    Scale represents a scaling request for a resource.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata.
    spec
    ScaleSpec
    defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.
    status
    ScaleStatus
    current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only.
    -

    SecretKeySelector v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1SecretKeySelector
    -

    SecretKeySelector selects a key of a Secret.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    key
    string
    The key of the secret to select from. Must be a valid secret key.
    name
    string
    Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
    -

    SecretVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1SecretVolumeSource
    -

    Adapts a Secret into a volume.

    -

    The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    defaultMode
    integer
    Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
    items
    KeyToPath array
    If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error. Paths must be relative and may not contain the '..' path or start with '..'.
    secretName
    string
    Name of the secret in the pod's namespace to use. More info: http://kubernetes.io/docs/user-guide/volumes#secrets
    -

    SecurityContext v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1SecurityContext
    -

    SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    capabilities
    Capabilities
    The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.
    privileged
    boolean
    Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.
    readOnlyRootFilesystem
    boolean
    Whether this container has a read-only root filesystem. Default is false.
    runAsNonRoot
    boolean
    Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
    runAsUser
    integer
    The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
    seLinuxOptions
    SELinuxOptions
    The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
    -

    ServerAddressByClientCIDR unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedServerAddressByClientCIDR
    -

    ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    clientCIDR
    string
    The CIDR with which clients can match their IP to figure out the server address that they should use.
    serverAddress
    string
    Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port.
    -

    ServicePort v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1ServicePort
    -

    ServicePort contains information on service's port.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    name
    string
    The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service.
    nodePort
    integer
    The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: http://kubernetes.io/docs/user-guide/services#type--nodeport
    port
    integer
    The port that will be exposed by this service.
    protocol
    string
    The IP protocol for this port. Supports "TCP" and "UDP". Default is TCP.
    targetPort
    IntOrString
    Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: http://kubernetes.io/docs/user-guide/services#defining-a-service
    -

    Status unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedStatus
    -

    Status is a return value for calls that don't return other objects.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    code
    integer
    Suggested HTTP return code for this status, 0 if not set.
    details
    StatusDetails
    Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    message
    string
    A human-readable description of the status of this operation.
    metadata
    ListMeta
    Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    reason
    string
    A machine-readable description of why this operation is in the "Failure" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.
    status
    string
    Status of the operation. One of: "Success" or "Failure". More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    StatusCause unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedStatusCause
    -

    StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    field
    string
    The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. Examples: "name" - the field "name" on the current resource "items[0].name" - the field "name" on the first array entry in "items"
    message
    string
    A human-readable description of the cause of the error. This field may be presented as-is to a reader.
    reason
    string
    A machine-readable description of the cause of the error. If this value is empty there is no information available.
    -

    StatusDetails unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedStatusDetails
    -

    StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    causes
    StatusCause array
    The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.
    group
    string
    The group attribute of the resource associated with the status StatusReason.
    kind
    string
    The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    name
    string
    The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).
    retryAfterSeconds
    integer
    If specified, the time in seconds before the operation should be retried.
    -

    Subject v1alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1alpha1Subject
    -

    Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion holds the API group and version of the referenced object.
    kind
    string
    Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.
    name
    string
    Name of the object being referenced.
    namespace
    string
    Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.
    -

    SubresourceReference v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1SubresourceReference
    -

    SubresourceReference contains enough information to let you inspect or modify the referred subresource.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    API version of the referent
    kind
    string
    Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    name
    string
    Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names
    subresource
    string
    Subresource name of the referent
    -

    TCPSocketAction v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1TCPSocketAction
    -

    TCPSocketAction describes an action based on opening a socket

    - - - - - - - - - - - - - - - -
    FieldDescription
    port
    IntOrString
    Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
    -

    Time unversioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreunversionedTime
    - - - - - - - - - - - - - - -
    FieldDescription
    -

    UserInfo v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1UserInfo
    -

    UserInfo holds the information about the user needed to implement the user.Info interface.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    extra
    object
    Any additional information provided by the authenticator.
    groups
    string array
    The names of groups this user is a part of.
    uid
    string
    A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.
    username
    string
    The name that uniquely identifies this user among all active users.
    -

    VolumeMount v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1VolumeMount
    -

    VolumeMount describes a mounting of a Volume within a container.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    mountPath
    string
    Path within the container at which the volume should be mounted. Must not contain ':'.
    name
    string
    This must match the Name of a Volume.
    readOnly
    boolean
    Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.
    subPath
    string
    Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).
    -

    VsphereVirtualDiskVolumeSource v1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1VsphereVirtualDiskVolumeSource
    -

    Represents a vSphere volume resource.

    - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    fsType
    string
    Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
    volumePath
    string
    Path that identifies vSphere volume vmdk
    -

    OLD API VERSIONS

    -

    This section contains older versions of resources shown above.

    -
    -

    Event versioned

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    CoreversionedEvent
    - - - -

    Event represents a single event to a watched resource.

    - - - - - - - - - - - - - - - - - -
    FieldDescription
    object
    RawExtension
    Object is: If Type is Added or Modified: the new state of the object. If Type is Deleted: the state of the object immediately before deletion. If Type is Error: api.Status is recommended; other types may make sense depending on context.
    type
    string
    -
    -

    HorizontalPodAutoscaler v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Extensionsv1beta1HorizontalPodAutoscaler
    - - - -

    configuration of a horizontal pod autoscaler.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    HorizontalPodAutoscalerSpec
    behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.
    status
    HorizontalPodAutoscalerStatus
    current information about the autoscaler.
    -

    HorizontalPodAutoscalerSpec v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    cpuUtilization
    CPUTargetUtilization
    target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified it defaults to the target CPU utilization at 80% of the requested resources.
    maxReplicas
    integer
    upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.
    minReplicas
    integer
    lower limit for the number of pods that can be set by the autoscaler, default 1.
    scaleRef
    SubresourceReference
    reference to Scale subresource; horizontal pod autoscaler will learn the current resource consumption from its status, and will set the desired number of pods by modifying its spec.
    -

    HorizontalPodAutoscalerStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    currentCPUUtilizationPercentage
    integer
    current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.
    currentReplicas
    integer
    current number of replicas of pods managed by this autoscaler.
    desiredReplicas
    integer
    desired number of replicas of pods managed by this autoscaler.
    lastScaleTime
    Time
    last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed.
    observedGeneration
    integer
    most recent generation observed by this autoscaler.
    -

    HorizontalPodAutoscalerList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    HorizontalPodAutoscaler array
    list of horizontal pod autoscaler objects.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata.
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    create a HorizontalPodAutoscaler

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    HorizontalPodAutoscaler
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    HorizontalPodAutoscaler
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete a HorizontalPodAutoscaler

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of HorizontalPodAutoscaler

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscalerList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/horizontalpodautoscalers

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscalerList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch changes to an object of kind HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/horizontalpodautoscalers

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/horizontalpodautoscalers

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified HorizontalPodAutoscaler

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the HorizontalPodAutoscaler
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    HorizontalPodAutoscaler
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    HorizontalPodAutoscaler
    OK
    -
    -

    Job v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Extensionsv1beta1Job
    - - - -

    Job represents the configuration of a single job. DEPRECATED: extensions/v1beta1.Job is deprecated, use batch/v1.Job instead.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    JobSpec
    Spec is a structure defining the expected behavior of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    JobStatus
    Status is a structure describing current status of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    JobSpec v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    activeDeadlineSeconds
    integer
    Optional duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer
    autoSelector
    boolean
    AutoSelector controls generation of pod labels and pod selectors. It was not present in the original extensions/v1beta1 Job definition, but exists to allow conversion from batch/v1 Jobs, where it corresponds to, but has the opposite meaning as, ManualSelector. More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md
    completions
    integer
    Completions specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: http://kubernetes.io/docs/user-guide/jobs
    parallelism
    integer
    Parallelism specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: http://kubernetes.io/docs/user-guide/jobs
    selector
    LabelSelector
    Selector is a label query over pods that should match the pod count. Normally, the system sets this field for you. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    template
    PodTemplateSpec
    Template is the object that describes the pod that will be created when executing a job. More info: http://kubernetes.io/docs/user-guide/jobs
    -

    JobStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    active
    integer
    Active is the number of actively running pods.
    completionTime
    Time
    CompletionTime represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
    conditions
    JobCondition array
    Conditions represent the latest available observations of an object's current state. More info: http://kubernetes.io/docs/user-guide/jobs
    failed
    integer
    Failed is the number of pods which reached Phase Failed.
    startTime
    Time
    StartTime represents time when the job was acknowledged by the Job Manager. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
    succeeded
    integer
    Succeeded is the number of pods which reached Phase Succeeded.
    -

    JobList v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Job array
    Items is the list of Job.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -$ echo 'apiVersion: batch/v1
    -kind: Job
    -metadata:
    -  name: example-job
    -spec:
    -  template:
    -    metadata:
    -      name: example-job
    -    spec:
    -      containers:
    -      - name: pi
    -        image: perl
    -        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
    -      restartPolicy: Never
    -' | kubectl create -f -
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X POST -H 'Content-Type: application/yaml' --data '
    -apiVersion: batch/v1
    -kind: Job
    -metadata:
    -  name: example-job
    -spec:
    -  template:
    -    metadata:
    -      name: example-job
    -    spec:
    -      containers:
    -      - name: pi
    -        image: perl
    -        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
    -      restartPolicy: Never
    -' http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/jobs
    -
    -
    -

    Output

    -
    -
    
    -job "example-job" created
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7479",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {}
    -}
    -
    -

    create a Job

    -

    HTTP Request

    -

    POST /apis/extensions/v1beta1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Job

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Job

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl delete job example-job
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X DELETE -H 'Content-Type: application/yaml' --data '
    -gracePeriodSeconds: 0
    -orphanDependents: false
    -' 'http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/jobs/example-job'
    -
    -
    -

    Output

    -
    -
    
    -job "example-job" deleted
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Status",
    -  "apiVersion": "v1",
    -  "metadata": {},
    -  "status": "Success",
    -  "code": 200
    -}
    -
    -

    delete a Job

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Job

    -

    HTTP Request

    -

    DELETE /apis/extensions/v1beta1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job example-job -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/jobs/example-job
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7482",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {
    -    "startTime": "2016-11-04T18:45:25Z",
    -    "active": 1
    -  }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7482",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {
    -    "startTime": "2016-11-04T18:45:25Z",
    -    "active": 1
    -  }
    -}
    -
    -

    read the specified Job

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/jobs'
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "JobList",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs",
    -    "resourceVersion": "7589"
    -  },
    -  "items": [
    -    {
    -      "metadata": {
    -        "name": "",
    -        "namespace": "default",
    -        "selfLink": "/apis/batch/v1/namespaces/default/jobs/",
    -        "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -        "resourceVersion": "7482",
    -        "creationTimestamp": "2016-11-04T18:45:25Z"
    -      },
    -      "spec": {
    -        "parallelism": 1,
    -        "completions": 1,
    -        "selector": {
    -          "matchLabels": {
    -            "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "name": "",
    -            "creationTimestamp": null,
    -            "labels": {
    -              "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -              "job-name": ""
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "pi",
    -                "image": "perl",
    -                "command": [
    -                  "perl",
    -                  "-Mbignum=bpi",
    -                  "-wle",
    -                  "print bpi(2000)"
    -                ],
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "Always"
    -              }
    -            ],
    -            "restartPolicy": "Never",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        }
    -      },
    -      "status": {
    -        "startTime": "2016-11-04T18:45:25Z",
    -        "active": 1
    -      }
    -    }
    -  ]
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "JobList",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs",
    -    "resourceVersion": "7589"
    -  },
    -  "items": [
    -    {
    -      "metadata": {
    -        "name": "",
    -        "namespace": "default",
    -        "selfLink": "/apis/batch/v1/namespaces/default/jobs/",
    -        "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -        "resourceVersion": "7482",
    -        "creationTimestamp": "2016-11-04T18:45:25Z"
    -      },
    -      "spec": {
    -        "parallelism": 1,
    -        "completions": 1,
    -        "selector": {
    -          "matchLabels": {
    -            "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "name": "",
    -            "creationTimestamp": null,
    -            "labels": {
    -              "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -              "job-name": ""
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "pi",
    -                "image": "perl",
    -                "command": [
    -                  "perl",
    -                  "-Mbignum=bpi",
    -                  "-wle",
    -                  "print bpi(2000)"
    -                ],
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "Always"
    -              }
    -            ],
    -            "restartPolicy": "Never",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        }
    -      },
    -      "status": {
    -        "startTime": "2016-11-04T18:45:25Z",
    -        "active": 1
    -      }
    -    }
    -  ]
    -}
    -
    -

    list or watch objects of kind Job

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    JobList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Job

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/jobs

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    JobList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job example-job --watch -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/apis/extensions/v1beta1/watch/namespaces/default/jobs/example-job'
    -
    -
    -

    Output

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Job",
    -        "apiVersion": "batch/v1",
    -        "metadata": {
    -            "name": "example-job",
    -            "namespace": "default",
    -            "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -            "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -            "resourceVersion": "7482",
    -            "creationTimestamp": "2016-11-04T18:45:25Z"
    -        },
    -        "spec": {
    -            "parallelism": 1,
    -            "completions": 1,
    -            "selector": {
    -                "matchLabels": {
    -                    "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -                }
    -            },
    -            "template": {
    -                "metadata": {
    -                    "name": "example-job",
    -                    "creationTimestamp": null,
    -                    "labels": {
    -                        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -                        "job-name": "example-job"
    -                    }
    -                },
    -                "spec": {
    -                    "containers": [
    -                        {
    -                            "name": "pi",
    -                            "image": "perl",
    -                            "command": [
    -                                "perl",
    -                                "-Mbignum=bpi",
    -                                "-wle",
    -                                "print bpi(2000)"
    -                            ],
    -                            "resources": {
    -                            },
    -                            "terminationMessagePath": "/dev/termination-log",
    -                            "imagePullPolicy": "Always"
    -                        }
    -                    ],
    -                    "restartPolicy": "Never",
    -                    "terminationGracePeriodSeconds": 30,
    -                    "dnsPolicy": "ClusterFirst",
    -                    "securityContext": {
    -                    }
    -                }
    -            }
    -        },
    -        "status": {
    -            "startTime": "2016-11-04T18:45:25Z",
    -            "active": 1
    -        }
    -    }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Job",
    -        "apiVersion": "batch/v1",
    -        "metadata": {
    -            "name": "example-job",
    -            "namespace": "default",
    -            "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -            "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -            "resourceVersion": "7482",
    -            "creationTimestamp": "2016-11-04T18:45:25Z"
    -        },
    -        "spec": {
    -            "parallelism": 1,
    -            "completions": 1,
    -            "selector": {
    -                "matchLabels": {
    -                    "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -                }
    -            },
    -            "template": {
    -                "metadata": {
    -                    "name": "example-job",
    -                    "creationTimestamp": null,
    -                    "labels": {
    -                        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -                        "job-name": "example-job"
    -                    }
    -                },
    -                "spec": {
    -                    "containers": [
    -                        {
    -                            "name": "pi",
    -                            "image": "perl",
    -                            "command": [
    -                                "perl",
    -                                "-Mbignum=bpi",
    -                                "-wle",
    -                                "print bpi(2000)"
    -                            ],
    -                            "resources": {
    -                            },
    -                            "terminationMessagePath": "/dev/termination-log",
    -                            "imagePullPolicy": "Always"
    -                        }
    -                    ],
    -                    "restartPolicy": "Never",
    -                    "terminationGracePeriodSeconds": 30,
    -                    "dnsPolicy": "ClusterFirst",
    -                    "securityContext": {
    -                    }
    -                }
    -            }
    -        },
    -        "status": {
    -            "startTime": "2016-11-04T18:45:25Z",
    -            "active": 1
    -        }
    -    }
    -}
    -
    -

    watch changes to an object of kind Job

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Job

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Job

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/watch/jobs

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Job

    -

    HTTP Request

    -

    PATCH /apis/extensions/v1beta1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Job

    -

    HTTP Request

    -

    GET /apis/extensions/v1beta1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Job

    -

    HTTP Request

    -

    PUT /apis/extensions/v1beta1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -
    -

    Job v2alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Batchv2alpha1Job
    - - - -

    Job represents the configuration of a single job.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    spec
    JobSpec
    Spec is a structure defining the expected behavior of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    status
    JobStatus
    Status is a structure describing current status of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
    -

    JobSpec v2alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    activeDeadlineSeconds
    integer
    Optional duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer
    completions
    integer
    Completions specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: http://kubernetes.io/docs/user-guide/jobs
    manualSelector
    boolean
    ManualSelector controls generation of pod labels and pod selectors. Leave manualSelector unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see manualSelector=true in jobs that were created with the old extensions/v1beta1 API. More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md
    parallelism
    integer
    Parallelism specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: http://kubernetes.io/docs/user-guide/jobs
    selector
    LabelSelector
    Selector is a label query over pods that should match the pod count. Normally, the system sets this field for you. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    template
    PodTemplateSpec
    Template is the object that describes the pod that will be created when executing a job. More info: http://kubernetes.io/docs/user-guide/jobs
    -

    JobStatus v2alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    active
    integer
    Active is the number of actively running pods.
    completionTime
    Time
    CompletionTime represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
    conditions
    JobCondition array
    Conditions represent the latest available observations of an object's current state. More info: http://kubernetes.io/docs/user-guide/jobs
    failed
    integer
    Failed is the number of pods which reached Phase Failed.
    startTime
    Time
    StartTime represents time when the job was acknowledged by the Job Manager. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
    succeeded
    integer
    Succeeded is the number of pods which reached Phase Succeeded.
    -

    JobList v2alpha1

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    items
    Job array
    Items is the list of Job.
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ListMeta
    Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
    -

    Write Operations

    -

    See supported operations below...

    -

    Create

    -
    -

    kubectl Command

    -
    -
    
    -$ echo 'apiVersion: batch/v1
    -kind: Job
    -metadata:
    -  name: example-job
    -spec:
    -  template:
    -    metadata:
    -      name: example-job
    -    spec:
    -      containers:
    -      - name: pi
    -        image: perl
    -        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
    -      restartPolicy: Never
    -' | kubectl create -f -
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X POST -H 'Content-Type: application/yaml' --data '
    -apiVersion: batch/v1
    -kind: Job
    -metadata:
    -  name: example-job
    -spec:
    -  template:
    -    metadata:
    -      name: example-job
    -    spec:
    -      containers:
    -      - name: pi
    -        image: perl
    -        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
    -      restartPolicy: Never
    -' http://127.0.0.1:8001/apis/batch/v2alpha1/namespaces/default/jobs
    -
    -
    -

    Output

    -
    -
    
    -job "example-job" created
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7479",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {}
    -}
    -
    -

    create a Job

    -

    HTTP Request

    -

    POST /apis/batch/v2alpha1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Replace

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace the specified Job

    -

    HTTP Request

    -

    PUT /apis/batch/v2alpha1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Patch

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update the specified Job

    -

    HTTP Request

    -

    PATCH /apis/batch/v2alpha1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Delete

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl delete job example-job
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X DELETE -H 'Content-Type: application/yaml' --data '
    -gracePeriodSeconds: 0
    -orphanDependents: false
    -' 'http://127.0.0.1:8001/apis/batch/v2alpha1/namespaces/default/jobs/example-job'
    -
    -
    -

    Output

    -
    -
    
    -job "example-job" deleted
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Status",
    -  "apiVersion": "v1",
    -  "metadata": {},
    -  "status": "Success",
    -  "code": 200
    -}
    -
    -

    delete a Job

    -

    HTTP Request

    -

    DELETE /apis/batch/v2alpha1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    gracePeriodSecondsThe duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
    orphanDependentsShould the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    DeleteOptions
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Delete Collection

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    delete collection of Job

    -

    HTTP Request

    -

    DELETE /apis/batch/v2alpha1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Status
    OK
    -

    Read Operations

    -

    See supported operations below...

    -

    Read

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job example-job -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET http://127.0.0.1:8001/apis/batch/v2alpha1/namespaces/default/jobs/example-job
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7482",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {
    -    "startTime": "2016-11-04T18:45:25Z",
    -    "active": 1
    -  }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "Job",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "name": "example-job",
    -    "namespace": "default",
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -    "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -    "resourceVersion": "7482",
    -    "creationTimestamp": "2016-11-04T18:45:25Z"
    -  },
    -  "spec": {
    -    "parallelism": 1,
    -    "completions": 1,
    -    "selector": {
    -      "matchLabels": {
    -        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -      }
    -    },
    -    "template": {
    -      "metadata": {
    -        "name": "example-job",
    -        "creationTimestamp": null,
    -        "labels": {
    -          "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -          "job-name": "example-job"
    -        }
    -      },
    -      "spec": {
    -        "containers": [
    -          {
    -            "name": "pi",
    -            "image": "perl",
    -            "command": [
    -              "perl",
    -              "-Mbignum=bpi",
    -              "-wle",
    -              "print bpi(2000)"
    -            ],
    -            "resources": {},
    -            "terminationMessagePath": "/dev/termination-log",
    -            "imagePullPolicy": "Always"
    -          }
    -        ],
    -        "restartPolicy": "Never",
    -        "terminationGracePeriodSeconds": 30,
    -        "dnsPolicy": "ClusterFirst",
    -        "securityContext": {}
    -      }
    -    }
    -  },
    -  "status": {
    -    "startTime": "2016-11-04T18:45:25Z",
    -    "active": 1
    -  }
    -}
    -
    -

    read the specified Job

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    exactShould the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
    exportShould this value be exported. Export strips fields that a user can not specify.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    List

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/apis/batch/v2alpha1/namespaces/default/jobs'
    -
    -
    -

    Output

    -
    -
    
    -{
    -  "kind": "JobList",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs",
    -    "resourceVersion": "7589"
    -  },
    -  "items": [
    -    {
    -      "metadata": {
    -        "name": "",
    -        "namespace": "default",
    -        "selfLink": "/apis/batch/v1/namespaces/default/jobs/",
    -        "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -        "resourceVersion": "7482",
    -        "creationTimestamp": "2016-11-04T18:45:25Z"
    -      },
    -      "spec": {
    -        "parallelism": 1,
    -        "completions": 1,
    -        "selector": {
    -          "matchLabels": {
    -            "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "name": "",
    -            "creationTimestamp": null,
    -            "labels": {
    -              "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -              "job-name": ""
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "pi",
    -                "image": "perl",
    -                "command": [
    -                  "perl",
    -                  "-Mbignum=bpi",
    -                  "-wle",
    -                  "print bpi(2000)"
    -                ],
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "Always"
    -              }
    -            ],
    -            "restartPolicy": "Never",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        }
    -      },
    -      "status": {
    -        "startTime": "2016-11-04T18:45:25Z",
    -        "active": 1
    -      }
    -    }
    -  ]
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -  "kind": "JobList",
    -  "apiVersion": "batch/v1",
    -  "metadata": {
    -    "selfLink": "/apis/batch/v1/namespaces/default/jobs",
    -    "resourceVersion": "7589"
    -  },
    -  "items": [
    -    {
    -      "metadata": {
    -        "name": "",
    -        "namespace": "default",
    -        "selfLink": "/apis/batch/v1/namespaces/default/jobs/",
    -        "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -        "resourceVersion": "7482",
    -        "creationTimestamp": "2016-11-04T18:45:25Z"
    -      },
    -      "spec": {
    -        "parallelism": 1,
    -        "completions": 1,
    -        "selector": {
    -          "matchLabels": {
    -            "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -          }
    -        },
    -        "template": {
    -          "metadata": {
    -            "name": "",
    -            "creationTimestamp": null,
    -            "labels": {
    -              "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -              "job-name": ""
    -            }
    -          },
    -          "spec": {
    -            "containers": [
    -              {
    -                "name": "pi",
    -                "image": "perl",
    -                "command": [
    -                  "perl",
    -                  "-Mbignum=bpi",
    -                  "-wle",
    -                  "print bpi(2000)"
    -                ],
    -                "resources": {},
    -                "terminationMessagePath": "/dev/termination-log",
    -                "imagePullPolicy": "Always"
    -              }
    -            ],
    -            "restartPolicy": "Never",
    -            "terminationGracePeriodSeconds": 30,
    -            "dnsPolicy": "ClusterFirst",
    -            "securityContext": {}
    -          }
    -        }
    -      },
    -      "status": {
    -        "startTime": "2016-11-04T18:45:25Z",
    -        "active": 1
    -      }
    -    }
    -  ]
    -}
    -
    -

    list or watch objects of kind Job

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    JobList
    OK
    -

    List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    list or watch objects of kind Job

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/jobs

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    JobList
    OK
    -

    Watch

    -
    -

    kubectl Command

    -
    -
    
    -$ kubectl get job example-job --watch -o json
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -$ kubectl proxy
    -$ curl -X GET 'http://127.0.0.1:8001/apis/batch/v2alpha1/watch/namespaces/default/jobs/example-job'
    -
    -
    -

    Output

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Job",
    -        "apiVersion": "batch/v1",
    -        "metadata": {
    -            "name": "example-job",
    -            "namespace": "default",
    -            "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -            "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -            "resourceVersion": "7482",
    -            "creationTimestamp": "2016-11-04T18:45:25Z"
    -        },
    -        "spec": {
    -            "parallelism": 1,
    -            "completions": 1,
    -            "selector": {
    -                "matchLabels": {
    -                    "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -                }
    -            },
    -            "template": {
    -                "metadata": {
    -                    "name": "example-job",
    -                    "creationTimestamp": null,
    -                    "labels": {
    -                        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -                        "job-name": "example-job"
    -                    }
    -                },
    -                "spec": {
    -                    "containers": [
    -                        {
    -                            "name": "pi",
    -                            "image": "perl",
    -                            "command": [
    -                                "perl",
    -                                "-Mbignum=bpi",
    -                                "-wle",
    -                                "print bpi(2000)"
    -                            ],
    -                            "resources": {
    -                            },
    -                            "terminationMessagePath": "/dev/termination-log",
    -                            "imagePullPolicy": "Always"
    -                        }
    -                    ],
    -                    "restartPolicy": "Never",
    -                    "terminationGracePeriodSeconds": 30,
    -                    "dnsPolicy": "ClusterFirst",
    -                    "securityContext": {
    -                    }
    -                }
    -            }
    -        },
    -        "status": {
    -            "startTime": "2016-11-04T18:45:25Z",
    -            "active": 1
    -        }
    -    }
    -}
    -
    -
    -

    Response Body

    -
    -
    
    -{
    -    "type": "ADDED",
    -    "object": {
    -        "kind": "Job",
    -        "apiVersion": "batch/v1",
    -        "metadata": {
    -            "name": "example-job",
    -            "namespace": "default",
    -            "selfLink": "/apis/batch/v1/namespaces/default/jobs/example-job",
    -            "uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -            "resourceVersion": "7482",
    -            "creationTimestamp": "2016-11-04T18:45:25Z"
    -        },
    -        "spec": {
    -            "parallelism": 1,
    -            "completions": 1,
    -            "selector": {
    -                "matchLabels": {
    -                    "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7"
    -                }
    -            },
    -            "template": {
    -                "metadata": {
    -                    "name": "example-job",
    -                    "creationTimestamp": null,
    -                    "labels": {
    -                        "controller-uid": "d93a3569-a2be-11e6-a008-fa043d458cc7",
    -                        "job-name": "example-job"
    -                    }
    -                },
    -                "spec": {
    -                    "containers": [
    -                        {
    -                            "name": "pi",
    -                            "image": "perl",
    -                            "command": [
    -                                "perl",
    -                                "-Mbignum=bpi",
    -                                "-wle",
    -                                "print bpi(2000)"
    -                            ],
    -                            "resources": {
    -                            },
    -                            "terminationMessagePath": "/dev/termination-log",
    -                            "imagePullPolicy": "Always"
    -                        }
    -                    ],
    -                    "restartPolicy": "Never",
    -                    "terminationGracePeriodSeconds": 30,
    -                    "dnsPolicy": "ClusterFirst",
    -                    "securityContext": {
    -                    }
    -                }
    -            }
    -        },
    -        "status": {
    -            "startTime": "2016-11-04T18:45:25Z",
    -            "active": 1
    -        }
    -    }
    -}
    -
    -

    watch changes to an object of kind Job

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/watch/namespaces/{namespace}/jobs/{name}

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Job

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/watch/namespaces/{namespace}/jobs

    -

    Path Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Watch List All Namespaces

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    watch individual changes to a list of Job

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/watch/jobs

    -

    Query Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescription
    fieldSelectorA selector to restrict the list of returned objects by their fields. Defaults to everything.
    labelSelectorA selector to restrict the list of returned objects by their labels. Defaults to everything.
    prettyIf 'true', then the output is pretty printed.
    resourceVersionWhen specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.
    timeoutSecondsTimeout for the list/watch call.
    watchWatch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Event
    OK
    -

    Status Operations

    -

    See supported operations below...

    -

    Patch Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    partially update status of the specified Job

    -

    HTTP Request

    -

    PATCH /apis/batch/v2alpha1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Patch
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Read Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    read status of the specified Job

    -

    HTTP Request

    -

    GET /apis/batch/v2alpha1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -

    Replace Status

    -
    -

    kubectl Command

    -
    -
    
    -Coming Soon
    -
    -
    -

    curl Command (requires kubectl proxy to be running)

    -
    -
    
    -Coming Soon
    -
    -
    -

    Output

    -
    -
    
    -Coming Soon
    -
    -
    -

    Response Body

    -
    -
    
    -Coming Soon
    -
    -

    replace status of the specified Job

    -

    HTTP Request

    -

    PUT /apis/batch/v2alpha1/namespaces/{namespace}/jobs/{name}/status

    -

    Path Parameters

    - - - - - - - - - - - - - - - - - -
    ParameterDescription
    namename of the Job
    namespaceobject name and auth scope, such as for teams and projects
    -

    Query Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    prettyIf 'true', then the output is pretty printed.
    -

    Body Parameters

    - - - - - - - - - - - - - -
    ParameterDescription
    body
    Job
    -

    Response

    - - - - - - - - - - - - - -
    CodeDescription
    200
    Job
    OK
    -
    -

    JobCondition v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1JobCondition
    - - - -

    JobCondition describes current state of a job.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastProbeTime
    Time
    Last time the condition was checked.
    lastTransitionTime
    Time
    Last time the condition transit from one status to another.
    message
    string
    Human readable message indicating details about last transition.
    reason
    string
    (brief) reason for the condition's last transition.
    status
    string
    Status of the condition, one of True, False, Unknown.
    type
    string
    Type of job condition, Complete or Failed.
    -
    -

    JobCondition v2alpha1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev2alpha1JobCondition
    - - - -

    JobCondition describes current state of a job.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    lastProbeTime
    Time
    Last time the condition was checked.
    lastTransitionTime
    Time
    Last time the condition transit from one status to another.
    message
    string
    Human readable message indicating details about last transition.
    reason
    string
    (brief) reason for the condition's last transition.
    status
    string
    Status of the condition, one of True, False, Unknown.
    type
    string
    Type of job condition, Complete or Failed.
    -
    -

    Scale v1beta1

    - - - - - - - - - - - - - - - -
    GroupVersionKind
    Corev1beta1Scale
    - - - -

    represents a scaling request for a resource.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
    kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
    metadata
    ObjectMeta
    Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata.
    spec
    ScaleSpec
    defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.
    status
    ScaleStatus
    current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only.
    -

    ScaleSpec v1beta1

    - - - - - - - - - - - - - - - -
    FieldDescription
    replicas
    integer
    desired number of instances for the scaled object.
    -

    ScaleStatus v1beta1

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    replicas
    integer
    actual number of observed instances of the scaled object.
    selector
    object
    label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    targetSelector
    string
    label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
    -
    -
    - - - - - - - - \ No newline at end of file diff --git a/docs/api-reference/v1.5/jsconfig.json b/docs/api-reference/v1.5/jsconfig.json deleted file mode 100644 index 8b8e742791..0000000000 --- a/docs/api-reference/v1.5/jsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "compilerOptions": { - "target": "ES6", - "module": "commonjs" - } -} \ No newline at end of file diff --git a/docs/api-reference/v1.5/markedDecorations.js b/docs/api-reference/v1.5/markedDecorations.js deleted file mode 100644 index 9171226b7a..0000000000 --- a/docs/api-reference/v1.5/markedDecorations.js +++ /dev/null @@ -1,101 +0,0 @@ -;(function() { - var brodocDec = {}; - - var navIds = []; - var bodyContent = ''; - var codeTabs = []; - - var idAffix = 0; - var uniqueNav = []; - - brodocDec.decorateMarked = function(renderer) { - renderer.heading = (text, level, raw) => { - var id = raw.toLowerCase().replace(/[^\w]+/g, '-'); - if ((uniqueNav.indexOf(id) !== -1) && (level === 2)) { - idAffix++; - id += '-' + idAffix; - } else { - uniqueNav.push(id); - } - if (level < 3) { - navIds.push( - { - id: id, - text: text, - level: level - } - ); - } - return '' - + text - + '\n'; - }; - - renderer.blockquote = function(quote) { - var bdregex = /(bdocs-tab:)[^\s]*/; - var bdoc = quote.match(bdregex); - if (bdoc) { - var bdocTab = bdoc[0].split(':')[1]; - var bdquote = quote.replace(bdoc[0], ''); - return '
    \n' + bdquote + '
    \n'; - } else { - return '
    \n' + quote + '
    \n'; - } - }; - - renderer.code = function (code, lang, escaped) { - var bdocGroup = lang.substring(0, lang.indexOf('_')); - var bdocTab = bdocGroup.split(':')[1]; - var hlang = lang.substring(lang.indexOf('_')+1); - - if (renderer.options.highlight) { - var out = renderer.options.highlight(code, hlang); - if (out !== null && out !== code) { - escaped = true; - code = out; - } - } - - var tabLang = hlang ? hlang : 'generic'; - if (codeTabs.indexOf(bdocTab) === -1) { - codeTabs.push(bdocTab); - } - - if (!hlang) { - return '
    '
    -                    + (escaped ? code : escape(code, true))
    -                    + '\n
    '; - } - - return '
    '
    -                + (escaped ? code : escape(code, true))
    -                + '\n
    \n'; - }; - }; - - if (typeof module !== 'undefined' && typeof exports === 'object') { - module.exports = brodocDec; - } else if (typeof define === 'function' && define.amd) { - define(function() { return brodocDec; }); - } else { - this.brodocDec = brodocDec; - } - brodocDec.navIds = navIds; - brodocDec.codeTabs = codeTabs; - return brodocDec; - -}).call(function() { - return this || (typeof window !== 'undefined' ? window : global); -}()); \ No newline at end of file diff --git a/docs/api-reference/v1.5/navData.js b/docs/api-reference/v1.5/navData.js deleted file mode 100644 index fc3b93deea..0000000000 --- a/docs/api-reference/v1.5/navData.js +++ /dev/null @@ -1 +0,0 @@ -(function(){navData = {"toc":[{"section":"scale-v1beta1","subsections":[]},{"section":"jobcondition-v2alpha1","subsections":[]},{"section":"jobcondition-v1beta1","subsections":[]},{"section":"job-v2alpha1","subsections":[{"section":"-strong-status-operations-strong--558","subsections":[{"section":"replace-status-561"},{"section":"read-status-560"},{"section":"patch-status-559"}]},{"section":"-strong-read-operations-strong--551","subsections":[{"section":"watch-list-all-namespaces-557"},{"section":"watch-list-556"},{"section":"watch-555"},{"section":"list-all-namespaces-554"},{"section":"list-553"},{"section":"read-552"}]},{"section":"-strong-write-operations-strong--545","subsections":[{"section":"delete-collection-550"},{"section":"delete-549"},{"section":"patch-548"},{"section":"replace-547"},{"section":"create-546"}]}]},{"section":"job-v1beta1","subsections":[{"section":"-strong-status-operations-strong--541","subsections":[{"section":"replace-status-544"},{"section":"read-status-543"},{"section":"patch-status-542"}]},{"section":"-strong-read-operations-strong--534","subsections":[{"section":"watch-list-all-namespaces-540"},{"section":"watch-list-539"},{"section":"watch-538"},{"section":"list-all-namespaces-537"},{"section":"list-536"},{"section":"read-535"}]},{"section":"-strong-write-operations-strong--528","subsections":[{"section":"delete-collection-533"},{"section":"delete-532"},{"section":"patch-531"},{"section":"replace-530"},{"section":"create-529"}]}]},{"section":"horizontalpodautoscaler-v1beta1","subsections":[{"section":"-strong-status-operations-strong--524","subsections":[{"section":"replace-status-527"},{"section":"read-status-526"},{"section":"patch-status-525"}]},{"section":"-strong-read-operations-strong--517","subsections":[{"section":"watch-list-all-namespaces-523"},{"section":"watch-list-522"},{"section":"watch-521"},{"section":"list-all-namespaces-520"},{"section":"list-519"},{"section":"read-518"}]},{"section":"-strong-write-operations-strong--511","subsections":[{"section":"delete-collection-516"},{"section":"delete-515"},{"section":"patch-514"},{"section":"replace-513"},{"section":"create-512"}]}]},{"section":"event-versioned","subsections":[]},{"section":"-strong-old-api-versions-strong-","subsections":[]},{"section":"-strong-definitions-strong-","subsections":[{"section":"vspherevirtualdiskvolumesource-v1"},{"section":"volumemount-v1"},{"section":"userinfo-v1beta1"},{"section":"time-unversioned"},{"section":"tcpsocketaction-v1"},{"section":"subresourcereference-v1beta1"},{"section":"subject-v1alpha1"},{"section":"statusdetails-unversioned"},{"section":"statuscause-unversioned"},{"section":"status-unversioned"},{"section":"serviceport-v1"},{"section":"serveraddressbyclientcidr-unversioned"},{"section":"securitycontext-v1"},{"section":"secretvolumesource-v1"},{"section":"secretkeyselector-v1"},{"section":"scale-v1"},{"section":"selinuxoptions-v1"},{"section":"rollbackconfig-v1beta1"},{"section":"roleref-v1alpha1"},{"section":"resourcerequirements-v1"},{"section":"resourcefieldselector-v1"},{"section":"resourceattributes-v1beta1"},{"section":"replicationcontrollercondition-v1"},{"section":"replicasetcondition-v1beta1"},{"section":"rawextension-runtime"},{"section":"rbdvolumesource-v1"},{"section":"quobytevolumesource-v1"},{"section":"quantity-resource"},{"section":"probe-v1"},{"section":"preconditions-v1"},{"section":"policyrule-v1alpha1"},{"section":"podsecuritycontext-v1"},{"section":"podcondition-v1"},{"section":"photonpersistentdiskvolumesource-v1"},{"section":"persistentvolumeclaimvolumesource-v1"},{"section":"patch-unversioned"},{"section":"ownerreference-v1"},{"section":"objectreference-v1"},{"section":"objectmeta-v1"},{"section":"objectfieldselector-v1"},{"section":"nonresourceattributes-v1beta1"},{"section":"nodesysteminfo-v1"},{"section":"nodedaemonendpoints-v1"},{"section":"nodecondition-v1"},{"section":"nodeaddress-v1"},{"section":"networkpolicyport-v1beta1"},{"section":"networkpolicypeer-v1beta1"},{"section":"networkpolicyingressrule-v1beta1"},{"section":"nfsvolumesource-v1"},{"section":"localobjectreference-v1"},{"section":"loadbalancerstatus-v1"},{"section":"loadbalanceringress-v1"},{"section":"listmeta-unversioned"},{"section":"limitrangeitem-v1"},{"section":"lifecycle-v1"},{"section":"labelselectorrequirement-unversioned"},{"section":"labelselector-unversioned"},{"section":"keytopath-v1"},{"section":"jobtemplatespec-v2alpha1"},{"section":"jobcondition-v1"},{"section":"intorstring-intstr"},{"section":"ingresstls-v1beta1"},{"section":"ingressrule-v1beta1"},{"section":"ingressbackend-v1beta1"},{"section":"info-version"},{"section":"iscsivolumesource-v1"},{"section":"hostpathvolumesource-v1"},{"section":"handler-v1"},{"section":"httpingressrulevalue-v1beta1"},{"section":"httpingresspath-v1beta1"},{"section":"httpheader-v1"},{"section":"httpgetaction-v1"},{"section":"groupversionfordiscovery-unversioned"},{"section":"glusterfsvolumesource-v1"},{"section":"gitrepovolumesource-v1"},{"section":"gcepersistentdiskvolumesource-v1"},{"section":"flockervolumesource-v1"},{"section":"flexvolumesource-v1"},{"section":"fcvolumesource-v1"},{"section":"execaction-v1"},{"section":"eviction-v1beta1"},{"section":"eventsource-v1"},{"section":"envvarsource-v1"},{"section":"envvar-v1"},{"section":"endpointsubset-v1"},{"section":"endpointport-v1"},{"section":"endpointaddress-v1"},{"section":"emptydirvolumesource-v1"},{"section":"downwardapivolumesource-v1"},{"section":"downwardapivolumefile-v1"},{"section":"deploymentcondition-v1beta1"},{"section":"deleteoptions-v1"},{"section":"daemonendpoint-v1"},{"section":"crossversionobjectreference-v1"},{"section":"containerstatewaiting-v1"},{"section":"containerstateterminated-v1"},{"section":"containerstaterunning-v1"},{"section":"containerstate-v1"},{"section":"containerport-v1"},{"section":"containerimage-v1"},{"section":"configmapvolumesource-v1"},{"section":"configmapkeyselector-v1"},{"section":"componentcondition-v1"},{"section":"cindervolumesource-v1"},{"section":"certificatesigningrequestcondition-v1alpha1"},{"section":"cephfsvolumesource-v1"},{"section":"capabilities-v1"},{"section":"cputargetutilization-v1beta1"},{"section":"azurefilevolumesource-v1"},{"section":"azurediskvolumesource-v1"},{"section":"attachedvolume-v1"},{"section":"awselasticblockstorevolumesource-v1"},{"section":"apiversions-unversioned"},{"section":"apiversion-v1beta1"},{"section":"apiresource-unversioned"},{"section":"apigroup-unversioned"}]},{"section":"networkpolicy-v1beta1","subsections":[{"section":"-strong-read-operations-strong--504","subsections":[{"section":"watch-list-all-namespaces-510"},{"section":"watch-list-509"},{"section":"watch-508"},{"section":"list-all-namespaces-507"},{"section":"list-506"},{"section":"read-505"}]},{"section":"-strong-write-operations-strong--498","subsections":[{"section":"delete-collection-503"},{"section":"delete-502"},{"section":"patch-501"},{"section":"replace-500"},{"section":"create-499"}]}]},{"section":"tokenreview-v1beta1","subsections":[{"section":"-strong-write-operations-strong--496","subsections":[{"section":"create-497"}]}]},{"section":"subjectaccessreview-v1beta1","subsections":[{"section":"-strong-write-operations-strong--494","subsections":[{"section":"create-495"}]}]},{"section":"serviceaccount-v1","subsections":[{"section":"-strong-read-operations-strong--487","subsections":[{"section":"watch-list-all-namespaces-493"},{"section":"watch-list-492"},{"section":"watch-491"},{"section":"list-all-namespaces-490"},{"section":"list-489"},{"section":"read-488"}]},{"section":"-strong-write-operations-strong--481","subsections":[{"section":"delete-collection-486"},{"section":"delete-485"},{"section":"patch-484"},{"section":"replace-483"},{"section":"create-482"}]}]},{"section":"selfsubjectaccessreview-v1beta1","subsections":[{"section":"-strong-write-operations-strong--479","subsections":[{"section":"create-480"}]}]},{"section":"rolebinding-v1alpha1","subsections":[{"section":"-strong-read-operations-strong--472","subsections":[{"section":"watch-list-all-namespaces-478"},{"section":"watch-list-477"},{"section":"watch-476"},{"section":"list-all-namespaces-475"},{"section":"list-474"},{"section":"read-473"}]},{"section":"-strong-write-operations-strong--466","subsections":[{"section":"delete-collection-471"},{"section":"delete-470"},{"section":"patch-469"},{"section":"replace-468"},{"section":"create-467"}]}]},{"section":"role-v1alpha1","subsections":[{"section":"-strong-read-operations-strong--459","subsections":[{"section":"watch-list-all-namespaces-465"},{"section":"watch-list-464"},{"section":"watch-463"},{"section":"list-all-namespaces-462"},{"section":"list-461"},{"section":"read-460"}]},{"section":"-strong-write-operations-strong--453","subsections":[{"section":"delete-collection-458"},{"section":"delete-457"},{"section":"patch-456"},{"section":"replace-455"},{"section":"create-454"}]}]},{"section":"resourcequota-v1","subsections":[{"section":"-strong-status-operations-strong--449","subsections":[{"section":"replace-status-452"},{"section":"read-status-451"},{"section":"patch-status-450"}]},{"section":"-strong-read-operations-strong--442","subsections":[{"section":"watch-list-all-namespaces-448"},{"section":"watch-list-447"},{"section":"watch-446"},{"section":"list-all-namespaces-445"},{"section":"list-444"},{"section":"read-443"}]},{"section":"-strong-write-operations-strong--436","subsections":[{"section":"delete-collection-441"},{"section":"delete-440"},{"section":"patch-439"},{"section":"replace-438"},{"section":"create-437"}]}]},{"section":"persistentvolume-v1","subsections":[{"section":"-strong-status-operations-strong--432","subsections":[{"section":"replace-status-435"},{"section":"read-status-434"},{"section":"patch-status-433"}]},{"section":"-strong-read-operations-strong--427","subsections":[{"section":"watch-list-431"},{"section":"watch-430"},{"section":"list-429"},{"section":"read-428"}]},{"section":"-strong-write-operations-strong--421","subsections":[{"section":"delete-collection-426"},{"section":"delete-425"},{"section":"patch-424"},{"section":"replace-423"},{"section":"create-422"}]}]},{"section":"node-v1","subsections":[{"section":"-strong-proxy-operations-strong--402","subsections":[{"section":"replace-proxy-path-420"},{"section":"replace-proxy-419"},{"section":"replace-connect-proxy-path-418"},{"section":"replace-connect-proxy-417"},{"section":"head-connect-proxy-path-416"},{"section":"head-connect-proxy-415"},{"section":"get-proxy-path-414"},{"section":"get-proxy-413"},{"section":"get-connect-proxy-path-412"},{"section":"get-connect-proxy-411"},{"section":"delete-proxy-path-410"},{"section":"delete-proxy-409"},{"section":"delete-connect-proxy-path-408"},{"section":"delete-connect-proxy-407"},{"section":"create-proxy-path-406"},{"section":"create-proxy-405"},{"section":"create-connect-proxy-path-404"},{"section":"create-connect-proxy-403"}]},{"section":"-strong-status-operations-strong--398","subsections":[{"section":"replace-status-401"},{"section":"read-status-400"},{"section":"patch-status-399"}]},{"section":"-strong-read-operations-strong--393","subsections":[{"section":"watch-list-397"},{"section":"watch-396"},{"section":"list-395"},{"section":"read-394"}]},{"section":"-strong-write-operations-strong--387","subsections":[{"section":"delete-collection-392"},{"section":"delete-391"},{"section":"patch-390"},{"section":"replace-389"},{"section":"create-388"}]}]},{"section":"namespace-v1","subsections":[{"section":"-strong-status-operations-strong--383","subsections":[{"section":"replace-status-386"},{"section":"read-status-385"},{"section":"patch-status-384"}]},{"section":"-strong-read-operations-strong--378","subsections":[{"section":"watch-list-382"},{"section":"watch-381"},{"section":"list-380"},{"section":"read-379"}]},{"section":"-strong-write-operations-strong--372","subsections":[{"section":"delete-collection-377"},{"section":"delete-376"},{"section":"patch-375"},{"section":"replace-374"},{"section":"create-373"}]}]},{"section":"localsubjectaccessreview-v1beta1","subsections":[{"section":"-strong-write-operations-strong--370","subsections":[{"section":"create-371"}]}]},{"section":"componentstatus-v1","subsections":[{"section":"-strong-read-operations-strong--367","subsections":[{"section":"list-369"},{"section":"read-368"}]}]},{"section":"clusterrolebinding-v1alpha1","subsections":[{"section":"-strong-read-operations-strong--362","subsections":[{"section":"watch-list-366"},{"section":"watch-365"},{"section":"list-364"},{"section":"read-363"}]},{"section":"-strong-write-operations-strong--356","subsections":[{"section":"delete-collection-361"},{"section":"delete-360"},{"section":"patch-359"},{"section":"replace-358"},{"section":"create-357"}]}]},{"section":"clusterrole-v1alpha1","subsections":[{"section":"-strong-read-operations-strong--351","subsections":[{"section":"watch-list-355"},{"section":"watch-354"},{"section":"list-353"},{"section":"read-352"}]},{"section":"-strong-write-operations-strong--345","subsections":[{"section":"delete-collection-350"},{"section":"delete-349"},{"section":"patch-348"},{"section":"replace-347"},{"section":"create-346"}]}]},{"section":"certificatesigningrequest-v1alpha1","subsections":[{"section":"-strong-status-operations-strong--343","subsections":[{"section":"replace-status-344"}]},{"section":"-strong-read-operations-strong--338","subsections":[{"section":"watch-list-342"},{"section":"watch-341"},{"section":"list-340"},{"section":"read-339"}]},{"section":"-strong-write-operations-strong--332","subsections":[{"section":"delete-collection-337"},{"section":"delete-336"},{"section":"patch-335"},{"section":"replace-334"},{"section":"create-333"}]}]},{"section":"binding-v1","subsections":[{"section":"-strong-write-operations-strong--330","subsections":[{"section":"create-331"}]}]},{"section":"-strong-cluster-strong-","subsections":[]},{"section":"thirdpartyresource-v1beta1","subsections":[{"section":"-strong-read-operations-strong--325","subsections":[{"section":"watch-list-329"},{"section":"watch-328"},{"section":"list-327"},{"section":"read-326"}]},{"section":"-strong-write-operations-strong--319","subsections":[{"section":"delete-collection-324"},{"section":"delete-323"},{"section":"patch-322"},{"section":"replace-321"},{"section":"create-320"}]}]},{"section":"poddisruptionbudget-v1beta1","subsections":[{"section":"-strong-status-operations-strong--315","subsections":[{"section":"replace-status-318"},{"section":"read-status-317"},{"section":"patch-status-316"}]},{"section":"-strong-read-operations-strong--308","subsections":[{"section":"watch-list-all-namespaces-314"},{"section":"watch-list-313"},{"section":"watch-312"},{"section":"list-all-namespaces-311"},{"section":"list-310"},{"section":"read-309"}]},{"section":"-strong-write-operations-strong--302","subsections":[{"section":"delete-collection-307"},{"section":"delete-306"},{"section":"patch-305"},{"section":"replace-304"},{"section":"create-303"}]}]},{"section":"podtemplate-v1","subsections":[{"section":"-strong-read-operations-strong--295","subsections":[{"section":"watch-list-all-namespaces-301"},{"section":"watch-list-300"},{"section":"watch-299"},{"section":"list-all-namespaces-298"},{"section":"list-297"},{"section":"read-296"}]},{"section":"-strong-write-operations-strong--289","subsections":[{"section":"delete-collection-294"},{"section":"delete-293"},{"section":"patch-292"},{"section":"replace-291"},{"section":"create-290"}]}]},{"section":"horizontalpodautoscaler-v1","subsections":[{"section":"-strong-status-operations-strong--285","subsections":[{"section":"replace-status-288"},{"section":"read-status-287"},{"section":"patch-status-286"}]},{"section":"-strong-read-operations-strong--278","subsections":[{"section":"watch-list-all-namespaces-284"},{"section":"watch-list-283"},{"section":"watch-282"},{"section":"list-all-namespaces-281"},{"section":"list-280"},{"section":"read-279"}]},{"section":"-strong-write-operations-strong--272","subsections":[{"section":"delete-collection-277"},{"section":"delete-276"},{"section":"patch-275"},{"section":"replace-274"},{"section":"create-273"}]}]},{"section":"limitrange-v1","subsections":[{"section":"-strong-read-operations-strong--265","subsections":[{"section":"watch-list-all-namespaces-271"},{"section":"watch-list-270"},{"section":"watch-269"},{"section":"list-all-namespaces-268"},{"section":"list-267"},{"section":"read-266"}]},{"section":"-strong-write-operations-strong--259","subsections":[{"section":"delete-collection-264"},{"section":"delete-263"},{"section":"patch-262"},{"section":"replace-261"},{"section":"create-260"}]}]},{"section":"event-v1","subsections":[{"section":"-strong-read-operations-strong--252","subsections":[{"section":"watch-list-all-namespaces-258"},{"section":"watch-list-257"},{"section":"watch-256"},{"section":"list-all-namespaces-255"},{"section":"list-254"},{"section":"read-253"}]},{"section":"-strong-write-operations-strong--246","subsections":[{"section":"delete-collection-251"},{"section":"delete-250"},{"section":"patch-249"},{"section":"replace-248"},{"section":"create-247"}]}]},{"section":"-strong-metadata-strong-","subsections":[]},{"section":"volume-v1","subsections":[]},{"section":"storageclass-v1beta1","subsections":[{"section":"-strong-read-operations-strong--241","subsections":[{"section":"watch-list-245"},{"section":"watch-244"},{"section":"list-243"},{"section":"read-242"}]},{"section":"-strong-write-operations-strong--235","subsections":[{"section":"delete-collection-240"},{"section":"delete-239"},{"section":"patch-238"},{"section":"replace-237"},{"section":"create-236"}]}]},{"section":"persistentvolumeclaim-v1","subsections":[{"section":"-strong-status-operations-strong--231","subsections":[{"section":"replace-status-234"},{"section":"read-status-233"},{"section":"patch-status-232"}]},{"section":"-strong-read-operations-strong--224","subsections":[{"section":"watch-list-all-namespaces-230"},{"section":"watch-list-229"},{"section":"watch-228"},{"section":"list-all-namespaces-227"},{"section":"list-226"},{"section":"read-225"}]},{"section":"-strong-write-operations-strong--218","subsections":[{"section":"delete-collection-223"},{"section":"delete-222"},{"section":"patch-221"},{"section":"replace-220"},{"section":"create-219"}]}]},{"section":"secret-v1","subsections":[{"section":"-strong-read-operations-strong--211","subsections":[{"section":"watch-list-all-namespaces-217"},{"section":"watch-list-216"},{"section":"watch-215"},{"section":"list-all-namespaces-214"},{"section":"list-213"},{"section":"read-212"}]},{"section":"-strong-write-operations-strong--205","subsections":[{"section":"delete-collection-210"},{"section":"delete-209"},{"section":"patch-208"},{"section":"replace-207"},{"section":"create-206"}]}]},{"section":"configmap-v1","subsections":[{"section":"-strong-read-operations-strong--198","subsections":[{"section":"watch-list-all-namespaces-204"},{"section":"watch-list-203"},{"section":"watch-202"},{"section":"list-all-namespaces-201"},{"section":"list-200"},{"section":"read-199"}]},{"section":"-strong-write-operations-strong--192","subsections":[{"section":"delete-collection-197"},{"section":"delete-196"},{"section":"patch-195"},{"section":"replace-194"},{"section":"create-193"}]}]},{"section":"-strong-config-storage-strong-","subsections":[]},{"section":"service-v1","subsections":[{"section":"-strong-proxy-operations-strong--173","subsections":[{"section":"replace-proxy-path-191"},{"section":"replace-proxy-190"},{"section":"replace-connect-proxy-path-189"},{"section":"replace-connect-proxy-188"},{"section":"head-connect-proxy-path-187"},{"section":"head-connect-proxy-186"},{"section":"get-proxy-path-185"},{"section":"get-proxy-184"},{"section":"get-connect-proxy-path-183"},{"section":"get-connect-proxy-182"},{"section":"delete-proxy-path-181"},{"section":"delete-proxy-180"},{"section":"delete-connect-proxy-path-179"},{"section":"delete-connect-proxy-178"},{"section":"create-proxy-path-177"},{"section":"create-proxy-176"},{"section":"create-connect-proxy-path-175"},{"section":"create-connect-proxy-174"}]},{"section":"-strong-status-operations-strong--169","subsections":[{"section":"replace-status-172"},{"section":"read-status-171"},{"section":"patch-status-170"}]},{"section":"-strong-read-operations-strong--162","subsections":[{"section":"watch-list-all-namespaces-168"},{"section":"watch-list-167"},{"section":"watch-166"},{"section":"list-all-namespaces-165"},{"section":"list-164"},{"section":"read-163"}]},{"section":"-strong-write-operations-strong--157","subsections":[{"section":"delete-161"},{"section":"patch-160"},{"section":"replace-159"},{"section":"create-158"}]}]},{"section":"ingress-v1beta1","subsections":[{"section":"-strong-status-operations-strong--153","subsections":[{"section":"replace-status-156"},{"section":"read-status-155"},{"section":"patch-status-154"}]},{"section":"-strong-read-operations-strong--146","subsections":[{"section":"watch-list-all-namespaces-152"},{"section":"watch-list-151"},{"section":"watch-150"},{"section":"list-all-namespaces-149"},{"section":"list-148"},{"section":"read-147"}]},{"section":"-strong-write-operations-strong--140","subsections":[{"section":"delete-collection-145"},{"section":"delete-144"},{"section":"patch-143"},{"section":"replace-142"},{"section":"create-141"}]}]},{"section":"endpoints-v1","subsections":[{"section":"-strong-read-operations-strong--133","subsections":[{"section":"watch-list-all-namespaces-139"},{"section":"watch-list-138"},{"section":"watch-137"},{"section":"list-all-namespaces-136"},{"section":"list-135"},{"section":"read-134"}]},{"section":"-strong-write-operations-strong--127","subsections":[{"section":"delete-collection-132"},{"section":"delete-131"},{"section":"patch-130"},{"section":"replace-129"},{"section":"create-128"}]}]},{"section":"-strong-discovery-load-balancing-strong-","subsections":[]},{"section":"statefulset-v1beta1","subsections":[{"section":"-strong-status-operations-strong--123","subsections":[{"section":"replace-status-126"},{"section":"read-status-125"},{"section":"patch-status-124"}]},{"section":"-strong-read-operations-strong--116","subsections":[{"section":"watch-list-all-namespaces-122"},{"section":"watch-list-121"},{"section":"watch-120"},{"section":"list-all-namespaces-119"},{"section":"list-118"},{"section":"read-117"}]},{"section":"-strong-write-operations-strong--110","subsections":[{"section":"delete-collection-115"},{"section":"delete-114"},{"section":"patch-113"},{"section":"replace-112"},{"section":"create-111"}]}]},{"section":"replicationcontroller-v1","subsections":[{"section":"-strong-status-operations-strong--106","subsections":[{"section":"replace-status-109"},{"section":"read-status-108"},{"section":"patch-status-107"}]},{"section":"-strong-read-operations-strong--99","subsections":[{"section":"watch-list-all-namespaces-105"},{"section":"watch-list-104"},{"section":"watch-103"},{"section":"list-all-namespaces-102"},{"section":"list-101"},{"section":"read-100"}]},{"section":"-strong-write-operations-strong--93","subsections":[{"section":"delete-collection-98"},{"section":"delete-97"},{"section":"patch-96"},{"section":"replace-95"},{"section":"create-94"}]}]},{"section":"replicaset-v1beta1","subsections":[{"section":"-strong-misc-operations-strong--89","subsections":[{"section":"patch-scale-92"},{"section":"replace-scale-91"},{"section":"read-scale-90"}]},{"section":"-strong-status-operations-strong--85","subsections":[{"section":"replace-status-88"},{"section":"read-status-87"},{"section":"patch-status-86"}]},{"section":"-strong-read-operations-strong--78","subsections":[{"section":"watch-list-all-namespaces-84"},{"section":"watch-list-83"},{"section":"watch-82"},{"section":"list-all-namespaces-81"},{"section":"list-80"},{"section":"read-79"}]},{"section":"-strong-write-operations-strong--72","subsections":[{"section":"delete-collection-77"},{"section":"delete-76"},{"section":"patch-75"},{"section":"replace-74"},{"section":"create-73"}]}]},{"section":"pod-v1","subsections":[{"section":"-strong-misc-operations-strong--71","subsections":[{"section":"read-log"}]},{"section":"-strong-proxy-operations-strong-","subsections":[{"section":"replace-proxy-path"},{"section":"replace-proxy"},{"section":"replace-connect-proxy-path"},{"section":"replace-connect-proxy"},{"section":"head-connect-proxy-path"},{"section":"head-connect-proxy"},{"section":"get-proxy-path"},{"section":"get-proxy"},{"section":"get-connect-proxy-path"},{"section":"get-connect-proxy"},{"section":"get-connect-portforward"},{"section":"delete-proxy-path"},{"section":"delete-proxy"},{"section":"delete-connect-proxy-path"},{"section":"delete-connect-proxy"},{"section":"create-proxy-path"},{"section":"create-proxy"},{"section":"create-connect-proxy-path"},{"section":"create-connect-proxy"},{"section":"create-connect-portforward"}]},{"section":"-strong-status-operations-strong--67","subsections":[{"section":"replace-status-70"},{"section":"read-status-69"},{"section":"patch-status-68"}]},{"section":"-strong-read-operations-strong--60","subsections":[{"section":"watch-list-all-namespaces-66"},{"section":"watch-list-65"},{"section":"watch-64"},{"section":"list-all-namespaces-63"},{"section":"list-62"},{"section":"read-61"}]},{"section":"-strong-write-operations-strong--54","subsections":[{"section":"delete-collection-59"},{"section":"delete-58"},{"section":"patch-57"},{"section":"replace-56"},{"section":"create-55"}]}]},{"section":"job-v1","subsections":[{"section":"-strong-status-operations-strong--50","subsections":[{"section":"replace-status-53"},{"section":"read-status-52"},{"section":"patch-status-51"}]},{"section":"-strong-read-operations-strong--43","subsections":[{"section":"watch-list-all-namespaces-49"},{"section":"watch-list-48"},{"section":"watch-47"},{"section":"list-all-namespaces-46"},{"section":"list-45"},{"section":"read-44"}]},{"section":"-strong-write-operations-strong--37","subsections":[{"section":"delete-collection-42"},{"section":"delete-41"},{"section":"patch-40"},{"section":"replace-39"},{"section":"create-38"}]}]},{"section":"deployment-v1beta1","subsections":[{"section":"-strong-misc-operations-strong-","subsections":[{"section":"rollback"},{"section":"patch-scale"},{"section":"replace-scale"},{"section":"read-scale"}]},{"section":"-strong-status-operations-strong--33","subsections":[{"section":"replace-status-36"},{"section":"read-status-35"},{"section":"patch-status-34"}]},{"section":"-strong-read-operations-strong--26","subsections":[{"section":"watch-list-all-namespaces-32"},{"section":"watch-list-31"},{"section":"watch-30"},{"section":"list-all-namespaces-29"},{"section":"list-28"},{"section":"read-27"}]},{"section":"-strong-write-operations-strong--20","subsections":[{"section":"delete-collection-25"},{"section":"delete-24"},{"section":"patch-23"},{"section":"replace-22"},{"section":"create-21"}]}]},{"section":"daemonset-v1beta1","subsections":[{"section":"-strong-status-operations-strong--16","subsections":[{"section":"replace-status-19"},{"section":"read-status-18"},{"section":"patch-status-17"}]},{"section":"-strong-read-operations-strong--9","subsections":[{"section":"watch-list-all-namespaces-15"},{"section":"watch-list-14"},{"section":"watch-13"},{"section":"list-all-namespaces-12"},{"section":"list-11"},{"section":"read-10"}]},{"section":"-strong-write-operations-strong--3","subsections":[{"section":"delete-collection-8"},{"section":"delete-7"},{"section":"patch-6"},{"section":"replace-5"},{"section":"create-4"}]}]},{"section":"cronjob-v2alpha1","subsections":[{"section":"-strong-status-operations-strong-","subsections":[{"section":"replace-status"},{"section":"read-status"},{"section":"patch-status"}]},{"section":"-strong-read-operations-strong-","subsections":[{"section":"watch-list-all-namespaces"},{"section":"watch-list"},{"section":"watch"},{"section":"list-all-namespaces"},{"section":"list"},{"section":"read-2"}]},{"section":"-strong-write-operations-strong-","subsections":[{"section":"delete-collection"},{"section":"delete-1"},{"section":"patch"},{"section":"replace"},{"section":"create"}]}]},{"section":"container-v1","subsections":[]},{"section":"-strong-workloads-strong-","subsections":[]},{"section":"-strong-api-overview-strong-","subsections":[{"section":"resource-operations"},{"section":"resource-objects"},{"section":"resource-categories"}]}],"flatToc":["scale-v1beta1","jobcondition-v2alpha1","jobcondition-v1beta1","replace-status-561","read-status-560","patch-status-559","-strong-status-operations-strong--558","watch-list-all-namespaces-557","watch-list-556","watch-555","list-all-namespaces-554","list-553","read-552","-strong-read-operations-strong--551","delete-collection-550","delete-549","patch-548","replace-547","create-546","-strong-write-operations-strong--545","job-v2alpha1","replace-status-544","read-status-543","patch-status-542","-strong-status-operations-strong--541","watch-list-all-namespaces-540","watch-list-539","watch-538","list-all-namespaces-537","list-536","read-535","-strong-read-operations-strong--534","delete-collection-533","delete-532","patch-531","replace-530","create-529","-strong-write-operations-strong--528","job-v1beta1","replace-status-527","read-status-526","patch-status-525","-strong-status-operations-strong--524","watch-list-all-namespaces-523","watch-list-522","watch-521","list-all-namespaces-520","list-519","read-518","-strong-read-operations-strong--517","delete-collection-516","delete-515","patch-514","replace-513","create-512","-strong-write-operations-strong--511","horizontalpodautoscaler-v1beta1","event-versioned","-strong-old-api-versions-strong-","vspherevirtualdiskvolumesource-v1","volumemount-v1","userinfo-v1beta1","time-unversioned","tcpsocketaction-v1","subresourcereference-v1beta1","subject-v1alpha1","statusdetails-unversioned","statuscause-unversioned","status-unversioned","serviceport-v1","serveraddressbyclientcidr-unversioned","securitycontext-v1","secretvolumesource-v1","secretkeyselector-v1","scale-v1","selinuxoptions-v1","rollbackconfig-v1beta1","roleref-v1alpha1","resourcerequirements-v1","resourcefieldselector-v1","resourceattributes-v1beta1","replicationcontrollercondition-v1","replicasetcondition-v1beta1","rawextension-runtime","rbdvolumesource-v1","quobytevolumesource-v1","quantity-resource","probe-v1","preconditions-v1","policyrule-v1alpha1","podsecuritycontext-v1","podcondition-v1","photonpersistentdiskvolumesource-v1","persistentvolumeclaimvolumesource-v1","patch-unversioned","ownerreference-v1","objectreference-v1","objectmeta-v1","objectfieldselector-v1","nonresourceattributes-v1beta1","nodesysteminfo-v1","nodedaemonendpoints-v1","nodecondition-v1","nodeaddress-v1","networkpolicyport-v1beta1","networkpolicypeer-v1beta1","networkpolicyingressrule-v1beta1","nfsvolumesource-v1","localobjectreference-v1","loadbalancerstatus-v1","loadbalanceringress-v1","listmeta-unversioned","limitrangeitem-v1","lifecycle-v1","labelselectorrequirement-unversioned","labelselector-unversioned","keytopath-v1","jobtemplatespec-v2alpha1","jobcondition-v1","intorstring-intstr","ingresstls-v1beta1","ingressrule-v1beta1","ingressbackend-v1beta1","info-version","iscsivolumesource-v1","hostpathvolumesource-v1","handler-v1","httpingressrulevalue-v1beta1","httpingresspath-v1beta1","httpheader-v1","httpgetaction-v1","groupversionfordiscovery-unversioned","glusterfsvolumesource-v1","gitrepovolumesource-v1","gcepersistentdiskvolumesource-v1","flockervolumesource-v1","flexvolumesource-v1","fcvolumesource-v1","execaction-v1","eviction-v1beta1","eventsource-v1","envvarsource-v1","envvar-v1","endpointsubset-v1","endpointport-v1","endpointaddress-v1","emptydirvolumesource-v1","downwardapivolumesource-v1","downwardapivolumefile-v1","deploymentcondition-v1beta1","deleteoptions-v1","daemonendpoint-v1","crossversionobjectreference-v1","containerstatewaiting-v1","containerstateterminated-v1","containerstaterunning-v1","containerstate-v1","containerport-v1","containerimage-v1","configmapvolumesource-v1","configmapkeyselector-v1","componentcondition-v1","cindervolumesource-v1","certificatesigningrequestcondition-v1alpha1","cephfsvolumesource-v1","capabilities-v1","cputargetutilization-v1beta1","azurefilevolumesource-v1","azurediskvolumesource-v1","attachedvolume-v1","awselasticblockstorevolumesource-v1","apiversions-unversioned","apiversion-v1beta1","apiresource-unversioned","apigroup-unversioned","-strong-definitions-strong-","watch-list-all-namespaces-510","watch-list-509","watch-508","list-all-namespaces-507","list-506","read-505","-strong-read-operations-strong--504","delete-collection-503","delete-502","patch-501","replace-500","create-499","-strong-write-operations-strong--498","networkpolicy-v1beta1","create-497","-strong-write-operations-strong--496","tokenreview-v1beta1","create-495","-strong-write-operations-strong--494","subjectaccessreview-v1beta1","watch-list-all-namespaces-493","watch-list-492","watch-491","list-all-namespaces-490","list-489","read-488","-strong-read-operations-strong--487","delete-collection-486","delete-485","patch-484","replace-483","create-482","-strong-write-operations-strong--481","serviceaccount-v1","create-480","-strong-write-operations-strong--479","selfsubjectaccessreview-v1beta1","watch-list-all-namespaces-478","watch-list-477","watch-476","list-all-namespaces-475","list-474","read-473","-strong-read-operations-strong--472","delete-collection-471","delete-470","patch-469","replace-468","create-467","-strong-write-operations-strong--466","rolebinding-v1alpha1","watch-list-all-namespaces-465","watch-list-464","watch-463","list-all-namespaces-462","list-461","read-460","-strong-read-operations-strong--459","delete-collection-458","delete-457","patch-456","replace-455","create-454","-strong-write-operations-strong--453","role-v1alpha1","replace-status-452","read-status-451","patch-status-450","-strong-status-operations-strong--449","watch-list-all-namespaces-448","watch-list-447","watch-446","list-all-namespaces-445","list-444","read-443","-strong-read-operations-strong--442","delete-collection-441","delete-440","patch-439","replace-438","create-437","-strong-write-operations-strong--436","resourcequota-v1","replace-status-435","read-status-434","patch-status-433","-strong-status-operations-strong--432","watch-list-431","watch-430","list-429","read-428","-strong-read-operations-strong--427","delete-collection-426","delete-425","patch-424","replace-423","create-422","-strong-write-operations-strong--421","persistentvolume-v1","replace-proxy-path-420","replace-proxy-419","replace-connect-proxy-path-418","replace-connect-proxy-417","head-connect-proxy-path-416","head-connect-proxy-415","get-proxy-path-414","get-proxy-413","get-connect-proxy-path-412","get-connect-proxy-411","delete-proxy-path-410","delete-proxy-409","delete-connect-proxy-path-408","delete-connect-proxy-407","create-proxy-path-406","create-proxy-405","create-connect-proxy-path-404","create-connect-proxy-403","-strong-proxy-operations-strong--402","replace-status-401","read-status-400","patch-status-399","-strong-status-operations-strong--398","watch-list-397","watch-396","list-395","read-394","-strong-read-operations-strong--393","delete-collection-392","delete-391","patch-390","replace-389","create-388","-strong-write-operations-strong--387","node-v1","replace-status-386","read-status-385","patch-status-384","-strong-status-operations-strong--383","watch-list-382","watch-381","list-380","read-379","-strong-read-operations-strong--378","delete-collection-377","delete-376","patch-375","replace-374","create-373","-strong-write-operations-strong--372","namespace-v1","create-371","-strong-write-operations-strong--370","localsubjectaccessreview-v1beta1","list-369","read-368","-strong-read-operations-strong--367","componentstatus-v1","watch-list-366","watch-365","list-364","read-363","-strong-read-operations-strong--362","delete-collection-361","delete-360","patch-359","replace-358","create-357","-strong-write-operations-strong--356","clusterrolebinding-v1alpha1","watch-list-355","watch-354","list-353","read-352","-strong-read-operations-strong--351","delete-collection-350","delete-349","patch-348","replace-347","create-346","-strong-write-operations-strong--345","clusterrole-v1alpha1","replace-status-344","-strong-status-operations-strong--343","watch-list-342","watch-341","list-340","read-339","-strong-read-operations-strong--338","delete-collection-337","delete-336","patch-335","replace-334","create-333","-strong-write-operations-strong--332","certificatesigningrequest-v1alpha1","create-331","-strong-write-operations-strong--330","binding-v1","-strong-cluster-strong-","watch-list-329","watch-328","list-327","read-326","-strong-read-operations-strong--325","delete-collection-324","delete-323","patch-322","replace-321","create-320","-strong-write-operations-strong--319","thirdpartyresource-v1beta1","replace-status-318","read-status-317","patch-status-316","-strong-status-operations-strong--315","watch-list-all-namespaces-314","watch-list-313","watch-312","list-all-namespaces-311","list-310","read-309","-strong-read-operations-strong--308","delete-collection-307","delete-306","patch-305","replace-304","create-303","-strong-write-operations-strong--302","poddisruptionbudget-v1beta1","watch-list-all-namespaces-301","watch-list-300","watch-299","list-all-namespaces-298","list-297","read-296","-strong-read-operations-strong--295","delete-collection-294","delete-293","patch-292","replace-291","create-290","-strong-write-operations-strong--289","podtemplate-v1","replace-status-288","read-status-287","patch-status-286","-strong-status-operations-strong--285","watch-list-all-namespaces-284","watch-list-283","watch-282","list-all-namespaces-281","list-280","read-279","-strong-read-operations-strong--278","delete-collection-277","delete-276","patch-275","replace-274","create-273","-strong-write-operations-strong--272","horizontalpodautoscaler-v1","watch-list-all-namespaces-271","watch-list-270","watch-269","list-all-namespaces-268","list-267","read-266","-strong-read-operations-strong--265","delete-collection-264","delete-263","patch-262","replace-261","create-260","-strong-write-operations-strong--259","limitrange-v1","watch-list-all-namespaces-258","watch-list-257","watch-256","list-all-namespaces-255","list-254","read-253","-strong-read-operations-strong--252","delete-collection-251","delete-250","patch-249","replace-248","create-247","-strong-write-operations-strong--246","event-v1","-strong-metadata-strong-","volume-v1","watch-list-245","watch-244","list-243","read-242","-strong-read-operations-strong--241","delete-collection-240","delete-239","patch-238","replace-237","create-236","-strong-write-operations-strong--235","storageclass-v1beta1","replace-status-234","read-status-233","patch-status-232","-strong-status-operations-strong--231","watch-list-all-namespaces-230","watch-list-229","watch-228","list-all-namespaces-227","list-226","read-225","-strong-read-operations-strong--224","delete-collection-223","delete-222","patch-221","replace-220","create-219","-strong-write-operations-strong--218","persistentvolumeclaim-v1","watch-list-all-namespaces-217","watch-list-216","watch-215","list-all-namespaces-214","list-213","read-212","-strong-read-operations-strong--211","delete-collection-210","delete-209","patch-208","replace-207","create-206","-strong-write-operations-strong--205","secret-v1","watch-list-all-namespaces-204","watch-list-203","watch-202","list-all-namespaces-201","list-200","read-199","-strong-read-operations-strong--198","delete-collection-197","delete-196","patch-195","replace-194","create-193","-strong-write-operations-strong--192","configmap-v1","-strong-config-storage-strong-","replace-proxy-path-191","replace-proxy-190","replace-connect-proxy-path-189","replace-connect-proxy-188","head-connect-proxy-path-187","head-connect-proxy-186","get-proxy-path-185","get-proxy-184","get-connect-proxy-path-183","get-connect-proxy-182","delete-proxy-path-181","delete-proxy-180","delete-connect-proxy-path-179","delete-connect-proxy-178","create-proxy-path-177","create-proxy-176","create-connect-proxy-path-175","create-connect-proxy-174","-strong-proxy-operations-strong--173","replace-status-172","read-status-171","patch-status-170","-strong-status-operations-strong--169","watch-list-all-namespaces-168","watch-list-167","watch-166","list-all-namespaces-165","list-164","read-163","-strong-read-operations-strong--162","delete-161","patch-160","replace-159","create-158","-strong-write-operations-strong--157","service-v1","replace-status-156","read-status-155","patch-status-154","-strong-status-operations-strong--153","watch-list-all-namespaces-152","watch-list-151","watch-150","list-all-namespaces-149","list-148","read-147","-strong-read-operations-strong--146","delete-collection-145","delete-144","patch-143","replace-142","create-141","-strong-write-operations-strong--140","ingress-v1beta1","watch-list-all-namespaces-139","watch-list-138","watch-137","list-all-namespaces-136","list-135","read-134","-strong-read-operations-strong--133","delete-collection-132","delete-131","patch-130","replace-129","create-128","-strong-write-operations-strong--127","endpoints-v1","-strong-discovery-load-balancing-strong-","replace-status-126","read-status-125","patch-status-124","-strong-status-operations-strong--123","watch-list-all-namespaces-122","watch-list-121","watch-120","list-all-namespaces-119","list-118","read-117","-strong-read-operations-strong--116","delete-collection-115","delete-114","patch-113","replace-112","create-111","-strong-write-operations-strong--110","statefulset-v1beta1","replace-status-109","read-status-108","patch-status-107","-strong-status-operations-strong--106","watch-list-all-namespaces-105","watch-list-104","watch-103","list-all-namespaces-102","list-101","read-100","-strong-read-operations-strong--99","delete-collection-98","delete-97","patch-96","replace-95","create-94","-strong-write-operations-strong--93","replicationcontroller-v1","patch-scale-92","replace-scale-91","read-scale-90","-strong-misc-operations-strong--89","replace-status-88","read-status-87","patch-status-86","-strong-status-operations-strong--85","watch-list-all-namespaces-84","watch-list-83","watch-82","list-all-namespaces-81","list-80","read-79","-strong-read-operations-strong--78","delete-collection-77","delete-76","patch-75","replace-74","create-73","-strong-write-operations-strong--72","replicaset-v1beta1","read-log","-strong-misc-operations-strong--71","replace-proxy-path","replace-proxy","replace-connect-proxy-path","replace-connect-proxy","head-connect-proxy-path","head-connect-proxy","get-proxy-path","get-proxy","get-connect-proxy-path","get-connect-proxy","get-connect-portforward","delete-proxy-path","delete-proxy","delete-connect-proxy-path","delete-connect-proxy","create-proxy-path","create-proxy","create-connect-proxy-path","create-connect-proxy","create-connect-portforward","-strong-proxy-operations-strong-","replace-status-70","read-status-69","patch-status-68","-strong-status-operations-strong--67","watch-list-all-namespaces-66","watch-list-65","watch-64","list-all-namespaces-63","list-62","read-61","-strong-read-operations-strong--60","delete-collection-59","delete-58","patch-57","replace-56","create-55","-strong-write-operations-strong--54","pod-v1","replace-status-53","read-status-52","patch-status-51","-strong-status-operations-strong--50","watch-list-all-namespaces-49","watch-list-48","watch-47","list-all-namespaces-46","list-45","read-44","-strong-read-operations-strong--43","delete-collection-42","delete-41","patch-40","replace-39","create-38","-strong-write-operations-strong--37","job-v1","rollback","patch-scale","replace-scale","read-scale","-strong-misc-operations-strong-","replace-status-36","read-status-35","patch-status-34","-strong-status-operations-strong--33","watch-list-all-namespaces-32","watch-list-31","watch-30","list-all-namespaces-29","list-28","read-27","-strong-read-operations-strong--26","delete-collection-25","delete-24","patch-23","replace-22","create-21","-strong-write-operations-strong--20","deployment-v1beta1","replace-status-19","read-status-18","patch-status-17","-strong-status-operations-strong--16","watch-list-all-namespaces-15","watch-list-14","watch-13","list-all-namespaces-12","list-11","read-10","-strong-read-operations-strong--9","delete-collection-8","delete-7","patch-6","replace-5","create-4","-strong-write-operations-strong--3","daemonset-v1beta1","replace-status","read-status","patch-status","-strong-status-operations-strong-","watch-list-all-namespaces","watch-list","watch","list-all-namespaces","list","read-2","-strong-read-operations-strong-","delete-collection","delete-1","patch","replace","create","-strong-write-operations-strong-","cronjob-v2alpha1","container-v1","-strong-workloads-strong-","resource-operations","resource-objects","resource-categories","-strong-api-overview-strong-"]}})(); \ No newline at end of file diff --git a/docs/api-reference/v1.5/node_modules/.bin/marked b/docs/api-reference/v1.5/node_modules/.bin/marked deleted file mode 100755 index 64254fc3eb..0000000000 --- a/docs/api-reference/v1.5/node_modules/.bin/marked +++ /dev/null @@ -1,187 +0,0 @@ -#!/usr/bin/env node - -/** - * Marked CLI - * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License) - */ - -var fs = require('fs') - , util = require('util') - , marked = require('../'); - -/** - * Man Page - */ - -function help() { - var spawn = require('child_process').spawn; - - var options = { - cwd: process.cwd(), - env: process.env, - setsid: false, - customFds: [0, 1, 2] - }; - - spawn('man', - [__dirname + '/../man/marked.1'], - options); -} - -/** - * Main - */ - -function main(argv, callback) { - var files = [] - , options = {} - , input - , output - , arg - , tokens - , opt; - - function getarg() { - var arg = argv.shift(); - - if (arg.indexOf('--') === 0) { - // e.g. --opt - arg = arg.split('='); - if (arg.length > 1) { - // e.g. --opt=val - argv.unshift(arg.slice(1).join('=')); - } - arg = arg[0]; - } else if (arg[0] === '-') { - if (arg.length > 2) { - // e.g. -abc - argv = arg.substring(1).split('').map(function(ch) { - return '-' + ch; - }).concat(argv); - arg = argv.shift(); - } else { - // e.g. -a - } - } else { - // e.g. foo - } - - return arg; - } - - while (argv.length) { - arg = getarg(); - switch (arg) { - case '--test': - return require('../test').main(process.argv.slice()); - case '-o': - case '--output': - output = argv.shift(); - break; - case '-i': - case '--input': - input = argv.shift(); - break; - case '-t': - case '--tokens': - tokens = true; - break; - case '-h': - case '--help': - return help(); - default: - if (arg.indexOf('--') === 0) { - opt = camelize(arg.replace(/^--(no-)?/, '')); - if (!marked.defaults.hasOwnProperty(opt)) { - continue; - } - if (arg.indexOf('--no-') === 0) { - options[opt] = typeof marked.defaults[opt] !== 'boolean' - ? null - : false; - } else { - options[opt] = typeof marked.defaults[opt] !== 'boolean' - ? argv.shift() - : true; - } - } else { - files.push(arg); - } - break; - } - } - - function getData(callback) { - if (!input) { - if (files.length <= 2) { - return getStdin(callback); - } - input = files.pop(); - } - return fs.readFile(input, 'utf8', callback); - } - - return getData(function(err, data) { - if (err) return callback(err); - - data = tokens - ? JSON.stringify(marked.lexer(data, options), null, 2) - : marked(data, options); - - if (!output) { - process.stdout.write(data + '\n'); - return callback(); - } - - return fs.writeFile(output, data, callback); - }); -} - -/** - * Helpers - */ - -function getStdin(callback) { - var stdin = process.stdin - , buff = ''; - - stdin.setEncoding('utf8'); - - stdin.on('data', function(data) { - buff += data; - }); - - stdin.on('error', function(err) { - return callback(err); - }); - - stdin.on('end', function() { - return callback(null, buff); - }); - - try { - stdin.resume(); - } catch (e) { - callback(e); - } -} - -function camelize(text) { - return text.replace(/(\w)-(\w)/g, function(_, a, b) { - return a + b.toUpperCase(); - }); -} - -/** - * Expose / Entry Point - */ - -if (!module.parent) { - process.title = 'marked'; - main(process.argv.slice(), function(err, code) { - if (err) throw err; - return process.exit(code || 0); - }); -} else { - module.exports = main; -} diff --git a/docs/api-reference/v1.5/node_modules/.bin/mime b/docs/api-reference/v1.5/node_modules/.bin/mime deleted file mode 100755 index 20b1ffeb2f..0000000000 --- a/docs/api-reference/v1.5/node_modules/.bin/mime +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var mime = require('./mime.js'); -var file = process.argv[2]; -var type = mime.lookup(file); - -process.stdout.write(type + '\n'); - diff --git a/docs/api-reference/v1.5/node_modules/.bin/static b/docs/api-reference/v1.5/node_modules/.bin/static deleted file mode 100755 index b3179fc9b8..0000000000 --- a/docs/api-reference/v1.5/node_modules/.bin/static +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env node - -var fs = require('fs'), - path = require('path'), - tty = require('tty'), - statik = require('./../lib/node-static'); - - var argv = require('optimist') - .usage([ - 'USAGE: $0 [-p ] []', - 'simple, rfc 2616 compliant file streaming module for node'] - .join('\n\n')) - .option('port', { - alias: 'p', - 'default': 8080, - description: 'TCP port at which the files will be served' - }) - .option('host-address', { - alias: 'a', - 'default': '127.0.0.1', - description: 'the local network interface at which to listen' - }) - .option('cache', { - alias: 'c', - description: '"Cache-Control" header setting, defaults to 3600' - }) - .option('version', { - alias: 'v', - description: 'node-static version' - }) - .option('headers', { - alias: 'H', - description: 'additional headers (in JSON format)' - }) - .option('header-file', { - alias: 'f', - description: 'JSON file of additional headers' - }) - .option('gzip', { - alias: 'z', - description: 'enable compression (tries to serve file of same name plus \'.gz\')' - }) - .option('spa', { - description: 'serve the content as a single page app by redirecting all non-file requests to the index html file' - }) - .option('indexFile', { - alias: 'i', - 'default': 'index.html', - description: 'specify a custom index file when serving up directories' - }) - .option('help', { - alias: 'h', - description: 'display this help message' - }) - .argv; - - var dir = argv._[0] || '.'; - - var colors = require('colors'); - - var log = function(request, response, statusCode) { - var d = new Date(); - var seconds = d.getSeconds() < 10? '0'+d.getSeconds() : d.getSeconds(), - datestr = d.getHours() + ':' + d.getMinutes() + ':' + seconds, - line = datestr + ' [' + response.statusCode + ']: ' + request.url, - colorized = line; - if (tty.isatty(process.stdout.fd)) - colorized = (response.statusCode >= 500) ? line.red.bold : - (response.statusCode >= 400) ? line.red : - line; - console.log(colorized); - }; - - var file, options; - -if (argv.help) { - require('optimist').showHelp(console.log); - process.exit(0); -} - -if (argv.version) { - console.log('node-static', statik.version.join('.')); - process.exit(0); -} - -if (argv.cache) { - (options = options || {}).cache = argv.cache; -} - -if (argv.headers) { - (options = options || {}).headers = JSON.parse(argv.headers); -} - -if (argv['header-file']) { - (options = options || {}).headers = - JSON.parse(fs.readFileSync(argv['header-file'])); -} - -if (argv.gzip) { - (options = options || {}).gzip = true; -} - -if (argv.indexFile) { - (options = options || {}).indexFile = argv['indexFile']; -} - -file = new(statik.Server)(dir, options); - -require('http').createServer(function (request, response) { - request.addListener('end', function () { - var callback = function(e, rsp) { - if (e && e.status === 404) { - response.writeHead(e.status, e.headers); - response.end("Not Found"); - log(request, response); - } else { - log(request, response); - } - }; - - if (argv['spa'] && request.url.indexOf(".") == -1) { - file.serveFile(argv['indexFile'], 500, {}, request, response); - } else { - file.serve(request, response, callback); - } - }).resume(); -}).listen(+argv.port, argv['host-address']); - -console.log('serving "' + dir + '" at http://' + argv['host-address'] + ':' + argv.port); -if (argv.spa) { - console.log('serving as a single page app (all non-file requests redirect to ' + argv['indexFile'] +')'); -} diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/Gruntfile.js b/docs/api-reference/v1.5/node_modules/bootstrap/Gruntfile.js deleted file mode 100644 index 994a500871..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/Gruntfile.js +++ /dev/null @@ -1,511 +0,0 @@ -/*! - * Bootstrap's Gruntfile - * http://getbootstrap.com - * Copyright 2013-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -module.exports = function (grunt) { - 'use strict'; - - // Force use of Unix newlines - grunt.util.linefeed = '\n'; - - RegExp.quote = function (string) { - return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); - }; - - var fs = require('fs'); - var path = require('path'); - var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js'); - var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js'); - var getLessVarsData = function () { - var filePath = path.join(__dirname, 'less/variables.less'); - var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' }); - var parser = new BsLessdocParser(fileContent); - return { sections: parser.parseFile() }; - }; - var generateRawFiles = require('./grunt/bs-raw-files-generator.js'); - var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js'); - var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' }); - - Object.keys(configBridge.paths).forEach(function (key) { - configBridge.paths[key].forEach(function (val, i, arr) { - arr[i] = path.join('./docs/assets', val); - }); - }); - - // Project configuration. - grunt.initConfig({ - - // Metadata. - pkg: grunt.file.readJSON('package.json'), - banner: '/*!\n' + - ' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' + - ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + - ' * Licensed under the <%= pkg.license %> license\n' + - ' */\n', - jqueryCheck: configBridge.config.jqueryCheck.join('\n'), - jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'), - - // Task configuration. - clean: { - dist: 'dist', - docs: 'docs/dist' - }, - - jshint: { - options: { - jshintrc: 'js/.jshintrc' - }, - grunt: { - options: { - jshintrc: 'grunt/.jshintrc' - }, - src: ['Gruntfile.js', 'package.js', 'grunt/*.js'] - }, - core: { - src: 'js/*.js' - }, - test: { - options: { - jshintrc: 'js/tests/unit/.jshintrc' - }, - src: 'js/tests/unit/*.js' - }, - assets: { - src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js'] - } - }, - - jscs: { - options: { - config: 'js/.jscsrc' - }, - grunt: { - src: '<%= jshint.grunt.src %>' - }, - core: { - src: '<%= jshint.core.src %>' - }, - test: { - src: '<%= jshint.test.src %>' - }, - assets: { - options: { - requireCamelCaseOrUpperCaseIdentifiers: null - }, - src: '<%= jshint.assets.src %>' - } - }, - - concat: { - options: { - banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>', - stripBanners: false - }, - bootstrap: { - src: [ - 'js/transition.js', - 'js/alert.js', - 'js/button.js', - 'js/carousel.js', - 'js/collapse.js', - 'js/dropdown.js', - 'js/modal.js', - 'js/tooltip.js', - 'js/popover.js', - 'js/scrollspy.js', - 'js/tab.js', - 'js/affix.js' - ], - dest: 'dist/js/<%= pkg.name %>.js' - } - }, - - uglify: { - options: { - compress: { - warnings: false - }, - mangle: true, - preserveComments: /^!|@preserve|@license|@cc_on/i - }, - core: { - src: '<%= concat.bootstrap.dest %>', - dest: 'dist/js/<%= pkg.name %>.min.js' - }, - customize: { - src: configBridge.paths.customizerJs, - dest: 'docs/assets/js/customize.min.js' - }, - docsJs: { - src: configBridge.paths.docsJs, - dest: 'docs/assets/js/docs.min.js' - } - }, - - qunit: { - options: { - inject: 'js/tests/unit/phantom.js' - }, - files: 'js/tests/index.html' - }, - - less: { - compileCore: { - options: { - strictMath: true, - sourceMap: true, - outputSourceFiles: true, - sourceMapURL: '<%= pkg.name %>.css.map', - sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map' - }, - src: 'less/bootstrap.less', - dest: 'dist/css/<%= pkg.name %>.css' - }, - compileTheme: { - options: { - strictMath: true, - sourceMap: true, - outputSourceFiles: true, - sourceMapURL: '<%= pkg.name %>-theme.css.map', - sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map' - }, - src: 'less/theme.less', - dest: 'dist/css/<%= pkg.name %>-theme.css' - } - }, - - autoprefixer: { - options: { - browsers: configBridge.config.autoprefixerBrowsers - }, - core: { - options: { - map: true - }, - src: 'dist/css/<%= pkg.name %>.css' - }, - theme: { - options: { - map: true - }, - src: 'dist/css/<%= pkg.name %>-theme.css' - }, - docs: { - src: ['docs/assets/css/src/docs.css'] - }, - examples: { - expand: true, - cwd: 'docs/examples/', - src: ['**/*.css'], - dest: 'docs/examples/' - } - }, - - csslint: { - options: { - csslintrc: 'less/.csslintrc' - }, - dist: [ - 'dist/css/bootstrap.css', - 'dist/css/bootstrap-theme.css' - ], - examples: [ - 'docs/examples/**/*.css' - ], - docs: { - options: { - ids: false, - 'overqualified-elements': false - }, - src: 'docs/assets/css/src/docs.css' - } - }, - - cssmin: { - options: { - // TODO: disable `zeroUnits` optimization once clean-css 3.2 is released - // and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly - compatibility: 'ie8', - keepSpecialComments: '*', - sourceMap: true, - sourceMapInlineSources: true, - advanced: false - }, - minifyCore: { - src: 'dist/css/<%= pkg.name %>.css', - dest: 'dist/css/<%= pkg.name %>.min.css' - }, - minifyTheme: { - src: 'dist/css/<%= pkg.name %>-theme.css', - dest: 'dist/css/<%= pkg.name %>-theme.min.css' - }, - docs: { - src: [ - 'docs/assets/css/ie10-viewport-bug-workaround.css', - 'docs/assets/css/src/pygments-manni.css', - 'docs/assets/css/src/docs.css' - ], - dest: 'docs/assets/css/docs.min.css' - } - }, - - csscomb: { - options: { - config: 'less/.csscomb.json' - }, - dist: { - expand: true, - cwd: 'dist/css/', - src: ['*.css', '!*.min.css'], - dest: 'dist/css/' - }, - examples: { - expand: true, - cwd: 'docs/examples/', - src: '**/*.css', - dest: 'docs/examples/' - }, - docs: { - src: 'docs/assets/css/src/docs.css', - dest: 'docs/assets/css/src/docs.css' - } - }, - - copy: { - fonts: { - expand: true, - src: 'fonts/**', - dest: 'dist/' - }, - docs: { - expand: true, - cwd: 'dist/', - src: [ - '**/*' - ], - dest: 'docs/dist/' - } - }, - - connect: { - server: { - options: { - port: 3000, - base: '.' - } - } - }, - - jekyll: { - options: { - bundleExec: true, - config: '_config.yml', - incremental: false - }, - docs: {}, - github: { - options: { - raw: 'github: true' - } - } - }, - - htmlmin: { - dist: { - options: { - collapseBooleanAttributes: true, - collapseWhitespace: true, - conservativeCollapse: true, - decodeEntities: false, - minifyCSS: { - compatibility: 'ie8', - keepSpecialComments: 0 - }, - minifyJS: true, - minifyURLs: false, - processConditionalComments: true, - removeAttributeQuotes: true, - removeComments: true, - removeOptionalAttributes: true, - removeOptionalTags: true, - removeRedundantAttributes: true, - removeScriptTypeAttributes: true, - removeStyleLinkTypeAttributes: true, - removeTagWhitespace: false, - sortAttributes: true, - sortClassName: true - }, - expand: true, - cwd: '_gh_pages', - dest: '_gh_pages', - src: [ - '**/*.html', - '!examples/**/*.html' - ] - } - }, - - pug: { - options: { - pretty: true, - data: getLessVarsData - }, - customizerVars: { - src: 'docs/_pug/customizer-variables.pug', - dest: 'docs/_includes/customizer-variables.html' - }, - customizerNav: { - src: 'docs/_pug/customizer-nav.pug', - dest: 'docs/_includes/nav/customize.html' - } - }, - - htmllint: { - options: { - ignore: [ - 'Attribute "autocomplete" not allowed on element "button" at this point.', - 'Attribute "autocomplete" is only allowed when the input type is "color", "date", "datetime", "datetime-local", "email", "hidden", "month", "number", "password", "range", "search", "tel", "text", "time", "url", or "week".', - 'Element "img" is missing required attribute "src".' - ] - }, - src: '_gh_pages/**/*.html' - }, - - watch: { - src: { - files: '<%= jshint.core.src %>', - tasks: ['jshint:core', 'qunit', 'concat'] - }, - test: { - files: '<%= jshint.test.src %>', - tasks: ['jshint:test', 'qunit'] - }, - less: { - files: 'less/**/*.less', - tasks: 'less' - } - }, - - 'saucelabs-qunit': { - all: { - options: { - build: process.env.TRAVIS_JOB_ID, - throttled: 10, - maxRetries: 3, - maxPollRetries: 4, - urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'], - browsers: grunt.file.readYAML('grunt/sauce_browsers.yml') - } - } - }, - - exec: { - npmUpdate: { - command: 'npm update' - } - }, - - compress: { - main: { - options: { - archive: 'bootstrap-<%= pkg.version %>-dist.zip', - mode: 'zip', - level: 9, - pretty: true - }, - files: [ - { - expand: true, - cwd: 'dist/', - src: ['**'], - dest: 'bootstrap-<%= pkg.version %>-dist' - } - ] - } - } - - }); - - - // These plugins provide necessary tasks. - require('load-grunt-tasks')(grunt, { scope: 'devDependencies' }); - require('time-grunt')(grunt); - - // Docs HTML validation task - grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint']); - - var runSubset = function (subset) { - return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset; - }; - var isUndefOrNonZero = function (val) { - return val === undefined || val !== '0'; - }; - - // Test task. - var testSubtasks = []; - // Skip core tests if running a different subset of the test suite - if (runSubset('core') && - // Skip core tests if this is a Savage build - process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') { - testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']); - } - // Skip HTML validation if running a different subset of the test suite - if (runSubset('validate-html') && - // Skip HTML5 validator on Travis when [skip validator] is in the commit message - isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) { - testSubtasks.push('validate-html'); - } - // Only run Sauce Labs tests if there's a Sauce access key - if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' && - // Skip Sauce if running a different subset of the test suite - runSubset('sauce-js-unit') && - // Skip Sauce on Travis when [skip sauce] is in the commit message - isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) { - testSubtasks.push('connect'); - testSubtasks.push('saucelabs-qunit'); - } - grunt.registerTask('test', testSubtasks); - grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']); - - // JS distribution task. - grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']); - - // CSS distribution task. - grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']); - grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']); - - // Full distribution task. - grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']); - - // Default task. - grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']); - - grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); }); - - // task for building customizer - grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']); - grunt.registerTask('build-customizer-html', 'pug'); - grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () { - var banner = grunt.template.process('<%= banner %>'); - generateRawFiles(grunt, banner); - }); - - grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () { - var srcFiles = grunt.config.get('concat.bootstrap.src'); - var destFilepath = 'dist/js/npm.js'; - generateCommonJSModule(grunt, srcFiles, destFilepath); - }); - - // Docs task. - grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']); - grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']); - grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']); - grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']); - grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']); - grunt.registerTask('docs-github', ['jekyll:github', 'htmlmin']); - - grunt.registerTask('prep-release', ['dist', 'docs', 'docs-github', 'compress']); -}; diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/LICENSE b/docs/api-reference/v1.5/node_modules/bootstrap/LICENSE deleted file mode 100644 index 7a300022c3..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2011-2016 Twitter, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/README.md b/docs/api-reference/v1.5/node_modules/bootstrap/README.md deleted file mode 100644 index f92150f4f6..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/README.md +++ /dev/null @@ -1,142 +0,0 @@ -# [Bootstrap](http://getbootstrap.com) - -[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com) -![Bower version](https://img.shields.io/bower/v/bootstrap.svg) -[![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap) -[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap) -[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies) -[![NuGet](https://img.shields.io/nuget/v/bootstrap.svg)](https://www.nuget.org/packages/Bootstrap) -[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap) - -Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community. - -To get started, check out ! - - -## Table of contents - -* [Quick start](#quick-start) -* [Bugs and feature requests](#bugs-and-feature-requests) -* [Documentation](#documentation) -* [Contributing](#contributing) -* [Community](#community) -* [Versioning](#versioning) -* [Creators](#creators) -* [Copyright and license](#copyright-and-license) - - -## Quick start - -Several quick start options are available: - -* [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.7.zip). -* Clone the repo: `git clone https://github.com/twbs/bootstrap.git`. -* Install with [Bower](http://bower.io): `bower install bootstrap`. -* Install with [npm](https://www.npmjs.com): `npm install bootstrap@3`. -* Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`. -* Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`. - -Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more. - -### What's included - -Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this: - -``` -bootstrap/ -├── css/ -│ ├── bootstrap.css -│ ├── bootstrap.css.map -│ ├── bootstrap.min.css -│ ├── bootstrap.min.css.map -│ ├── bootstrap-theme.css -│ ├── bootstrap-theme.css.map -│ ├── bootstrap-theme.min.css -│ └── bootstrap-theme.min.css.map -├── js/ -│ ├── bootstrap.js -│ └── bootstrap.min.js -└── fonts/ - ├── glyphicons-halflings-regular.eot - ├── glyphicons-halflings-regular.svg - ├── glyphicons-halflings-regular.ttf - ├── glyphicons-halflings-regular.woff - └── glyphicons-halflings-regular.woff2 -``` - -We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme. - - -## Bugs and feature requests - -Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new). - -Note that **feature requests must target [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev),** because Bootstrap v3 is now in maintenance mode and is closed off to new features. This is so that we can focus our efforts on Bootstrap v4. - - -## Documentation - -Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at . The docs may also be run locally. - -### Running documentation locally - -1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) and other Ruby dependencies with `bundle install`. - **Note for Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems. -2. From the root `/bootstrap` directory, run `bundle exec jekyll serve` in the command line. -4. Open `http://localhost:9001` in your browser, and voilà. - -Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/). - -### Documentation for previous releases - -Documentation for v2.3.2 has been made available for the time being at while folks transition to Bootstrap 3. - -[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download. - - -## Contributing - -Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. - -Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo). - -**Bootstrap v3 is now closed off to new features.** It has gone into maintenance mode so that we can focus our efforts on [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev), the future of the framework. Pull requests which add new features (rather than fix bugs) should target [Bootstrap v4 (the `v4-dev` git branch)](https://github.com/twbs/bootstrap/tree/v4-dev) instead. - -Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at . - - -## Community - -Get updates on Bootstrap's development and chat with the project maintainers and community members. - -* Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap). -* Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com). -* Join [the official Slack room](https://bootstrap-slack.herokuapp.com). -* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel. -* Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)). -* Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. - - -## Versioning - -For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible. - -See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release. - - -## Creators - -**Mark Otto** - -* -* - -**Jacob Thornton** - -* -* - - -## Copyright and license - -Code and documentation copyright 2011-2016 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE). diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.css b/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.css deleted file mode 100644 index 31d8882661..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.css +++ /dev/null @@ -1,587 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default.disabled, -.btn-primary.disabled, -.btn-success.disabled, -.btn-info.disabled, -.btn-warning.disabled, -.btn-danger.disabled, -.btn-default[disabled], -.btn-primary[disabled], -.btn-success[disabled], -.btn-info[disabled], -.btn-warning[disabled], -.btn-danger[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-danger { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.css.map b/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.css.map deleted file mode 100644 index d876f60fb4..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAAA;;;;GAIG;ACeH;;;;;;EAME,yCAAA;EC2CA,4FAAA;EACQ,oFAAA;CFvDT;ACgBC;;;;;;;;;;;;ECsCA,yDAAA;EACQ,iDAAA;CFxCT;ACMC;;;;;;;;;;;;;;;;;;ECiCA,yBAAA;EACQ,iBAAA;CFnBT;AC/BD;;;;;;EAuBI,kBAAA;CDgBH;ACyBC;;EAEE,uBAAA;CDvBH;AC4BD;EErEI,sEAAA;EACA,iEAAA;EACA,2FAAA;EAAA,oEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;EAuC2C,0BAAA;EAA2B,mBAAA;CDjBvE;ACpBC;;EAEE,0BAAA;EACA,6BAAA;CDsBH;ACnBC;;EAEE,0BAAA;EACA,sBAAA;CDqBH;ACfG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6BL;ACbD;EEtEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8DD;AC5DC;;EAEE,0BAAA;EACA,6BAAA;CD8DH;AC3DC;;EAEE,0BAAA;EACA,sBAAA;CD6DH;ACvDG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqEL;ACpDD;EEvEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsGD;ACpGC;;EAEE,0BAAA;EACA,6BAAA;CDsGH;ACnGC;;EAEE,0BAAA;EACA,sBAAA;CDqGH;AC/FG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6GL;AC3FD;EExEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ID;AC5IC;;EAEE,0BAAA;EACA,6BAAA;CD8IH;AC3IC;;EAEE,0BAAA;EACA,sBAAA;CD6IH;ACvIG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqJL;AClID;EEzEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsLD;ACpLC;;EAEE,0BAAA;EACA,6BAAA;CDsLH;ACnLC;;EAEE,0BAAA;EACA,sBAAA;CDqLH;AC/KG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6LL;ACzKD;EE1EI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ND;AC5NC;;EAEE,0BAAA;EACA,6BAAA;CD8NH;AC3NC;;EAEE,0BAAA;EACA,sBAAA;CD6NH;ACvNG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqOL;AC1MD;;EClCE,mDAAA;EACQ,2CAAA;CFgPT;ACrMD;;EE3FI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF0FF,0BAAA;CD2MD;ACzMD;;;EEhGI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFgGF,0BAAA;CD+MD;ACtMD;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EH+HA,mBAAA;ECjEA,4FAAA;EACQ,oFAAA;CF8QT;ACjND;;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,yDAAA;EACQ,iDAAA;CFwRT;AC9MD;;EAEE,+CAAA;CDgND;AC5MD;EEhII,sEAAA;EACA,iEAAA;EACA,2FAAA;EAAA,oEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EHkJA,mBAAA;CDkND;ACrND;;EEhII,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,wDAAA;EACQ,gDAAA;CF+ST;AC/ND;;EAYI,0CAAA;CDuNH;AClND;;;EAGE,iBAAA;CDoND;AC/LD;EAfI;;;IAGE,YAAA;IE7JF,yEAAA;IACA,oEAAA;IACA,8FAAA;IAAA,uEAAA;IACA,4BAAA;IACA,uHAAA;GH+WD;CACF;AC3MD;EACE,8CAAA;EC3HA,2FAAA;EACQ,mFAAA;CFyUT;ACnMD;EEtLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+MD;AC1MD;EEvLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuND;ACjND;EExLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+ND;ACxND;EEzLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuOD;ACxND;EEjMI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH4ZH;ACrND;EE3MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHmaH;AC3ND;EE5MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH0aH;ACjOD;EE7MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHibH;ACvOD;EE9MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHwbH;AC7OD;EE/MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH+bH;AChPD;EElLI,8MAAA;EACA,yMAAA;EACA,sMAAA;CHqaH;AC5OD;EACE,mBAAA;EC9KA,mDAAA;EACQ,2CAAA;CF6ZT;AC7OD;;;EAGE,8BAAA;EEnOE,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFiOF,sBAAA;CDmPD;ACxPD;;;EAQI,kBAAA;CDqPH;AC3OD;ECnME,kDAAA;EACQ,0CAAA;CFibT;ACrOD;EE5PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHoeH;AC3OD;EE7PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH2eH;ACjPD;EE9PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHkfH;ACvPD;EE/PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHyfH;AC7PD;EEhQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHggBH;ACnQD;EEjQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHugBH;ACnQD;EExQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFsQF,sBAAA;EC3NA,0FAAA;EACQ,kFAAA;CFqeT","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.min.css b/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.min.css deleted file mode 100644 index 5e39401957..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} -/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.min.css.map b/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.min.css.map deleted file mode 100644 index 94813e9006..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap-theme.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":";;;;AAmBA,YAAA,aAAA,UAAA,aAAA,aAAA,aAME,YAAA,EAAA,KAAA,EAAA,eC2CA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBDvCR,mBAAA,mBAAA,oBAAA,oBAAA,iBAAA,iBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBCsCA,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBDlCR,qBAAA,sBAAA,sBAAA,uBAAA,mBAAA,oBAAA,sBAAA,uBAAA,sBAAA,uBAAA,sBAAA,uBAAA,+BAAA,gCAAA,6BAAA,gCAAA,gCAAA,gCCiCA,mBAAA,KACQ,WAAA,KDlDV,mBAAA,oBAAA,iBAAA,oBAAA,oBAAA,oBAuBI,YAAA,KAyCF,YAAA,YAEE,iBAAA,KAKJ,aErEI,YAAA,EAAA,IAAA,EAAA,KACA,iBAAA,iDACA,iBAAA,4CAAA,iBAAA,qEAEA,iBAAA,+CCnBF,OAAA,+GH4CA,OAAA,0DACA,kBAAA,SAuC2C,aAAA,QAA2B,aAAA,KArCtE,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAgBN,aEtEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAiBN,aEvEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAkBN,UExEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,gBAAA,gBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,iBAAA,iBAEE,iBAAA,QACA,aAAA,QAMA,mBAAA,0BAAA,yBAAA,0BAAA,yBAAA,yBAAA,oBAAA,2BAAA,0BAAA,2BAAA,0BAAA,0BAAA,6BAAA,oCAAA,mCAAA,oCAAA,mCAAA,mCAME,iBAAA,QACA,iBAAA,KAmBN,aEzEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAoBN,YE1EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,kBAAA,kBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,mBAAA,mBAEE,iBAAA,QACA,aAAA,QAMA,qBAAA,4BAAA,2BAAA,4BAAA,2BAAA,2BAAA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,+BAAA,sCAAA,qCAAA,sCAAA,qCAAA,qCAME,iBAAA,QACA,iBAAA,KA2BN,eAAA,WClCE,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBD2CV,0BAAA,0BE3FI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GF0FF,kBAAA,SAEF,yBAAA,+BAAA,+BEhGI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GFgGF,kBAAA,SASF,gBE7GI,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SH+HA,cAAA,ICjEA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBD6DV,sCAAA,oCE7GI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBD0EV,cAAA,iBAEE,YAAA,EAAA,IAAA,EAAA,sBAIF,gBEhII,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SHkJA,cAAA,IAHF,sCAAA,oCEhII,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBDgFV,8BAAA,iCAYI,YAAA,EAAA,KAAA,EAAA,gBAKJ,qBAAA,kBAAA,mBAGE,cAAA,EAqBF,yBAfI,mDAAA,yDAAA,yDAGE,MAAA,KE7JF,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,UFqKJ,OACE,YAAA,EAAA,IAAA,EAAA,qBC3HA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBDsIV,eEtLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAKF,YEvLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAMF,eExLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAOF,cEzLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAeF,UEjMI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFuMJ,cE3MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFwMJ,sBE5MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyMJ,mBE7MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0MJ,sBE9MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2MJ,qBE/MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF+MJ,sBElLI,iBAAA,yKACA,iBAAA,oKACA,iBAAA,iKFyLJ,YACE,cAAA,IC9KA,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBDgLV,wBAAA,8BAAA,8BAGE,YAAA,EAAA,KAAA,EAAA,QEnOE,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFiOF,aAAA,QALF,+BAAA,qCAAA,qCAQI,YAAA,KAUJ,OCnME,mBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,EAAA,IAAA,IAAA,gBD4MV,8BE5PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyPJ,8BE7PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0PJ,8BE9PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2PJ,2BE/PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF4PJ,8BEhQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF6PJ,6BEjQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoQJ,MExQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFsQF,aAAA,QC3NA,mBAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA,qBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap.css b/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap.css deleted file mode 100644 index 6167622cec..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap.css +++ /dev/null @@ -1,6757 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: .2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover, -a.text-primary:focus { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: .01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #eee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - min-height: 34px; - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.form-group-lg select.form-control { - height: 46px; - line-height: 46px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 11px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 11px; - font-size: 18px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:focus, -.btn-default.focus { - color: #333; - background-color: #e6e6e6; - border-color: #8c8c8c; -} -.btn-default:hover { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #333; - background-color: #d4d4d4; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:focus, -.btn-primary.focus { - color: #fff; - background-color: #286090; - border-color: #122b40; -} -.btn-primary:hover { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #fff; - background-color: #204d74; - border-color: #122b40; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:focus, -.btn-success.focus { - color: #fff; - background-color: #449d44; - border-color: #255625; -} -.btn-success:hover { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #fff; - background-color: #398439; - border-color: #255625; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:focus, -.btn-info.focus { - color: #fff; - background-color: #31b0d5; - border-color: #1b6d85; -} -.btn-info:hover { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #fff; - background-color: #269abc; - border-color: #1b6d85; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:focus, -.btn-warning.focus { - color: #fff; - background-color: #ec971f; - border-color: #985f0d; -} -.btn-warning:hover { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #fff; - background-color: #d58512; - border-color: #985f0d; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:focus, -.btn-danger.focus { - color: #fff; - background-color: #c9302c; - border-color: #761c19; -} -.btn-danger:hover { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #fff; - background-color: #ac2925; - border-color: #761c19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group .form-control:focus { - z-index: 3; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: middle; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - padding-right: 15px; - padding-left: 15px; - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item, -button.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #337ab7; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; -} -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - filter: alpha(opacity=0); - opacity: 0; - - line-break: auto; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - - line-break: auto; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - background-color: rgba(0, 0, 0, 0); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -10px; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - font-family: serif; - line-height: 1; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -10px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -10px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -10px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap.css.map b/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap.css.map deleted file mode 100644 index f010c82d11..0000000000 --- a/docs/api-reference/v1.5/node_modules/bootstrap/dist/css/bootstrap.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4EAA4E;ACG5E;EACE,wBAAA;EACA,2BAAA;EACA,+BAAA;CDDD;ACQD;EACE,UAAA;CDND;ACmBD;;;;;;;;;;;;;EAaE,eAAA;CDjBD;ACyBD;;;;EAIE,sBAAA;EACA,yBAAA;CDvBD;AC+BD;EACE,cAAA;EACA,UAAA;CD7BD;ACqCD;;EAEE,cAAA;CDnCD;AC6CD;EACE,8BAAA;CD3CD;ACmDD;;EAEE,WAAA;CDjDD;AC2DD;EACE,0BAAA;CDzDD;ACgED;;EAEE,kBAAA;CD9DD;ACqED;EACE,mBAAA;CDnED;AC2ED;EACE,eAAA;EACA,iBAAA;CDzED;ACgFD;EACE,iBAAA;EACA,YAAA;CD9ED;ACqFD;EACE,eAAA;CDnFD;AC0FD;;EAEE,eAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;CDxFD;AC2FD;EACE,YAAA;CDzFD;AC4FD;EACE,gBAAA;CD1FD;ACoGD;EACE,UAAA;CDlGD;ACyGD;EACE,iBAAA;CDvGD;ACiHD;EACE,iBAAA;CD/GD;ACsHD;EACE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,UAAA;CDpHD;AC2HD;EACE,eAAA;CDzHD;ACgID;;;;EAIE,kCAAA;EACA,eAAA;CD9HD;ACgJD;;;;;EAKE,eAAA;EACA,cAAA;EACA,UAAA;CD9ID;ACqJD;EACE,kBAAA;CDnJD;AC6JD;;EAEE,qBAAA;CD3JD;ACsKD;;;;EAIE,2BAAA;EACA,gBAAA;CDpKD;AC2KD;;EAEE,gBAAA;CDzKD;ACgLD;;EAEE,UAAA;EACA,WAAA;CD9KD;ACsLD;EACE,oBAAA;CDpLD;AC+LD;;EAEE,+BAAA;KAAA,4BAAA;UAAA,uBAAA;EACA,WAAA;CD7LD;ACsMD;;EAEE,aAAA;CDpMD;AC4MD;EACE,8BAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;CD1MD;ACmND;;EAEE,yBAAA;CDjND;ACwND;EACE,0BAAA;EACA,cAAA;EACA,+BAAA;CDtND;AC8ND;EACE,UAAA;EACA,WAAA;CD5ND;ACmOD;EACE,eAAA;CDjOD;ACyOD;EACE,kBAAA;CDvOD;ACiPD;EACE,0BAAA;EACA,kBAAA;CD/OD;ACkPD;;EAEE,WAAA;CDhPD;AACD,qFAAqF;AElFrF;EA7FI;;;IAGI,mCAAA;IACA,uBAAA;IACA,oCAAA;YAAA,4BAAA;IACA,6BAAA;GFkLL;EE/KC;;IAEI,2BAAA;GFiLL;EE9KC;IACI,6BAAA;GFgLL;EE7KC;IACI,8BAAA;GF+KL;EE1KC;;IAEI,YAAA;GF4KL;EEzKC;;IAEI,uBAAA;IACA,yBAAA;GF2KL;EExKC;IACI,4BAAA;GF0KL;EEvKC;;IAEI,yBAAA;GFyKL;EEtKC;IACI,2BAAA;GFwKL;EErKC;;;IAGI,WAAA;IACA,UAAA;GFuKL;EEpKC;;IAEI,wBAAA;GFsKL;EEhKC;IACI,cAAA;GFkKL;EEhKC;;IAGQ,kCAAA;GFiKT;EE9JC;IACI,uBAAA;GFgKL;EE7JC;IACI,qCAAA;GF+JL;EEhKC;;IAKQ,kCAAA;GF+JT;EE5JC;;IAGQ,kCAAA;GF6JT;CACF;AGnPD;EACE,oCAAA;EACA,sDAAA;EACA,gYAAA;CHqPD;AG7OD;EACE,mBAAA;EACA,SAAA;EACA,sBAAA;EACA,oCAAA;EACA,mBAAA;EACA,oBAAA;EACA,eAAA;EACA,oCAAA;EACA,mCAAA;CH+OD;AG3OmC;EAAW,iBAAA;CH8O9C;AG7OmC;EAAW,iBAAA;CHgP9C;AG9OmC;;EAAW,iBAAA;CHkP9C;AGjPmC;EAAW,iBAAA;CHoP9C;AGnPmC;EAAW,iBAAA;CHsP9C;AGrPmC;EAAW,iBAAA;CHwP9C;AGvPmC;EAAW,iBAAA;CH0P9C;AGzPmC;EAAW,iBAAA;CH4P9C;AG3PmC;EAAW,iBAAA;CH8P9C;AG7PmC;EAAW,iBAAA;CHgQ9C;AG/PmC;EAAW,iBAAA;CHkQ9C;AGjQmC;EAAW,iBAAA;CHoQ9C;AGnQmC;EAAW,iBAAA;CHsQ9C;AGrQmC;EAAW,iBAAA;CHwQ9C;AGvQmC;EAAW,iBAAA;CH0Q9C;AGzQmC;EAAW,iBAAA;CH4Q9C;AG3QmC;EAAW,iBAAA;CH8Q9C;AG7QmC;EAAW,iBAAA;CHgR9C;AG/QmC;EAAW,iBAAA;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;EAAW,iBAAA;CH4tB9C;AG3tBmC;EAAW,iBAAA;CH8tB9C;AG7tBmC;EAAW,iBAAA;CHguB9C;AG/tBmC;EAAW,iBAAA;CHkuB9C;AGjuBmC;EAAW,iBAAA;CHouB9C;AGnuBmC;EAAW,iBAAA;CHsuB9C;AGruBmC;EAAW,iBAAA;CHwuB9C;AGvuBmC;EAAW,iBAAA;CH0uB9C;AGzuBmC;EAAW,iBAAA;CH4uB9C;AG3uBmC;EAAW,iBAAA;CH8uB9C;AG7uBmC;EAAW,iBAAA;CHgvB9C;AIthCD;ECgEE,+BAAA;EACG,4BAAA;EACK,uBAAA;CLy9BT;AIxhCD;;EC6DE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL+9BT;AIthCD;EACE,gBAAA;EACA,8CAAA;CJwhCD;AIrhCD;EACE,4DAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;CJuhCD;AInhCD;;;;EAIE,qBAAA;EACA,mBAAA;EACA,qBAAA;CJqhCD;AI/gCD;EACE,eAAA;EACA,sBAAA;CJihCD;AI/gCC;;EAEE,eAAA;EACA,2BAAA;CJihCH;AI9gCC;EEnDA,2CAAA;EACA,qBAAA;CNokCD;AIvgCD;EACE,UAAA;CJygCD;AIngCD;EACE,uBAAA;CJqgCD;AIjgCD;;;;;EGvEE,eAAA;EACA,gBAAA;EACA,aAAA;CP+kCD;AIrgCD;EACE,mBAAA;CJugCD;AIjgCD;EACE,aAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EC6FA,yCAAA;EACK,oCAAA;EACG,iCAAA;EEvLR,sBAAA;EACA,gBAAA;EACA,aAAA;CP+lCD;AIjgCD;EACE,mBAAA;CJmgCD;AI7/BD;EACE,iBAAA;EACA,oBAAA;EACA,UAAA;EACA,8BAAA;CJ+/BD;AIv/BD;EACE,mBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,WAAA;EACA,iBAAA;EACA,uBAAA;EACA,UAAA;CJy/BD;AIj/BC;;EAEE,iBAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;CJm/BH;AIx+BD;EACE,gBAAA;CJ0+BD;AQjoCD;;;;;;;;;;;;EAEE,qBAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;CR6oCD;AQlpCD;;;;;;;;;;;;;;;;;;;;;;;;EASI,oBAAA;EACA,eAAA;EACA,eAAA;CRmqCH;AQ/pCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRoqCD;AQxqCD;;;;;;;;;;;;EAQI,eAAA;CR8qCH;AQ3qCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRgrCD;AQprCD;;;;;;;;;;;;EAQI,eAAA;CR0rCH;AQtrCD;;EAAU,gBAAA;CR0rCT;AQzrCD;;EAAU,gBAAA;CR6rCT;AQ5rCD;;EAAU,gBAAA;CRgsCT;AQ/rCD;;EAAU,gBAAA;CRmsCT;AQlsCD;;EAAU,gBAAA;CRssCT;AQrsCD;;EAAU,gBAAA;CRysCT;AQnsCD;EACE,iBAAA;CRqsCD;AQlsCD;EACE,oBAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;CRosCD;AQ/rCD;EAwOA;IA1OI,gBAAA;GRqsCD;CACF;AQ7rCD;;EAEE,eAAA;CR+rCD;AQ5rCD;;EAEE,0BAAA;EACA,cAAA;CR8rCD;AQ1rCD;EAAuB,iBAAA;CR6rCtB;AQ5rCD;EAAuB,kBAAA;CR+rCtB;AQ9rCD;EAAuB,mBAAA;CRisCtB;AQhsCD;EAAuB,oBAAA;CRmsCtB;AQlsCD;EAAuB,oBAAA;CRqsCtB;AQlsCD;EAAuB,0BAAA;CRqsCtB;AQpsCD;EAAuB,0BAAA;CRusCtB;AQtsCD;EAAuB,2BAAA;CRysCtB;AQtsCD;EACE,eAAA;CRwsCD;AQtsCD;ECrGE,eAAA;CT8yCD;AS7yCC;;EAEE,eAAA;CT+yCH;AQ1sCD;ECxGE,eAAA;CTqzCD;ASpzCC;;EAEE,eAAA;CTszCH;AQ9sCD;EC3GE,eAAA;CT4zCD;AS3zCC;;EAEE,eAAA;CT6zCH;AQltCD;EC9GE,eAAA;CTm0CD;ASl0CC;;EAEE,eAAA;CTo0CH;AQttCD;ECjHE,eAAA;CT00CD;ASz0CC;;EAEE,eAAA;CT20CH;AQttCD;EAGE,YAAA;EE3HA,0BAAA;CVk1CD;AUj1CC;;EAEE,0BAAA;CVm1CH;AQxtCD;EE9HE,0BAAA;CVy1CD;AUx1CC;;EAEE,0BAAA;CV01CH;AQ5tCD;EEjIE,0BAAA;CVg2CD;AU/1CC;;EAEE,0BAAA;CVi2CH;AQhuCD;EEpIE,0BAAA;CVu2CD;AUt2CC;;EAEE,0BAAA;CVw2CH;AQpuCD;EEvIE,0BAAA;CV82CD;AU72CC;;EAEE,0BAAA;CV+2CH;AQnuCD;EACE,oBAAA;EACA,oBAAA;EACA,iCAAA;CRquCD;AQ7tCD;;EAEE,cAAA;EACA,oBAAA;CR+tCD;AQluCD;;;;EAMI,iBAAA;CRkuCH;AQ3tCD;EACE,gBAAA;EACA,iBAAA;CR6tCD;AQztCD;EALE,gBAAA;EACA,iBAAA;EAMA,kBAAA;CR4tCD;AQ9tCD;EAKI,sBAAA;EACA,kBAAA;EACA,mBAAA;CR4tCH;AQvtCD;EACE,cAAA;EACA,oBAAA;CRytCD;AQvtCD;;EAEE,wBAAA;CRytCD;AQvtCD;EACE,kBAAA;CRytCD;AQvtCD;EACE,eAAA;CRytCD;AQhsCD;EA6EA;IAvFM,YAAA;IACA,aAAA;IACA,YAAA;IACA,kBAAA;IGtNJ,iBAAA;IACA,wBAAA;IACA,oBAAA;GXq6CC;EQ7nCH;IAhFM,mBAAA;GRgtCH;CACF;AQvsCD;;EAGE,aAAA;EACA,kCAAA;CRwsCD;AQtsCD;EACE,eAAA;EA9IqB,0BAAA;CRu1CtB;AQpsCD;EACE,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,+BAAA;CRssCD;AQjsCG;;;EACE,iBAAA;CRqsCL;AQ/sCD;;;EAmBI,eAAA;EACA,eAAA;EACA,wBAAA;EACA,eAAA;CRisCH;AQ/rCG;;;EACE,uBAAA;CRmsCL;AQ3rCD;;EAEE,oBAAA;EACA,gBAAA;EACA,gCAAA;EACA,eAAA;EACA,kBAAA;CR6rCD;AQvrCG;;;;;;EAAW,YAAA;CR+rCd;AQ9rCG;;;;;;EACE,uBAAA;CRqsCL;AQ/rCD;EACE,oBAAA;EACA,mBAAA;EACA,wBAAA;CRisCD;AYv+CD;;;;EAIE,+DAAA;CZy+CD;AYr+CD;EACE,iBAAA;EACA,eAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CZu+CD;AYn+CD;EACE,iBAAA;EACA,eAAA;EACA,YAAA;EACA,uBAAA;EACA,mBAAA;EACA,uDAAA;UAAA,+CAAA;CZq+CD;AY3+CD;EASI,WAAA;EACA,gBAAA;EACA,kBAAA;EACA,yBAAA;UAAA,iBAAA;CZq+CH;AYh+CD;EACE,eAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAA;EACA,sBAAA;EACA,eAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;CZk+CD;AY7+CD;EAeI,WAAA;EACA,mBAAA;EACA,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,iBAAA;CZi+CH;AY59CD;EACE,kBAAA;EACA,mBAAA;CZ89CD;AaxhDD;ECHE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;Cd8hDD;AaxhDC;EAqEF;IAvEI,aAAA;Gb8hDD;CACF;Aa1hDC;EAkEF;IApEI,aAAA;GbgiDD;CACF;Aa5hDD;EA+DA;IAjEI,cAAA;GbkiDD;CACF;AazhDD;ECvBE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;CdmjDD;AathDD;ECvBE,mBAAA;EACA,oBAAA;CdgjDD;AehjDG;EACE,mBAAA;EAEA,gBAAA;EAEA,mBAAA;EACA,oBAAA;CfgjDL;AehiDG;EACE,YAAA;CfkiDL;Ae3hDC;EACE,YAAA;Cf6hDH;Ae9hDC;EACE,oBAAA;CfgiDH;AejiDC;EACE,oBAAA;CfmiDH;AepiDC;EACE,WAAA;CfsiDH;AeviDC;EACE,oBAAA;CfyiDH;Ae1iDC;EACE,oBAAA;Cf4iDH;Ae7iDC;EACE,WAAA;Cf+iDH;AehjDC;EACE,oBAAA;CfkjDH;AenjDC;EACE,oBAAA;CfqjDH;AetjDC;EACE,WAAA;CfwjDH;AezjDC;EACE,oBAAA;Cf2jDH;Ae5jDC;EACE,mBAAA;Cf8jDH;AehjDC;EACE,YAAA;CfkjDH;AenjDC;EACE,oBAAA;CfqjDH;AetjDC;EACE,oBAAA;CfwjDH;AezjDC;EACE,WAAA;Cf2jDH;Ae5jDC;EACE,oBAAA;Cf8jDH;Ae/jDC;EACE,oBAAA;CfikDH;AelkDC;EACE,WAAA;CfokDH;AerkDC;EACE,oBAAA;CfukDH;AexkDC;EACE,oBAAA;Cf0kDH;Ae3kDC;EACE,WAAA;Cf6kDH;Ae9kDC;EACE,oBAAA;CfglDH;AejlDC;EACE,mBAAA;CfmlDH;Ae/kDC;EACE,YAAA;CfilDH;AejmDC;EACE,WAAA;CfmmDH;AepmDC;EACE,mBAAA;CfsmDH;AevmDC;EACE,mBAAA;CfymDH;Ae1mDC;EACE,UAAA;Cf4mDH;Ae7mDC;EACE,mBAAA;Cf+mDH;AehnDC;EACE,mBAAA;CfknDH;AennDC;EACE,UAAA;CfqnDH;AetnDC;EACE,mBAAA;CfwnDH;AeznDC;EACE,mBAAA;Cf2nDH;Ae5nDC;EACE,UAAA;Cf8nDH;Ae/nDC;EACE,mBAAA;CfioDH;AeloDC;EACE,kBAAA;CfooDH;AehoDC;EACE,WAAA;CfkoDH;AepnDC;EACE,kBAAA;CfsnDH;AevnDC;EACE,0BAAA;CfynDH;Ae1nDC;EACE,0BAAA;Cf4nDH;Ae7nDC;EACE,iBAAA;Cf+nDH;AehoDC;EACE,0BAAA;CfkoDH;AenoDC;EACE,0BAAA;CfqoDH;AetoDC;EACE,iBAAA;CfwoDH;AezoDC;EACE,0BAAA;Cf2oDH;Ae5oDC;EACE,0BAAA;Cf8oDH;Ae/oDC;EACE,iBAAA;CfipDH;AelpDC;EACE,0BAAA;CfopDH;AerpDC;EACE,yBAAA;CfupDH;AexpDC;EACE,gBAAA;Cf0pDH;Aa1pDD;EElCI;IACE,YAAA;Gf+rDH;EexrDD;IACE,YAAA;Gf0rDD;Ee3rDD;IACE,oBAAA;Gf6rDD;Ee9rDD;IACE,oBAAA;GfgsDD;EejsDD;IACE,WAAA;GfmsDD;EepsDD;IACE,oBAAA;GfssDD;EevsDD;IACE,oBAAA;GfysDD;Ee1sDD;IACE,WAAA;Gf4sDD;Ee7sDD;IACE,oBAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,WAAA;GfqtDD;EettDD;IACE,oBAAA;GfwtDD;EeztDD;IACE,mBAAA;Gf2tDD;Ee7sDD;IACE,YAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,oBAAA;GfqtDD;EettDD;IACE,WAAA;GfwtDD;EeztDD;IACE,oBAAA;Gf2tDD;Ee5tDD;IACE,oBAAA;Gf8tDD;Ee/tDD;IACE,WAAA;GfiuDD;EeluDD;IACE,oBAAA;GfouDD;EeruDD;IACE,oBAAA;GfuuDD;EexuDD;IACE,WAAA;Gf0uDD;Ee3uDD;IACE,oBAAA;Gf6uDD;Ee9uDD;IACE,mBAAA;GfgvDD;Ee5uDD;IACE,YAAA;Gf8uDD;Ee9vDD;IACE,WAAA;GfgwDD;EejwDD;IACE,mBAAA;GfmwDD;EepwDD;IACE,mBAAA;GfswDD;EevwDD;IACE,UAAA;GfywDD;Ee1wDD;IACE,mBAAA;Gf4wDD;Ee7wDD;IACE,mBAAA;Gf+wDD;EehxDD;IACE,UAAA;GfkxDD;EenxDD;IACE,mBAAA;GfqxDD;EetxDD;IACE,mBAAA;GfwxDD;EezxDD;IACE,UAAA;Gf2xDD;Ee5xDD;IACE,mBAAA;Gf8xDD;Ee/xDD;IACE,kBAAA;GfiyDD;Ee7xDD;IACE,WAAA;Gf+xDD;EejxDD;IACE,kBAAA;GfmxDD;EepxDD;IACE,0BAAA;GfsxDD;EevxDD;IACE,0BAAA;GfyxDD;Ee1xDD;IACE,iBAAA;Gf4xDD;Ee7xDD;IACE,0BAAA;Gf+xDD;EehyDD;IACE,0BAAA;GfkyDD;EenyDD;IACE,iBAAA;GfqyDD;EetyDD;IACE,0BAAA;GfwyDD;EezyDD;IACE,0BAAA;Gf2yDD;Ee5yDD;IACE,iBAAA;Gf8yDD;Ee/yDD;IACE,0BAAA;GfizDD;EelzDD;IACE,yBAAA;GfozDD;EerzDD;IACE,gBAAA;GfuzDD;CACF;Aa/yDD;EE3CI;IACE,YAAA;Gf61DH;Eet1DD;IACE,YAAA;Gfw1DD;Eez1DD;IACE,oBAAA;Gf21DD;Ee51DD;IACE,oBAAA;Gf81DD;Ee/1DD;IACE,WAAA;Gfi2DD;Eel2DD;IACE,oBAAA;Gfo2DD;Eer2DD;IACE,oBAAA;Gfu2DD;Eex2DD;IACE,WAAA;Gf02DD;Ee32DD;IACE,oBAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,WAAA;Gfm3DD;Eep3DD;IACE,oBAAA;Gfs3DD;Eev3DD;IACE,mBAAA;Gfy3DD;Ee32DD;IACE,YAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,oBAAA;Gfm3DD;Eep3DD;IACE,WAAA;Gfs3DD;Eev3DD;IACE,oBAAA;Gfy3DD;Ee13DD;IACE,oBAAA;Gf43DD;Ee73DD;IACE,WAAA;Gf+3DD;Eeh4DD;IACE,oBAAA;Gfk4DD;Een4DD;IACE,oBAAA;Gfq4DD;Eet4DD;IACE,WAAA;Gfw4DD;Eez4DD;IACE,oBAAA;Gf24DD;Ee54DD;IACE,mBAAA;Gf84DD;Ee14DD;IACE,YAAA;Gf44DD;Ee55DD;IACE,WAAA;Gf85DD;Ee/5DD;IACE,mBAAA;Gfi6DD;Eel6DD;IACE,mBAAA;Gfo6DD;Eer6DD;IACE,UAAA;Gfu6DD;Eex6DD;IACE,mBAAA;Gf06DD;Ee36DD;IACE,mBAAA;Gf66DD;Ee96DD;IACE,UAAA;Gfg7DD;Eej7DD;IACE,mBAAA;Gfm7DD;Eep7DD;IACE,mBAAA;Gfs7DD;Eev7DD;IACE,UAAA;Gfy7DD;Ee17DD;IACE,mBAAA;Gf47DD;Ee77DD;IACE,kBAAA;Gf+7DD;Ee37DD;IACE,WAAA;Gf67DD;Ee/6DD;IACE,kBAAA;Gfi7DD;Eel7DD;IACE,0BAAA;Gfo7DD;Eer7DD;IACE,0BAAA;Gfu7DD;Eex7DD;IACE,iBAAA;Gf07DD;Ee37DD;IACE,0BAAA;Gf67DD;Ee97DD;IACE,0BAAA;Gfg8DD;Eej8DD;IACE,iBAAA;Gfm8DD;Eep8DD;IACE,0BAAA;Gfs8DD;Eev8DD;IACE,0BAAA;Gfy8DD;Ee18DD;IACE,iBAAA;Gf48DD;Ee78DD;IACE,0BAAA;Gf+8DD;Eeh9DD;IACE,yBAAA;Gfk9DD;Een9DD;IACE,gBAAA;Gfq9DD;CACF;Aa18DD;EE9CI;IACE,YAAA;Gf2/DH;Eep/DD;IACE,YAAA;Gfs/DD;Eev/DD;IACE,oBAAA;Gfy/DD;Ee1/DD;IACE,oBAAA;Gf4/DD;Ee7/DD;IACE,WAAA;Gf+/DD;EehgED;IACE,oBAAA;GfkgED;EengED;IACE,oBAAA;GfqgED;EetgED;IACE,WAAA;GfwgED;EezgED;IACE,oBAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,WAAA;GfihED;EelhED;IACE,oBAAA;GfohED;EerhED;IACE,mBAAA;GfuhED;EezgED;IACE,YAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,oBAAA;GfihED;EelhED;IACE,WAAA;GfohED;EerhED;IACE,oBAAA;GfuhED;EexhED;IACE,oBAAA;Gf0hED;Ee3hED;IACE,WAAA;Gf6hED;Ee9hED;IACE,oBAAA;GfgiED;EejiED;IACE,oBAAA;GfmiED;EepiED;IACE,WAAA;GfsiED;EeviED;IACE,oBAAA;GfyiED;Ee1iED;IACE,mBAAA;Gf4iED;EexiED;IACE,YAAA;Gf0iED;Ee1jED;IACE,WAAA;Gf4jED;Ee7jED;IACE,mBAAA;Gf+jED;EehkED;IACE,mBAAA;GfkkED;EenkED;IACE,UAAA;GfqkED;EetkED;IACE,mBAAA;GfwkED;EezkED;IACE,mBAAA;Gf2kED;Ee5kED;IACE,UAAA;Gf8kED;Ee/kED;IACE,mBAAA;GfilED;EellED;IACE,mBAAA;GfolED;EerlED;IACE,UAAA;GfulED;EexlED;IACE,mBAAA;Gf0lED;Ee3lED;IACE,kBAAA;Gf6lED;EezlED;IACE,WAAA;Gf2lED;Ee7kED;IACE,kBAAA;Gf+kED;EehlED;IACE,0BAAA;GfklED;EenlED;IACE,0BAAA;GfqlED;EetlED;IACE,iBAAA;GfwlED;EezlED;IACE,0BAAA;Gf2lED;Ee5lED;IACE,0BAAA;Gf8lED;Ee/lED;IACE,iBAAA;GfimED;EelmED;IACE,0BAAA;GfomED;EermED;IACE,0BAAA;GfumED;EexmED;IACE,iBAAA;Gf0mED;Ee3mED;IACE,0BAAA;Gf6mED;Ee9mED;IACE,yBAAA;GfgnED;EejnED;IACE,gBAAA;GfmnED;CACF;AgBvrED;EACE,8BAAA;ChByrED;AgBvrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChByrED;AgBvrED;EACE,iBAAA;ChByrED;AgBnrED;EACE,YAAA;EACA,gBAAA;EACA,oBAAA;ChBqrED;AgBxrED;;;;;;EAWQ,aAAA;EACA,wBAAA;EACA,oBAAA;EACA,2BAAA;ChBqrEP;AgBnsED;EAoBI,uBAAA;EACA,8BAAA;ChBkrEH;AgBvsED;;;;;;EA8BQ,cAAA;ChBirEP;AgB/sED;EAoCI,2BAAA;ChB8qEH;AgBltED;EAyCI,uBAAA;ChB4qEH;AgBrqED;;;;;;EAOQ,aAAA;ChBsqEP;AgB3pED;EACE,uBAAA;ChB6pED;AgB9pED;;;;;;EAQQ,uBAAA;ChB8pEP;AgBtqED;;EAeM,yBAAA;ChB2pEL;AgBjpED;EAEI,0BAAA;ChBkpEH;AgBzoED;EAEI,0BAAA;ChB0oEH;AgBjoED;EACE,iBAAA;EACA,YAAA;EACA,sBAAA;ChBmoED;AgB9nEG;;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;ChBioEL;AiB7wEC;;;;;;;;;;;;EAOI,0BAAA;CjBoxEL;AiB9wEC;;;;;EAMI,0BAAA;CjB+wEL;AiBlyEC;;;;;;;;;;;;EAOI,0BAAA;CjByyEL;AiBnyEC;;;;;EAMI,0BAAA;CjBoyEL;AiBvzEC;;;;;;;;;;;;EAOI,0BAAA;CjB8zEL;AiBxzEC;;;;;EAMI,0BAAA;CjByzEL;AiB50EC;;;;;;;;;;;;EAOI,0BAAA;CjBm1EL;AiB70EC;;;;;EAMI,0BAAA;CjB80EL;AiBj2EC;;;;;;;;;;;;EAOI,0BAAA;CjBw2EL;AiBl2EC;;;;;EAMI,0BAAA;CjBm2EL;AgBjtED;EACE,iBAAA;EACA,kBAAA;ChBmtED;AgBtpED;EACA;IA3DI,YAAA;IACA,oBAAA;IACA,mBAAA;IACA,6CAAA;IACA,uBAAA;GhBotED;EgB7pEH;IAnDM,iBAAA;GhBmtEH;EgBhqEH;;;;;;IA1CY,oBAAA;GhBktET;EgBxqEH;IAlCM,UAAA;GhB6sEH;EgB3qEH;;;;;;IAzBY,eAAA;GhB4sET;EgBnrEH;;;;;;IArBY,gBAAA;GhBgtET;EgB3rEH;;;;IARY,iBAAA;GhBysET;CACF;AkBn6ED;EACE,WAAA;EACA,UAAA;EACA,UAAA;EAIA,aAAA;ClBk6ED;AkB/5ED;EACE,eAAA;EACA,YAAA;EACA,WAAA;EACA,oBAAA;EACA,gBAAA;EACA,qBAAA;EACA,eAAA;EACA,UAAA;EACA,iCAAA;ClBi6ED;AkB95ED;EACE,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;ClBg6ED;AkBr5ED;Eb4BE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL43ET;AkBr5ED;;EAEE,gBAAA;EACA,mBAAA;EACA,oBAAA;ClBu5ED;AkBp5ED;EACE,eAAA;ClBs5ED;AkBl5ED;EACE,eAAA;EACA,YAAA;ClBo5ED;AkBh5ED;;EAEE,aAAA;ClBk5ED;AkB94ED;;;EZrEE,2CAAA;EACA,qBAAA;CNw9ED;AkB74ED;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;ClB+4ED;AkBr3ED;EACE,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EbxDA,yDAAA;EACQ,iDAAA;EAyHR,uFAAA;EACK,0EAAA;EACG,uEAAA;CLwzET;AmBh8EC;EACE,sBAAA;EACA,WAAA;EdUF,uFAAA;EACQ,+EAAA;CLy7ET;AKx5EC;EACE,YAAA;EACA,WAAA;CL05EH;AKx5EC;EAA0B,YAAA;CL25E3B;AK15EC;EAAgC,YAAA;CL65EjC;AkBj4EC;EACE,UAAA;EACA,8BAAA;ClBm4EH;AkB33EC;;;EAGE,0BAAA;EACA,WAAA;ClB63EH;AkB13EC;;EAEE,oBAAA;ClB43EH;AkBx3EC;EACE,aAAA;ClB03EH;AkB92ED;EACE,yBAAA;ClBg3ED;AkBx0ED;EAtBI;;;;IACE,kBAAA;GlBo2EH;EkBj2EC;;;;;;;;IAEE,kBAAA;GlBy2EH;EkBt2EC;;;;;;;;IAEE,kBAAA;GlB82EH;CACF;AkBp2ED;EACE,oBAAA;ClBs2ED;AkB91ED;;EAEE,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,oBAAA;ClBg2ED;AkBr2ED;;EAQI,iBAAA;EACA,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;ClBi2EH;AkB91ED;;;;EAIE,mBAAA;EACA,mBAAA;EACA,mBAAA;ClBg2ED;AkB71ED;;EAEE,iBAAA;ClB+1ED;AkB31ED;;EAEE,mBAAA;EACA,sBAAA;EACA,mBAAA;EACA,iBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;ClB61ED;AkB31ED;;EAEE,cAAA;EACA,kBAAA;ClB61ED;AkBp1EC;;;;;;EAGE,oBAAA;ClBy1EH;AkBn1EC;;;;EAEE,oBAAA;ClBu1EH;AkBj1EC;;;;EAGI,oBAAA;ClBo1EL;AkBz0ED;EAEE,iBAAA;EACA,oBAAA;EAEA,iBAAA;EACA,iBAAA;ClBy0ED;AkBv0EC;;EAEE,gBAAA;EACA,iBAAA;ClBy0EH;AkB5zED;ECnQE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBkkFD;AmBhkFC;EACE,aAAA;EACA,kBAAA;CnBkkFH;AmB/jFC;;EAEE,aAAA;CnBikFH;AkBx0ED;EAEI,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;ClBy0EH;AkB/0ED;EASI,aAAA;EACA,kBAAA;ClBy0EH;AkBn1ED;;EAcI,aAAA;ClBy0EH;AkBv1ED;EAiBI,aAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;ClBy0EH;AkBr0ED;EC/RE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBumFD;AmBrmFC;EACE,aAAA;EACA,kBAAA;CnBumFH;AmBpmFC;;EAEE,aAAA;CnBsmFH;AkBj1ED;EAEI,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ClBk1EH;AkBx1ED;EASI,aAAA;EACA,kBAAA;ClBk1EH;AkB51ED;;EAcI,aAAA;ClBk1EH;AkBh2ED;EAiBI,aAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;ClBk1EH;AkBz0ED;EAEE,mBAAA;ClB00ED;AkB50ED;EAMI,sBAAA;ClBy0EH;AkBr0ED;EACE,mBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,qBAAA;ClBu0ED;AkBr0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBu0ED;AkBr0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBu0ED;AkBn0ED;;;;;;;;;;EC1ZI,eAAA;CnByuFH;AkB/0ED;ECtZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL0rFT;AmBxuFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL+rFT;AkBz1ED;EC5YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBwuFH;AkB91ED;ECtYI,eAAA;CnBuuFH;AkB91ED;;;;;;;;;;EC7ZI,eAAA;CnBuwFH;AkB12ED;ECzZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLwtFT;AmBtwFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL6tFT;AkBp3ED;EC/YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBswFH;AkBz3ED;ECzYI,eAAA;CnBqwFH;AkBz3ED;;;;;;;;;;EChaI,eAAA;CnBqyFH;AkBr4ED;EC5ZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLsvFT;AmBpyFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL2vFT;AkB/4ED;EClZI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBoyFH;AkBp5ED;EC5YI,eAAA;CnBmyFH;AkBh5EC;EACE,UAAA;ClBk5EH;AkBh5EC;EACE,OAAA;ClBk5EH;AkBx4ED;EACE,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;ClB04ED;AkBvzED;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlBy3EH;EkBrvEH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBu3EH;EkB1vEH;IAxHM,sBAAA;GlBq3EH;EkB7vEH;IApHM,sBAAA;IACA,uBAAA;GlBo3EH;EkBjwEH;;;IA9GQ,YAAA;GlBo3EL;EkBtwEH;IAxGM,YAAA;GlBi3EH;EkBzwEH;IApGM,iBAAA;IACA,uBAAA;GlBg3EH;EkB7wEH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB62EH;EkBpxEH;;IAtFQ,gBAAA;GlB82EL;EkBxxEH;;IAjFM,mBAAA;IACA,eAAA;GlB62EH;EkB7xEH;IA3EM,OAAA;GlB22EH;CACF;AkBj2ED;;;;EASI,cAAA;EACA,iBAAA;EACA,iBAAA;ClB81EH;AkBz2ED;;EAiBI,iBAAA;ClB41EH;AkB72ED;EJthBE,mBAAA;EACA,oBAAA;Cds4FD;AkB10EC;EAyBF;IAnCM,kBAAA;IACA,iBAAA;IACA,iBAAA;GlBw1EH;CACF;AkBx3ED;EAwCI,YAAA;ClBm1EH;AkBr0EC;EAUF;IAdQ,kBAAA;IACA,gBAAA;GlB60EL;CACF;AkBn0EC;EAEF;IANQ,iBAAA;IACA,gBAAA;GlB20EL;CACF;AoBp6FD;EACE,sBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,+BAAA;MAAA,2BAAA;EACA,gBAAA;EACA,uBAAA;EACA,8BAAA;EACA,oBAAA;EC0CA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,mBAAA;EhB+JA,0BAAA;EACG,uBAAA;EACC,sBAAA;EACI,kBAAA;CL+tFT;AoBv6FG;;;;;;EdnBF,2CAAA;EACA,qBAAA;CNk8FD;AoB16FC;;;EAGE,YAAA;EACA,sBAAA;CpB46FH;AoBz6FC;;EAEE,WAAA;EACA,uBAAA;Ef2BF,yDAAA;EACQ,iDAAA;CLi5FT;AoBz6FC;;;EAGE,oBAAA;EE7CF,cAAA;EAGA,0BAAA;EjB8DA,yBAAA;EACQ,iBAAA;CL05FT;AoBz6FG;;EAEE,qBAAA;CpB26FL;AoBl6FD;EC3DE,YAAA;EACA,uBAAA;EACA,mBAAA;CrBg+FD;AqB99FC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBs+FT;AqBn+FC;;;EAGE,uBAAA;CrBq+FH;AqBh+FG;;;;;;;;;EAGE,uBAAA;EACI,mBAAA;CrBw+FT;AoBv9FD;ECZI,YAAA;EACA,uBAAA;CrBs+FH;AoBx9FD;EC9DE,YAAA;EACA,0BAAA;EACA,sBAAA;CrByhGD;AqBvhGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB+hGT;AqB5hGC;;;EAGE,uBAAA;CrB8hGH;AqBzhGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBiiGT;AoB7gGD;ECfI,eAAA;EACA,uBAAA;CrB+hGH;AoB7gGD;EClEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBklGD;AqBhlGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBwlGT;AqBrlGC;;;EAGE,uBAAA;CrBulGH;AqBllGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB0lGT;AoBlkGD;ECnBI,eAAA;EACA,uBAAA;CrBwlGH;AoBlkGD;ECtEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB2oGD;AqBzoGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBipGT;AqB9oGC;;;EAGE,uBAAA;CrBgpGH;AqB3oGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBmpGT;AoBvnGD;ECvBI,eAAA;EACA,uBAAA;CrBipGH;AoBvnGD;EC1EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBosGD;AqBlsGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB0sGT;AqBvsGC;;;EAGE,uBAAA;CrBysGH;AqBpsGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB4sGT;AoB5qGD;EC3BI,eAAA;EACA,uBAAA;CrB0sGH;AoB5qGD;EC9EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB6vGD;AqB3vGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBmwGT;AqBhwGC;;;EAGE,uBAAA;CrBkwGH;AqB7vGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBqwGT;AoBjuGD;EC/BI,eAAA;EACA,uBAAA;CrBmwGH;AoB5tGD;EACE,eAAA;EACA,oBAAA;EACA,iBAAA;CpB8tGD;AoB5tGC;;;;;EAKE,8BAAA;EfnCF,yBAAA;EACQ,iBAAA;CLkwGT;AoB7tGC;;;;EAIE,0BAAA;CpB+tGH;AoB7tGC;;EAEE,eAAA;EACA,2BAAA;EACA,8BAAA;CpB+tGH;AoB3tGG;;;;EAEE,eAAA;EACA,sBAAA;CpB+tGL;AoBttGD;;ECxEE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CrBkyGD;AoBztGD;;EC5EE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrByyGD;AoB5tGD;;EChFE,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrBgzGD;AoB3tGD;EACE,eAAA;EACA,YAAA;CpB6tGD;AoBztGD;EACE,gBAAA;CpB2tGD;AoBptGC;;;EACE,YAAA;CpBwtGH;AuBl3GD;EACE,WAAA;ElBoLA,yCAAA;EACK,oCAAA;EACG,iCAAA;CLisGT;AuBr3GC;EACE,WAAA;CvBu3GH;AuBn3GD;EACE,cAAA;CvBq3GD;AuBn3GC;EAAY,eAAA;CvBs3Gb;AuBr3GC;EAAY,mBAAA;CvBw3Gb;AuBv3GC;EAAY,yBAAA;CvB03Gb;AuBv3GD;EACE,mBAAA;EACA,UAAA;EACA,iBAAA;ElBuKA,gDAAA;EACQ,2CAAA;KAAA,wCAAA;EAOR,mCAAA;EACQ,8BAAA;KAAA,2BAAA;EAGR,yCAAA;EACQ,oCAAA;KAAA,iCAAA;CL2sGT;AwBr5GD;EACE,sBAAA;EACA,SAAA;EACA,UAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,yBAAA;EACA,oCAAA;EACA,mCAAA;CxBu5GD;AwBn5GD;;EAEE,mBAAA;CxBq5GD;AwBj5GD;EACE,WAAA;CxBm5GD;AwB/4GD;EACE,mBAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,sCAAA;EACA,mBAAA;EnBsBA,oDAAA;EACQ,4CAAA;EmBrBR,qCAAA;UAAA,6BAAA;CxBk5GD;AwB74GC;EACE,SAAA;EACA,WAAA;CxB+4GH;AwBx6GD;ECzBE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBo8GD;AwB96GD;EAmCI,eAAA;EACA,kBAAA;EACA,YAAA;EACA,oBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxB84GH;AwBx4GC;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CxB04GH;AwBp4GC;;;EAGE,YAAA;EACA,sBAAA;EACA,WAAA;EACA,0BAAA;CxBs4GH;AwB73GC;;;EAGE,eAAA;CxB+3GH;AwB33GC;;EAEE,sBAAA;EACA,8BAAA;EACA,uBAAA;EE3GF,oEAAA;EF6GE,oBAAA;CxB63GH;AwBx3GD;EAGI,eAAA;CxBw3GH;AwB33GD;EAQI,WAAA;CxBs3GH;AwB92GD;EACE,WAAA;EACA,SAAA;CxBg3GD;AwBx2GD;EACE,QAAA;EACA,YAAA;CxB02GD;AwBt2GD;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxBw2GD;AwBp2GD;EACE,gBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;CxBs2GD;AwBl2GD;EACE,SAAA;EACA,WAAA;CxBo2GD;AwB51GD;;EAII,cAAA;EACA,0BAAA;EACA,4BAAA;EACA,YAAA;CxB41GH;AwBn2GD;;EAWI,UAAA;EACA,aAAA;EACA,mBAAA;CxB41GH;AwBv0GD;EAXE;IApEA,WAAA;IACA,SAAA;GxB05GC;EwBv1GD;IA1DA,QAAA;IACA,YAAA;GxBo5GC;CACF;A2BpiHD;;EAEE,mBAAA;EACA,sBAAA;EACA,uBAAA;C3BsiHD;A2B1iHD;;EAMI,mBAAA;EACA,YAAA;C3BwiHH;A2BtiHG;;;;;;;;EAIE,WAAA;C3B4iHL;A2BtiHD;;;;EAKI,kBAAA;C3BuiHH;A2BliHD;EACE,kBAAA;C3BoiHD;A2BriHD;;;EAOI,YAAA;C3BmiHH;A2B1iHD;;;EAYI,iBAAA;C3BmiHH;A2B/hHD;EACE,iBAAA;C3BiiHD;A2B7hHD;EACE,eAAA;C3B+hHD;A2B9hHC;EClDA,8BAAA;EACG,2BAAA;C5BmlHJ;A2B7hHD;;EC/CE,6BAAA;EACG,0BAAA;C5BglHJ;A2B5hHD;EACE,YAAA;C3B8hHD;A2B5hHD;EACE,iBAAA;C3B8hHD;A2B5hHD;;ECnEE,8BAAA;EACG,2BAAA;C5BmmHJ;A2B3hHD;ECjEE,6BAAA;EACG,0BAAA;C5B+lHJ;A2B1hHD;;EAEE,WAAA;C3B4hHD;A2B3gHD;EACE,kBAAA;EACA,mBAAA;C3B6gHD;A2B3gHD;EACE,mBAAA;EACA,oBAAA;C3B6gHD;A2BxgHD;EtB/CE,yDAAA;EACQ,iDAAA;CL0jHT;A2BxgHC;EtBnDA,yBAAA;EACQ,iBAAA;CL8jHT;A2BrgHD;EACE,eAAA;C3BugHD;A2BpgHD;EACE,wBAAA;EACA,uBAAA;C3BsgHD;A2BngHD;EACE,wBAAA;C3BqgHD;A2B9/GD;;;EAII,eAAA;EACA,YAAA;EACA,YAAA;EACA,gBAAA;C3B+/GH;A2BtgHD;EAcM,YAAA;C3B2/GL;A2BzgHD;;;;EAsBI,iBAAA;EACA,eAAA;C3By/GH;A2Bp/GC;EACE,iBAAA;C3Bs/GH;A2Bp/GC;EC3KA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5B4pHF;A2Bt/GC;EC/KA,2BAAA;EACC,0BAAA;EAOD,gCAAA;EACC,+BAAA;C5BkqHF;A2Bv/GD;EACE,iBAAA;C3By/GD;A2Bv/GD;;EC/KE,8BAAA;EACC,6BAAA;C5B0qHF;A2Bt/GD;EC7LE,2BAAA;EACC,0BAAA;C5BsrHF;A2Bl/GD;EACE,eAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;C3Bo/GD;A2Bx/GD;;EAOI,YAAA;EACA,oBAAA;EACA,UAAA;C3Bq/GH;A2B9/GD;EAYI,YAAA;C3Bq/GH;A2BjgHD;EAgBI,WAAA;C3Bo/GH;A2Bn+GD;;;;EAKM,mBAAA;EACA,uBAAA;EACA,qBAAA;C3Bo+GL;A6B9sHD;EACE,mBAAA;EACA,eAAA;EACA,0BAAA;C7BgtHD;A6B7sHC;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;C7B+sHH;A6BxtHD;EAeI,mBAAA;EACA,WAAA;EAKA,YAAA;EAEA,YAAA;EACA,iBAAA;C7BusHH;A6BrsHG;EACE,WAAA;C7BusHL;A6B7rHD;;;EV0BE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBwqHD;AmBtqHC;;;EACE,aAAA;EACA,kBAAA;CnB0qHH;AmBvqHC;;;;;;EAEE,aAAA;CnB6qHH;A6B/sHD;;;EVqBE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnB+rHD;AmB7rHC;;;EACE,aAAA;EACA,kBAAA;CnBisHH;AmB9rHC;;;;;;EAEE,aAAA;CnBosHH;A6B7tHD;;;EAGE,oBAAA;C7B+tHD;A6B7tHC;;;EACE,iBAAA;C7BiuHH;A6B7tHD;;EAEE,UAAA;EACA,oBAAA;EACA,uBAAA;C7B+tHD;A6B1tHD;EACE,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;C7B4tHD;A6BztHC;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;C7B2tHH;A6BztHC;EACE,mBAAA;EACA,gBAAA;EACA,mBAAA;C7B2tHH;A6B/uHD;;EA0BI,cAAA;C7BytHH;A6BptHD;;;;;;;EDpGE,8BAAA;EACG,2BAAA;C5Bi0HJ;A6BrtHD;EACE,gBAAA;C7ButHD;A6BrtHD;;;;;;;EDxGE,6BAAA;EACG,0BAAA;C5Bs0HJ;A6BttHD;EACE,eAAA;C7BwtHD;A6BntHD;EACE,mBAAA;EAGA,aAAA;EACA,oBAAA;C7BmtHD;A6BxtHD;EAUI,mBAAA;C7BitHH;A6B3tHD;EAYM,kBAAA;C7BktHL;A6B/sHG;;;EAGE,WAAA;C7BitHL;A6B5sHC;;EAGI,mBAAA;C7B6sHL;A6B1sHC;;EAGI,WAAA;EACA,kBAAA;C7B2sHL;A8B12HD;EACE,iBAAA;EACA,gBAAA;EACA,iBAAA;C9B42HD;A8B/2HD;EAOI,mBAAA;EACA,eAAA;C9B22HH;A8Bn3HD;EAWM,mBAAA;EACA,eAAA;EACA,mBAAA;C9B22HL;A8B12HK;;EAEE,sBAAA;EACA,0BAAA;C9B42HP;A8Bv2HG;EACE,eAAA;C9By2HL;A8Bv2HK;;EAEE,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,oBAAA;C9By2HP;A8Bl2HG;;;EAGE,0BAAA;EACA,sBAAA;C9Bo2HL;A8B74HD;ELHE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBm5HD;A8Bn5HD;EA0DI,gBAAA;C9B41HH;A8Bn1HD;EACE,8BAAA;C9Bq1HD;A8Bt1HD;EAGI,YAAA;EAEA,oBAAA;C9Bq1HH;A8B11HD;EASM,kBAAA;EACA,wBAAA;EACA,8BAAA;EACA,2BAAA;C9Bo1HL;A8Bn1HK;EACE,mCAAA;C9Bq1HP;A8B/0HK;;;EAGE,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,iCAAA;EACA,gBAAA;C9Bi1HP;A8B50HC;EAqDA,YAAA;EA8BA,iBAAA;C9B6vHD;A8Bh1HC;EAwDE,YAAA;C9B2xHH;A8Bn1HC;EA0DI,mBAAA;EACA,mBAAA;C9B4xHL;A8Bv1HC;EAgEE,UAAA;EACA,WAAA;C9B0xHH;A8B9wHD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9ByxHH;E8BztHH;IA9DQ,iBAAA;G9B0xHL;CACF;A8Bp2HC;EAuFE,gBAAA;EACA,mBAAA;C9BgxHH;A8Bx2HC;;;EA8FE,uBAAA;C9B+wHH;A8BjwHD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9B8wHH;E8B3uHH;;;IA9BM,0BAAA;G9B8wHH;CACF;A8B/2HD;EAEI,YAAA;C9Bg3HH;A8Bl3HD;EAMM,mBAAA;C9B+2HL;A8Br3HD;EASM,iBAAA;C9B+2HL;A8B12HK;;;EAGE,YAAA;EACA,0BAAA;C9B42HP;A8Bp2HD;EAEI,YAAA;C9Bq2HH;A8Bv2HD;EAIM,gBAAA;EACA,eAAA;C9Bs2HL;A8B11HD;EACE,YAAA;C9B41HD;A8B71HD;EAII,YAAA;C9B41HH;A8Bh2HD;EAMM,mBAAA;EACA,mBAAA;C9B61HL;A8Bp2HD;EAYI,UAAA;EACA,WAAA;C9B21HH;A8B/0HD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9B01HH;E8B1xHH;IA9DQ,iBAAA;G9B21HL;CACF;A8Bn1HD;EACE,iBAAA;C9Bq1HD;A8Bt1HD;EAKI,gBAAA;EACA,mBAAA;C9Bo1HH;A8B11HD;;;EAYI,uBAAA;C9Bm1HH;A8Br0HD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9Bk1HH;E8B/yHH;;;IA9BM,0BAAA;G9Bk1HH;CACF;A8Bz0HD;EAEI,cAAA;C9B00HH;A8B50HD;EAKI,eAAA;C9B00HH;A8Bj0HD;EAEE,iBAAA;EF3OA,2BAAA;EACC,0BAAA;C5B8iIF;A+BxiID;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,8BAAA;C/B0iID;A+BliID;EA8nBA;IAhoBI,mBAAA;G/BwiID;CACF;A+BzhID;EAgnBA;IAlnBI,YAAA;G/B+hID;CACF;A+BjhID;EACE,oBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,2DAAA;UAAA,mDAAA;EAEA,kCAAA;C/BkhID;A+BhhIC;EACE,iBAAA;C/BkhIH;A+Bt/HD;EA6jBA;IArlBI,YAAA;IACA,cAAA;IACA,yBAAA;YAAA,iBAAA;G/BkhID;E+BhhIC;IACE,0BAAA;IACA,wBAAA;IACA,kBAAA;IACA,6BAAA;G/BkhIH;E+B/gIC;IACE,oBAAA;G/BihIH;E+B5gIC;;;IAGE,gBAAA;IACA,iBAAA;G/B8gIH;CACF;A+B1gID;;EAGI,kBAAA;C/B2gIH;A+BtgIC;EAmjBF;;IArjBM,kBAAA;G/B6gIH;CACF;A+BpgID;;;;EAII,oBAAA;EACA,mBAAA;C/BsgIH;A+BhgIC;EAgiBF;;;;IAniBM,gBAAA;IACA,eAAA;G/B0gIH;CACF;A+B9/HD;EACE,cAAA;EACA,sBAAA;C/BggID;A+B3/HD;EA8gBA;IAhhBI,iBAAA;G/BigID;CACF;A+B7/HD;;EAEE,gBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;C/B+/HD;A+Bz/HD;EAggBA;;IAlgBI,iBAAA;G/BggID;CACF;A+B9/HD;EACE,OAAA;EACA,sBAAA;C/BggID;A+B9/HD;EACE,UAAA;EACA,iBAAA;EACA,sBAAA;C/BggID;A+B1/HD;EACE,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;C/B4/HD;A+B1/HC;;EAEE,sBAAA;C/B4/HH;A+BrgID;EAaI,eAAA;C/B2/HH;A+Bl/HD;EALI;;IAEE,mBAAA;G/B0/HH;CACF;A+Bh/HD;EACE,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EC9LA,gBAAA;EACA,mBAAA;ED+LA,8BAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;C/Bm/HD;A+B/+HC;EACE,WAAA;C/Bi/HH;A+B//HD;EAmBI,eAAA;EACA,YAAA;EACA,YAAA;EACA,mBAAA;C/B++HH;A+BrgID;EAyBI,gBAAA;C/B++HH;A+Bz+HD;EAqbA;IAvbI,cAAA;G/B++HD;CACF;A+Bt+HD;EACE,oBAAA;C/Bw+HD;A+Bz+HD;EAII,kBAAA;EACA,qBAAA;EACA,kBAAA;C/Bw+HH;A+B58HC;EA2YF;IAjaM,iBAAA;IACA,YAAA;IACA,YAAA;IACA,cAAA;IACA,8BAAA;IACA,UAAA;IACA,yBAAA;YAAA,iBAAA;G/Bs+HH;E+B3kHH;;IAxZQ,2BAAA;G/Bu+HL;E+B/kHH;IArZQ,kBAAA;G/Bu+HL;E+Bt+HK;;IAEE,uBAAA;G/Bw+HP;CACF;A+Bt9HD;EA+XA;IA1YI,YAAA;IACA,UAAA;G/Bq+HD;E+B5lHH;IAtYM,YAAA;G/Bq+HH;E+B/lHH;IApYQ,kBAAA;IACA,qBAAA;G/Bs+HL;CACF;A+B39HD;EACE,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,qCAAA;E1B9NA,6FAAA;EACQ,qFAAA;E2B/DR,gBAAA;EACA,mBAAA;ChC4vID;AkBtuHD;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlBwyHH;EkBpqHH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBsyHH;EkBzqHH;IAxHM,sBAAA;GlBoyHH;EkB5qHH;IApHM,sBAAA;IACA,uBAAA;GlBmyHH;EkBhrHH;;;IA9GQ,YAAA;GlBmyHL;EkBrrHH;IAxGM,YAAA;GlBgyHH;EkBxrHH;IApGM,iBAAA;IACA,uBAAA;GlB+xHH;EkB5rHH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB4xHH;EkBnsHH;;IAtFQ,gBAAA;GlB6xHL;EkBvsHH;;IAjFM,mBAAA;IACA,eAAA;GlB4xHH;EkB5sHH;IA3EM,OAAA;GlB0xHH;CACF;A+BpgIC;EAmWF;IAzWM,mBAAA;G/B8gIH;E+B5gIG;IACE,iBAAA;G/B8gIL;CACF;A+B7/HD;EAoVA;IA5VI,YAAA;IACA,UAAA;IACA,eAAA;IACA,gBAAA;IACA,eAAA;IACA,kBAAA;I1BzPF,yBAAA;IACQ,iBAAA;GLmwIP;CACF;A+BngID;EACE,cAAA;EHpUA,2BAAA;EACC,0BAAA;C5B00IF;A+BngID;EACE,iBAAA;EHzUA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5By0IF;A+B//HD;EChVE,gBAAA;EACA,mBAAA;ChCk1ID;A+BhgIC;ECnVA,iBAAA;EACA,oBAAA;ChCs1ID;A+BjgIC;ECtVA,iBAAA;EACA,oBAAA;ChC01ID;A+B3/HD;EChWE,iBAAA;EACA,oBAAA;ChC81ID;A+Bv/HD;EAsSA;IA1SI,YAAA;IACA,kBAAA;IACA,mBAAA;G/B+/HD;CACF;A+Bl+HD;EAhBE;IExWA,uBAAA;GjC81IC;E+Br/HD;IE5WA,wBAAA;IF8WE,oBAAA;G/Bu/HD;E+Bz/HD;IAKI,gBAAA;G/Bu/HH;CACF;A+B9+HD;EACE,0BAAA;EACA,sBAAA;C/Bg/HD;A+Bl/HD;EAKI,YAAA;C/Bg/HH;A+B/+HG;;EAEE,eAAA;EACA,8BAAA;C/Bi/HL;A+B1/HD;EAcI,YAAA;C/B++HH;A+B7/HD;EAmBM,YAAA;C/B6+HL;A+B3+HK;;EAEE,YAAA;EACA,8BAAA;C/B6+HP;A+Bz+HK;;;EAGE,YAAA;EACA,0BAAA;C/B2+HP;A+Bv+HK;;;EAGE,YAAA;EACA,8BAAA;C/By+HP;A+BjhID;EA8CI,mBAAA;C/Bs+HH;A+Br+HG;;EAEE,uBAAA;C/Bu+HL;A+BxhID;EAoDM,uBAAA;C/Bu+HL;A+B3hID;;EA0DI,sBAAA;C/Bq+HH;A+B99HK;;;EAGE,0BAAA;EACA,YAAA;C/Bg+HP;A+B/7HC;EAoKF;IA7LU,YAAA;G/B49HP;E+B39HO;;IAEE,YAAA;IACA,8BAAA;G/B69HT;E+Bz9HO;;;IAGE,YAAA;IACA,0BAAA;G/B29HT;E+Bv9HO;;;IAGE,YAAA;IACA,8BAAA;G/By9HT;CACF;A+B3jID;EA8GI,YAAA;C/Bg9HH;A+B/8HG;EACE,YAAA;C/Bi9HL;A+BjkID;EAqHI,YAAA;C/B+8HH;A+B98HG;;EAEE,YAAA;C/Bg9HL;A+B58HK;;;;EAEE,YAAA;C/Bg9HP;A+Bx8HD;EACE,uBAAA;EACA,sBAAA;C/B08HD;A+B58HD;EAKI,eAAA;C/B08HH;A+Bz8HG;;EAEE,YAAA;EACA,8BAAA;C/B28HL;A+Bp9HD;EAcI,eAAA;C/By8HH;A+Bv9HD;EAmBM,eAAA;C/Bu8HL;A+Br8HK;;EAEE,YAAA;EACA,8BAAA;C/Bu8HP;A+Bn8HK;;;EAGE,YAAA;EACA,0BAAA;C/Bq8HP;A+Bj8HK;;;EAGE,YAAA;EACA,8BAAA;C/Bm8HP;A+B3+HD;EA+CI,mBAAA;C/B+7HH;A+B97HG;;EAEE,uBAAA;C/Bg8HL;A+Bl/HD;EAqDM,uBAAA;C/Bg8HL;A+Br/HD;;EA2DI,sBAAA;C/B87HH;A+Bx7HK;;;EAGE,0BAAA;EACA,YAAA;C/B07HP;A+Bn5HC;EAwBF;IAvDU,sBAAA;G/Bs7HP;E+B/3HH;IApDU,0BAAA;G/Bs7HP;E+Bl4HH;IAjDU,eAAA;G/Bs7HP;E+Br7HO;;IAEE,YAAA;IACA,8BAAA;G/Bu7HT;E+Bn7HO;;;IAGE,YAAA;IACA,0BAAA;G/Bq7HT;E+Bj7HO;;;IAGE,YAAA;IACA,8BAAA;G/Bm7HT;CACF;A+B3hID;EA+GI,eAAA;C/B+6HH;A+B96HG;EACE,YAAA;C/Bg7HL;A+BjiID;EAsHI,eAAA;C/B86HH;A+B76HG;;EAEE,YAAA;C/B+6HL;A+B36HK;;;;EAEE,YAAA;C/B+6HP;AkCzjJD;EACE,kBAAA;EACA,oBAAA;EACA,iBAAA;EACA,0BAAA;EACA,mBAAA;ClC2jJD;AkChkJD;EAQI,sBAAA;ClC2jJH;AkCnkJD;EAWM,kBAAA;EACA,eAAA;EACA,YAAA;ClC2jJL;AkCxkJD;EAkBI,eAAA;ClCyjJH;AmC7kJD;EACE,sBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;CnC+kJD;AmCnlJD;EAOI,gBAAA;CnC+kJH;AmCtlJD;;EAUM,mBAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,sBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,kBAAA;CnCglJL;AmC9kJG;;EAGI,eAAA;EPXN,+BAAA;EACG,4BAAA;C5B2lJJ;AmC7kJG;;EPvBF,gCAAA;EACG,6BAAA;C5BwmJJ;AmCxkJG;;;;EAEE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CnC4kJL;AmCtkJG;;;;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;EACA,gBAAA;CnC2kJL;AmCloJD;;;;;;EAkEM,eAAA;EACA,uBAAA;EACA,mBAAA;EACA,oBAAA;CnCwkJL;AmC/jJD;;EC3EM,mBAAA;EACA,gBAAA;EACA,uBAAA;CpC8oJL;AoC5oJG;;ERKF,+BAAA;EACG,4BAAA;C5B2oJJ;AoC3oJG;;ERTF,gCAAA;EACG,6BAAA;C5BwpJJ;AmC1kJD;;EChFM,kBAAA;EACA,gBAAA;EACA,iBAAA;CpC8pJL;AoC5pJG;;ERKF,+BAAA;EACG,4BAAA;C5B2pJJ;AoC3pJG;;ERTF,gCAAA;EACG,6BAAA;C5BwqJJ;AqC3qJD;EACE,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,mBAAA;CrC6qJD;AqCjrJD;EAOI,gBAAA;CrC6qJH;AqCprJD;;EAUM,sBAAA;EACA,kBAAA;EACA,uBAAA;EACA,uBAAA;EACA,oBAAA;CrC8qJL;AqC5rJD;;EAmBM,sBAAA;EACA,0BAAA;CrC6qJL;AqCjsJD;;EA2BM,aAAA;CrC0qJL;AqCrsJD;;EAkCM,YAAA;CrCuqJL;AqCzsJD;;;;EA2CM,eAAA;EACA,uBAAA;EACA,oBAAA;CrCoqJL;AsCltJD;EACE,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,mBAAA;EACA,oBAAA;EACA,yBAAA;EACA,qBAAA;CtCotJD;AsChtJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CtCktJL;AsC7sJC;EACE,cAAA;CtC+sJH;AsC3sJC;EACE,mBAAA;EACA,UAAA;CtC6sJH;AsCtsJD;ECtCE,0BAAA;CvC+uJD;AuC5uJG;;EAEE,0BAAA;CvC8uJL;AsCzsJD;EC1CE,0BAAA;CvCsvJD;AuCnvJG;;EAEE,0BAAA;CvCqvJL;AsC5sJD;EC9CE,0BAAA;CvC6vJD;AuC1vJG;;EAEE,0BAAA;CvC4vJL;AsC/sJD;EClDE,0BAAA;CvCowJD;AuCjwJG;;EAEE,0BAAA;CvCmwJL;AsCltJD;ECtDE,0BAAA;CvC2wJD;AuCxwJG;;EAEE,0BAAA;CvC0wJL;AsCrtJD;EC1DE,0BAAA;CvCkxJD;AuC/wJG;;EAEE,0BAAA;CvCixJL;AwCnxJD;EACE,sBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,mBAAA;EACA,0BAAA;EACA,oBAAA;CxCqxJD;AwClxJC;EACE,cAAA;CxCoxJH;AwChxJC;EACE,mBAAA;EACA,UAAA;CxCkxJH;AwC/wJC;;EAEE,OAAA;EACA,iBAAA;CxCixJH;AwC5wJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CxC8wJL;AwCzwJC;;EAEE,eAAA;EACA,uBAAA;CxC2wJH;AwCxwJC;EACE,aAAA;CxC0wJH;AwCvwJC;EACE,kBAAA;CxCywJH;AwCtwJC;EACE,iBAAA;CxCwwJH;AyCl0JD;EACE,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,eAAA;EACA,0BAAA;CzCo0JD;AyCz0JD;;EASI,eAAA;CzCo0JH;AyC70JD;EAaI,oBAAA;EACA,gBAAA;EACA,iBAAA;CzCm0JH;AyCl1JD;EAmBI,0BAAA;CzCk0JH;AyC/zJC;;EAEE,mBAAA;EACA,mBAAA;EACA,oBAAA;CzCi0JH;AyC31JD;EA8BI,gBAAA;CzCg0JH;AyC9yJD;EACA;IAfI,kBAAA;IACA,qBAAA;GzCg0JD;EyC9zJC;;IAEE,mBAAA;IACA,oBAAA;GzCg0JH;EyCvzJH;;IAJM,gBAAA;GzC+zJH;CACF;A0C52JD;EACE,eAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;ErCiLA,4CAAA;EACK,uCAAA;EACG,oCAAA;CL8rJT;A0Cx3JD;;EAaI,kBAAA;EACA,mBAAA;C1C+2JH;A0C32JC;;;EAGE,sBAAA;C1C62JH;A0Cl4JD;EA0BI,aAAA;EACA,eAAA;C1C22JH;A2Cp4JD;EACE,cAAA;EACA,oBAAA;EACA,8BAAA;EACA,mBAAA;C3Cs4JD;A2C14JD;EAQI,cAAA;EAEA,eAAA;C3Co4JH;A2C94JD;EAeI,kBAAA;C3Ck4JH;A2Cj5JD;;EAqBI,iBAAA;C3Cg4JH;A2Cr5JD;EAyBI,gBAAA;C3C+3JH;A2Cv3JD;;EAEE,oBAAA;C3Cy3JD;A2C33JD;;EAMI,mBAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;C3Cy3JH;A2Cj3JD;ECvDE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C26JD;A2Ct3JD;EClDI,0BAAA;C5C26JH;A2Cz3JD;EC/CI,eAAA;C5C26JH;A2Cx3JD;EC3DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Cs7JD;A2C73JD;ECtDI,0BAAA;C5Cs7JH;A2Ch4JD;ECnDI,eAAA;C5Cs7JH;A2C/3JD;EC/DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Ci8JD;A2Cp4JD;EC1DI,0BAAA;C5Ci8JH;A2Cv4JD;ECvDI,eAAA;C5Ci8JH;A2Ct4JD;ECnEE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C48JD;A2C34JD;EC9DI,0BAAA;C5C48JH;A2C94JD;EC3DI,eAAA;C5C48JH;A6C98JD;EACE;IAAQ,4BAAA;G7Ci9JP;E6Ch9JD;IAAQ,yBAAA;G7Cm9JP;CACF;A6Ch9JD;EACE;IAAQ,4BAAA;G7Cm9JP;E6Cl9JD;IAAQ,yBAAA;G7Cq9JP;CACF;A6Cx9JD;EACE;IAAQ,4BAAA;G7Cm9JP;E6Cl9JD;IAAQ,yBAAA;G7Cq9JP;CACF;A6C98JD;EACE,iBAAA;EACA,aAAA;EACA,oBAAA;EACA,0BAAA;EACA,mBAAA;ExCsCA,uDAAA;EACQ,+CAAA;CL26JT;A6C78JD;EACE,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,mBAAA;EACA,0BAAA;ExCyBA,uDAAA;EACQ,+CAAA;EAyHR,oCAAA;EACK,+BAAA;EACG,4BAAA;CL+zJT;A6C18JD;;ECCI,8MAAA;EACA,yMAAA;EACA,sMAAA;EDAF,mCAAA;UAAA,2BAAA;C7C88JD;A6Cv8JD;;ExC5CE,2DAAA;EACK,sDAAA;EACG,mDAAA;CLu/JT;A6Cp8JD;EErEE,0BAAA;C/C4gKD;A+CzgKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C49JH;A6Cx8JD;EEzEE,0BAAA;C/CohKD;A+CjhKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Co+JH;A6C58JD;EE7EE,0BAAA;C/C4hKD;A+CzhKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C4+JH;A6Ch9JD;EEjFE,0BAAA;C/CoiKD;A+CjiKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Co/JH;AgD5iKD;EAEE,iBAAA;ChD6iKD;AgD3iKC;EACE,cAAA;ChD6iKH;AgDziKD;;EAEE,QAAA;EACA,iBAAA;ChD2iKD;AgDxiKD;EACE,eAAA;ChD0iKD;AgDviKD;EACE,eAAA;ChDyiKD;AgDtiKC;EACE,gBAAA;ChDwiKH;AgDpiKD;;EAEE,mBAAA;ChDsiKD;AgDniKD;;EAEE,oBAAA;ChDqiKD;AgDliKD;;;EAGE,oBAAA;EACA,oBAAA;ChDoiKD;AgDjiKD;EACE,uBAAA;ChDmiKD;AgDhiKD;EACE,uBAAA;ChDkiKD;AgD9hKD;EACE,cAAA;EACA,mBAAA;ChDgiKD;AgD1hKD;EACE,gBAAA;EACA,iBAAA;ChD4hKD;AiDnlKD;EAEE,oBAAA;EACA,gBAAA;CjDolKD;AiD5kKD;EACE,mBAAA;EACA,eAAA;EACA,mBAAA;EAEA,oBAAA;EACA,uBAAA;EACA,uBAAA;CjD6kKD;AiD1kKC;ErB3BA,6BAAA;EACC,4BAAA;C5BwmKF;AiD3kKC;EACE,iBAAA;ErBvBF,gCAAA;EACC,+BAAA;C5BqmKF;AiDpkKD;;EAEE,YAAA;CjDskKD;AiDxkKD;;EAKI,YAAA;CjDukKH;AiDnkKC;;;;EAEE,sBAAA;EACA,YAAA;EACA,0BAAA;CjDukKH;AiDnkKD;EACE,YAAA;EACA,iBAAA;CjDqkKD;AiDhkKC;;;EAGE,0BAAA;EACA,eAAA;EACA,oBAAA;CjDkkKH;AiDvkKC;;;EASI,eAAA;CjDmkKL;AiD5kKC;;;EAYI,eAAA;CjDqkKL;AiDhkKC;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;CjDkkKH;AiDxkKC;;;;;;;;;EAYI,eAAA;CjDukKL;AiDnlKC;;;EAeI,eAAA;CjDykKL;AkD3qKC;EACE,eAAA;EACA,0BAAA;ClD6qKH;AkD3qKG;;EAEE,eAAA;ClD6qKL;AkD/qKG;;EAKI,eAAA;ClD8qKP;AkD3qKK;;;;EAEE,eAAA;EACA,0BAAA;ClD+qKP;AkD7qKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDkrKP;AkDxsKC;EACE,eAAA;EACA,0BAAA;ClD0sKH;AkDxsKG;;EAEE,eAAA;ClD0sKL;AkD5sKG;;EAKI,eAAA;ClD2sKP;AkDxsKK;;;;EAEE,eAAA;EACA,0BAAA;ClD4sKP;AkD1sKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD+sKP;AkDruKC;EACE,eAAA;EACA,0BAAA;ClDuuKH;AkDruKG;;EAEE,eAAA;ClDuuKL;AkDzuKG;;EAKI,eAAA;ClDwuKP;AkDruKK;;;;EAEE,eAAA;EACA,0BAAA;ClDyuKP;AkDvuKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD4uKP;AkDlwKC;EACE,eAAA;EACA,0BAAA;ClDowKH;AkDlwKG;;EAEE,eAAA;ClDowKL;AkDtwKG;;EAKI,eAAA;ClDqwKP;AkDlwKK;;;;EAEE,eAAA;EACA,0BAAA;ClDswKP;AkDpwKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDywKP;AiDxqKD;EACE,cAAA;EACA,mBAAA;CjD0qKD;AiDxqKD;EACE,iBAAA;EACA,iBAAA;CjD0qKD;AmDpyKD;EACE,oBAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;E9C0DA,kDAAA;EACQ,0CAAA;CL6uKT;AmDnyKD;EACE,cAAA;CnDqyKD;AmDhyKD;EACE,mBAAA;EACA,qCAAA;EvBpBA,6BAAA;EACC,4BAAA;C5BuzKF;AmDtyKD;EAMI,eAAA;CnDmyKH;AmD9xKD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;CnDgyKD;AmDpyKD;;;;;EAWI,eAAA;CnDgyKH;AmD3xKD;EACE,mBAAA;EACA,0BAAA;EACA,2BAAA;EvBxCA,gCAAA;EACC,+BAAA;C5Bs0KF;AmDrxKD;;EAGI,iBAAA;CnDsxKH;AmDzxKD;;EAMM,oBAAA;EACA,iBAAA;CnDuxKL;AmDnxKG;;EAEI,cAAA;EvBvEN,6BAAA;EACC,4BAAA;C5B61KF;AmDjxKG;;EAEI,iBAAA;EvBvEN,gCAAA;EACC,+BAAA;C5B21KF;AmD1yKD;EvB1DE,2BAAA;EACC,0BAAA;C5Bu2KF;AmD7wKD;EAEI,oBAAA;CnD8wKH;AmD3wKD;EACE,oBAAA;CnD6wKD;AmDrwKD;;;EAII,iBAAA;CnDswKH;AmD1wKD;;;EAOM,mBAAA;EACA,oBAAA;CnDwwKL;AmDhxKD;;EvBzGE,6BAAA;EACC,4BAAA;C5B63KF;AmDrxKD;;;;EAmBQ,4BAAA;EACA,6BAAA;CnDwwKP;AmD5xKD;;;;;;;;EAwBU,4BAAA;CnD8wKT;AmDtyKD;;;;;;;;EA4BU,6BAAA;CnDoxKT;AmDhzKD;;EvBjGE,gCAAA;EACC,+BAAA;C5Bq5KF;AmDrzKD;;;;EAyCQ,+BAAA;EACA,gCAAA;CnDkxKP;AmD5zKD;;;;;;;;EA8CU,+BAAA;CnDwxKT;AmDt0KD;;;;;;;;EAkDU,gCAAA;CnD8xKT;AmDh1KD;;;;EA2DI,2BAAA;CnD2xKH;AmDt1KD;;EA+DI,cAAA;CnD2xKH;AmD11KD;;EAmEI,UAAA;CnD2xKH;AmD91KD;;;;;;;;;;;;EA0EU,eAAA;CnDkyKT;AmD52KD;;;;;;;;;;;;EA8EU,gBAAA;CnD4yKT;AmD13KD;;;;;;;;EAuFU,iBAAA;CnD6yKT;AmDp4KD;;;;;;;;EAgGU,iBAAA;CnD8yKT;AmD94KD;EAsGI,UAAA;EACA,iBAAA;CnD2yKH;AmDjyKD;EACE,oBAAA;CnDmyKD;AmDpyKD;EAKI,iBAAA;EACA,mBAAA;CnDkyKH;AmDxyKD;EASM,gBAAA;CnDkyKL;AmD3yKD;EAcI,iBAAA;CnDgyKH;AmD9yKD;;EAkBM,2BAAA;CnDgyKL;AmDlzKD;EAuBI,cAAA;CnD8xKH;AmDrzKD;EAyBM,8BAAA;CnD+xKL;AmDxxKD;EC1PE,mBAAA;CpDqhLD;AoDnhLC;EACE,eAAA;EACA,0BAAA;EACA,mBAAA;CpDqhLH;AoDxhLC;EAMI,uBAAA;CpDqhLL;AoD3hLC;EASI,eAAA;EACA,0BAAA;CpDqhLL;AoDlhLC;EAEI,0BAAA;CpDmhLL;AmDvyKD;EC7PE,sBAAA;CpDuiLD;AoDriLC;EACE,YAAA;EACA,0BAAA;EACA,sBAAA;CpDuiLH;AoD1iLC;EAMI,0BAAA;CpDuiLL;AoD7iLC;EASI,eAAA;EACA,uBAAA;CpDuiLL;AoDpiLC;EAEI,6BAAA;CpDqiLL;AmDtzKD;EChQE,sBAAA;CpDyjLD;AoDvjLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDyjLH;AoD5jLC;EAMI,0BAAA;CpDyjLL;AoD/jLC;EASI,eAAA;EACA,0BAAA;CpDyjLL;AoDtjLC;EAEI,6BAAA;CpDujLL;AmDr0KD;ECnQE,sBAAA;CpD2kLD;AoDzkLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD2kLH;AoD9kLC;EAMI,0BAAA;CpD2kLL;AoDjlLC;EASI,eAAA;EACA,0BAAA;CpD2kLL;AoDxkLC;EAEI,6BAAA;CpDykLL;AmDp1KD;ECtQE,sBAAA;CpD6lLD;AoD3lLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD6lLH;AoDhmLC;EAMI,0BAAA;CpD6lLL;AoDnmLC;EASI,eAAA;EACA,0BAAA;CpD6lLL;AoD1lLC;EAEI,6BAAA;CpD2lLL;AmDn2KD;ECzQE,sBAAA;CpD+mLD;AoD7mLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD+mLH;AoDlnLC;EAMI,0BAAA;CpD+mLL;AoDrnLC;EASI,eAAA;EACA,0BAAA;CpD+mLL;AoD5mLC;EAEI,6BAAA;CpD6mLL;AqD7nLD;EACE,mBAAA;EACA,eAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;CrD+nLD;AqDpoLD;;;;;EAYI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;CrD+nLH;AqD1nLD;EACE,uBAAA;CrD4nLD;AqDxnLD;EACE,oBAAA;CrD0nLD;AsDrpLD;EACE,iBAAA;EACA,cAAA;EACA,oBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EjDwDA,wDAAA;EACQ,gDAAA;CLgmLT;AsD/pLD;EASI,mBAAA;EACA,kCAAA;CtDypLH;AsDppLD;EACE,cAAA;EACA,mBAAA;CtDspLD;AsDppLD;EACE,aAAA;EACA,mBAAA;CtDspLD;AuD5qLD;EACE,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,0BAAA;EjCRA,aAAA;EAGA,0BAAA;CtBqrLD;AuD7qLC;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;EjCfF,aAAA;EAGA,0BAAA;CtB6rLD;AuDzqLC;EACE,WAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA;EACA,yBAAA;CvD2qLH;AwDhsLD;EACE,iBAAA;CxDksLD;AwD9rLD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,kCAAA;EAIA,WAAA;CxD6rLD;AwD1rLC;EnD+GA,sCAAA;EACI,kCAAA;EACC,iCAAA;EACG,8BAAA;EAkER,oDAAA;EAEK,0CAAA;EACG,oCAAA;CL6gLT;AwDhsLC;EnD2GA,mCAAA;EACI,+BAAA;EACC,8BAAA;EACG,2BAAA;CLwlLT;AwDpsLD;EACE,mBAAA;EACA,iBAAA;CxDssLD;AwDlsLD;EACE,mBAAA;EACA,YAAA;EACA,aAAA;CxDosLD;AwDhsLD;EACE,mBAAA;EACA,uBAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EnDaA,iDAAA;EACQ,yCAAA;EmDZR,qCAAA;UAAA,6BAAA;EAEA,WAAA;CxDksLD;AwD9rLD;EACE,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,uBAAA;CxDgsLD;AwD9rLC;ElCrEA,WAAA;EAGA,yBAAA;CtBowLD;AwDjsLC;ElCtEA,aAAA;EAGA,0BAAA;CtBwwLD;AwDhsLD;EACE,cAAA;EACA,iCAAA;CxDksLD;AwD9rLD;EACE,iBAAA;CxDgsLD;AwD5rLD;EACE,UAAA;EACA,wBAAA;CxD8rLD;AwDzrLD;EACE,mBAAA;EACA,cAAA;CxD2rLD;AwDvrLD;EACE,cAAA;EACA,kBAAA;EACA,8BAAA;CxDyrLD;AwD5rLD;EAQI,iBAAA;EACA,iBAAA;CxDurLH;AwDhsLD;EAaI,kBAAA;CxDsrLH;AwDnsLD;EAiBI,eAAA;CxDqrLH;AwDhrLD;EACE,mBAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;CxDkrLD;AwDhqLD;EAZE;IACE,aAAA;IACA,kBAAA;GxD+qLD;EwD7qLD;InDvEA,kDAAA;IACQ,0CAAA;GLuvLP;EwD5qLD;IAAY,aAAA;GxD+qLX;CACF;AwD1qLD;EAFE;IAAY,aAAA;GxDgrLX;CACF;AyD/zLD;EACE,mBAAA;EACA,cAAA;EACA,eAAA;ECRA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;EDHA,gBAAA;EnCVA,WAAA;EAGA,yBAAA;CtBs1LD;AyD30LC;EnCdA,aAAA;EAGA,0BAAA;CtB01LD;AyD90LC;EAAW,iBAAA;EAAmB,eAAA;CzDk1L/B;AyDj1LC;EAAW,iBAAA;EAAmB,eAAA;CzDq1L/B;AyDp1LC;EAAW,gBAAA;EAAmB,eAAA;CzDw1L/B;AyDv1LC;EAAW,kBAAA;EAAmB,eAAA;CzD21L/B;AyDv1LD;EACE,iBAAA;EACA,iBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,mBAAA;CzDy1LD;AyDr1LD;EACE,mBAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;CzDu1LD;AyDn1LC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,UAAA;EACA,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,UAAA;EACA,UAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,SAAA;EACA,QAAA;EACA,iBAAA;EACA,4BAAA;EACA,yBAAA;CzDq1LH;AyDn1LC;EACE,SAAA;EACA,SAAA;EACA,iBAAA;EACA,4BAAA;EACA,wBAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,WAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,UAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;A2Dl7LD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;EDXA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;ECAA,gBAAA;EAEA,uBAAA;EACA,qCAAA;UAAA,6BAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EtD8CA,kDAAA;EACQ,0CAAA;CLk5LT;A2D77LC;EAAY,kBAAA;C3Dg8Lb;A2D/7LC;EAAY,kBAAA;C3Dk8Lb;A2Dj8LC;EAAY,iBAAA;C3Do8Lb;A2Dn8LC;EAAY,mBAAA;C3Ds8Lb;A2Dn8LD;EACE,UAAA;EACA,kBAAA;EACA,gBAAA;EACA,0BAAA;EACA,iCAAA;EACA,2BAAA;C3Dq8LD;A2Dl8LD;EACE,kBAAA;C3Do8LD;A2D57LC;;EAEE,mBAAA;EACA,eAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;C3D87LH;A2D37LD;EACE,mBAAA;C3D67LD;A2D37LD;EACE,mBAAA;EACA,YAAA;C3D67LD;A2Dz7LC;EACE,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;EACA,sCAAA;EACA,cAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;C3D47LL;A2Dz7LC;EACE,SAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,4BAAA;EACA,wCAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,UAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;C3D47LL;A2Dz7LC;EACE,UAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,yCAAA;EACA,WAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,0BAAA;C3D47LL;A2Dx7LC;EACE,SAAA;EACA,aAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,uCAAA;C3D07LH;A2Dz7LG;EACE,aAAA;EACA,WAAA;EACA,sBAAA;EACA,wBAAA;EACA,cAAA;C3D27LL;A4DpjMD;EACE,mBAAA;C5DsjMD;A4DnjMD;EACE,mBAAA;EACA,iBAAA;EACA,YAAA;C5DqjMD;A4DxjMD;EAMI,cAAA;EACA,mBAAA;EvD6KF,0CAAA;EACK,qCAAA;EACG,kCAAA;CLy4LT;A4D/jMD;;EAcM,eAAA;C5DqjML;A4D3hMC;EA4NF;IvD3DE,uDAAA;IAEK,6CAAA;IACG,uCAAA;IA7JR,oCAAA;IAEQ,4BAAA;IA+GR,4BAAA;IAEQ,oBAAA;GL86LP;E4DzjMG;;IvDmHJ,2CAAA;IACQ,mCAAA;IuDjHF,QAAA;G5D4jML;E4D1jMG;;IvD8GJ,4CAAA;IACQ,oCAAA;IuD5GF,QAAA;G5D6jML;E4D3jMG;;;IvDyGJ,wCAAA;IACQ,gCAAA;IuDtGF,QAAA;G5D8jML;CACF;A4DpmMD;;;EA6CI,eAAA;C5D4jMH;A4DzmMD;EAiDI,QAAA;C5D2jMH;A4D5mMD;;EAsDI,mBAAA;EACA,OAAA;EACA,YAAA;C5D0jMH;A4DlnMD;EA4DI,WAAA;C5DyjMH;A4DrnMD;EA+DI,YAAA;C5DyjMH;A4DxnMD;;EAmEI,QAAA;C5DyjMH;A4D5nMD;EAuEI,YAAA;C5DwjMH;A4D/nMD;EA0EI,WAAA;C5DwjMH;A4DhjMD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EtC9FA,aAAA;EAGA,0BAAA;EsC6FA,gBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;EACA,mCAAA;C5DmjMD;A4D9iMC;EdnGE,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CopMH;A4DljMC;EACE,WAAA;EACA,SAAA;EdxGA,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9C6pMH;A4DpjMC;;EAEE,WAAA;EACA,YAAA;EACA,sBAAA;EtCvHF,aAAA;EAGA,0BAAA;CtB4qMD;A4DtlMD;;;;EAuCI,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,WAAA;EACA,sBAAA;C5DqjMH;A4DhmMD;;EA+CI,UAAA;EACA,mBAAA;C5DqjMH;A4DrmMD;;EAoDI,WAAA;EACA,oBAAA;C5DqjMH;A4D1mMD;;EAyDI,YAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;C5DqjMH;A4DhjMG;EACE,iBAAA;C5DkjML;A4D9iMG;EACE,iBAAA;C5DgjML;A4DtiMD;EACE,mBAAA;EACA,aAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;C5DwiMD;A4DjjMD;EAYI,sBAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;EAWA,0BAAA;EACA,mCAAA;C5D8hMH;A4D7jMD;EAkCI,UAAA;EACA,YAAA;EACA,aAAA;EACA,uBAAA;C5D8hMH;A4DvhMD;EACE,mBAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;C5DyhMD;A4DxhMC;EACE,kBAAA;C5D0hMH;A4Dj/LD;EAhCE;;;;IAKI,YAAA;IACA,aAAA;IACA,kBAAA;IACA,gBAAA;G5DmhMH;E4D3hMD;;IAYI,mBAAA;G5DmhMH;E4D/hMD;;IAgBI,oBAAA;G5DmhMH;E4D9gMD;IACE,UAAA;IACA,WAAA;IACA,qBAAA;G5DghMD;E4D5gMD;IACE,aAAA;G5D8gMD;CACF;A6D7wMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,aAAA;EACA,eAAA;C7D6yMH;A6D3yMC;;;;;;;;;;;;;;;;EACE,YAAA;C7D4zMH;AiCp0MD;E6BRE,eAAA;EACA,kBAAA;EACA,mBAAA;C9D+0MD;AiCt0MD;EACE,wBAAA;CjCw0MD;AiCt0MD;EACE,uBAAA;CjCw0MD;AiCh0MD;EACE,yBAAA;CjCk0MD;AiCh0MD;EACE,0BAAA;CjCk0MD;AiCh0MD;EACE,mBAAA;CjCk0MD;AiCh0MD;E8BzBE,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,8BAAA;EACA,UAAA;C/D41MD;AiC9zMD;EACE,yBAAA;CjCg0MD;AiCzzMD;EACE,gBAAA;CjC2zMD;AgE51MD;EACE,oBAAA;ChE81MD;AgEx1MD;;;;ECdE,yBAAA;CjE42MD;AgEv1MD;;;;;;;;;;;;EAYE,yBAAA;ChEy1MD;AgEl1MD;EA6IA;IC7LE,0BAAA;GjEs4MC;EiEr4MD;IAAU,0BAAA;GjEw4MT;EiEv4MD;IAAU,8BAAA;GjE04MT;EiEz4MD;;IACU,+BAAA;GjE44MT;CACF;AgE51MD;EAwIA;IA1II,0BAAA;GhEk2MD;CACF;AgE51MD;EAmIA;IArII,2BAAA;GhEk2MD;CACF;AgE51MD;EA8HA;IAhII,iCAAA;GhEk2MD;CACF;AgE31MD;EAwHA;IC7LE,0BAAA;GjEo6MC;EiEn6MD;IAAU,0BAAA;GjEs6MT;EiEr6MD;IAAU,8BAAA;GjEw6MT;EiEv6MD;;IACU,+BAAA;GjE06MT;CACF;AgEr2MD;EAmHA;IArHI,0BAAA;GhE22MD;CACF;AgEr2MD;EA8GA;IAhHI,2BAAA;GhE22MD;CACF;AgEr2MD;EAyGA;IA3GI,iCAAA;GhE22MD;CACF;AgEp2MD;EAmGA;IC7LE,0BAAA;GjEk8MC;EiEj8MD;IAAU,0BAAA;GjEo8MT;EiEn8MD;IAAU,8BAAA;GjEs8MT;EiEr8MD;;IACU,+BAAA;GjEw8MT;CACF;AgE92MD;EA8FA;IAhGI,0BAAA;GhEo3MD;CACF;AgE92MD;EAyFA;IA3FI,2BAAA;GhEo3MD;CACF;AgE92MD;EAoFA;IAtFI,iCAAA;GhEo3MD;CACF;AgE72MD;EA8EA;IC7LE,0BAAA;GjEg+MC;EiE/9MD;IAAU,0BAAA;GjEk+MT;EiEj+MD;IAAU,8BAAA;GjEo+MT;EiEn+MD;;IACU,+BAAA;GjEs+MT;CACF;AgEv3MD;EAyEA;IA3EI,0BAAA;GhE63MD;CACF;AgEv3MD;EAoEA;IAtEI,2BAAA;GhE63MD;CACF;AgEv3MD;EA+DA;IAjEI,iCAAA;GhE63MD;CACF;AgEt3MD;EAyDA;ICrLE,yBAAA;GjEs/MC;CACF;AgEt3MD;EAoDA;ICrLE,yBAAA;GjE2/MC;CACF;AgEt3MD;EA+CA;ICrLE,yBAAA;GjEggNC;CACF;AgEt3MD;EA0CA;ICrLE,yBAAA;GjEqgNC;CACF;AgEn3MD;ECnJE,yBAAA;CjEygND;AgEh3MD;EA4BA;IC7LE,0BAAA;GjEqhNC;EiEphND;IAAU,0BAAA;GjEuhNT;EiEthND;IAAU,8BAAA;GjEyhNT;EiExhND;;IACU,+BAAA;GjE2hNT;CACF;AgE93MD;EACE,yBAAA;ChEg4MD;AgE33MD;EAqBA;IAvBI,0BAAA;GhEi4MD;CACF;AgE/3MD;EACE,yBAAA;ChEi4MD;AgE53MD;EAcA;IAhBI,2BAAA;GhEk4MD;CACF;AgEh4MD;EACE,yBAAA;ChEk4MD;AgE73MD;EAOA;IATI,iCAAA;GhEm4MD;CACF;AgE53MD;EACA;ICrLE,yBAAA;GjEojNC;CACF","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on