diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b9cd664458c..00000000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: bash - -script: - - echo "Travis is disabled on master. See issue 23611." - - echo "https://github.com/kubernetes/kubernetes/issues/23611" diff --git a/CHANGELOG.md b/CHANGELOG.md index a6252ea605e..02a08dfa79d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ +- [v1.3.0](#v130) + - [Downloads](#downloads) + - [Major Themes](#major-themes) + - [Other notable improvements](#other-notable-improvements) + - [Known Issues](#known-issues) + - [Provider-specific Notes](#provider-specific-notes) + - [Changelog since v1.3.0-beta.3](#changelog-since-v130-beta3) + - [Previous Releases Included in v1.3.0](#previous-releases-included-in-v130) +- [v1.3.0-beta.3](#v130-beta3) + - [Downloads](#downloads) + - [Changelog since v1.3.0-beta.2](#changelog-since-v130-beta2) + - [Action Required](#action-required) + - [Other notable changes](#other-notable-changes) +- [v1.2.5](#v125) + - [Downloads](#downloads) + - [Changes since v1.2.4](#changes-since-v124) + - [Other notable changes](#other-notable-changes) - [v1.3.0-beta.2](#v130-beta2) - [Downloads](#downloads) - [Changes since v1.3.0-beta.1](#changes-since-v130-beta1) @@ -71,6 +88,156 @@ +# v1.3.0 + +[Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.3/examples) + +## Downloads + +binary | sha1 hash | md5 hash +------ | --------- | -------- +[kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.3.0/kubernetes.tar.gz) | `88249c443d438666928379aa7fe865b389ed72ea` | `9270f001aef8c03ff5db63456ca9eecc` + +## Highlights + +* Authorization: + * **Alpha** RBAC authorization API group +* Federation + * federation api group is now **beta** + * Services from all federated clusters are now registered in Cloud DNS (AWS and GCP). +* Stateful Apps: + * **alpha** PetSets manage stateful apps + * **alpha** Init containers provide one-time setup for stateful containers +* Updating: + * Retry Pod/RC updates in kubectl rolling-update. + * Stop 'kubectl drain' deleting pods with local storage. + * Add `kubectl rollout status` +* Security/Auth + * L7 LB controller and disk attach controllers run on master, so nodes do not need those privileges. + * Setting TLS1.2 minimum + * `kubectl create secret tls` command + * Webhook Token Authenticator + * **beta** PodSecurityPolicy objects limits use of security-sensitive features by pods. +* Kubectl + * Display line number on JSON errors + * Add flag -t as shorthand for --tty +* Resources + * **alpha**: NVIDIA GPU support ([#24836](https://github.com/kubernetes/kubernetes/pull/24836), [@therc](https://github.com/therc)) + * Adding loadBalancer services and nodeports services to quota system + +## Known Issues and Important Steps before Upgrading + +* *Instructions coming soon* + +## Provider-specific Notes + +* AWS + * Support for ap-northeast-2 region (Seoul) + * Allow cross-region image pulling with ECR + * More reliable kube-up/kube-down + * Enable ICMP Type 3 Code 4 for ELBs + * ARP caching fix + * Use /dev/xvdXX names + * ELB: + * ELB proxy protocol support + * mixed plaintext/encrypted ports support in ELBs + * SSL support for ELB listeners + * Allow VPC CIDR to be specified (experimental) + * Fix problems with >2 security groups +* GCP: + * Enable using gcr.io as a Docker registry mirror. + * Make bigger master root disks in GCE for large clusters. + * Change default clusterCIDRs from /16 to /14 allowing 1000 Node clusters by default. + * Allow Debian Jessie on GCE. + * Node problem detector addon pod detects and reports kernel deadlocks. +* OpenStack + * Provider added. +* VSphere: + * Provider updated. + +### Previous Releases Included in v1.3.0 + +- [v1.3.0-beta.3](CHANGELOG.md#v130-beta3) +- [v1.3.0-beta.2](CHANGELOG.md#v130-beta2) +- [v1.3.0-beta.1](CHANGELOG.md#v130-beta1) +- [v1.3.0-alpha.5](CHANGELOG.md#v130-alpha5) +- [v1.3.0-alpha.4](CHANGELOG.md#v130-alpha4) +- [v1.3.0-alpha.3](CHANGELOG.md#v130-alpha3) +- [v1.3.0-alpha.2](CHANGELOG.md#v130-alpha2) +- [v1.3.0-alpha.1](CHANGELOG.md#v130-alpha1) + + + +# v1.3.0-beta.3 + +[Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.3/examples) + +## Downloads + +binary | sha1 hash | md5 hash +------ | --------- | -------- +[kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.3.0-beta.3/kubernetes.tar.gz) | `9d18964a294f356bfdc841957dcad8ff35ed909c` | `ee5fcdf86645135ed132663967876dd6` + +## Changelog since v1.3.0-beta.2 + +### Action Required + +* [kubelet] Allow opting out of automatic cloud provider detection in kubelet. By default kubelet will auto-detect cloud providers ([#28258](https://github.com/kubernetes/kubernetes/pull/28258), [@vishh](https://github.com/vishh)) +* If you use one of the kube-dns replication controller manifest in `cluster/saltbase/salt/kube-dns`, i.e. `cluster/saltbase/salt/kube-dns/{skydns-rc.yaml.base,skydns-rc.yaml.in}`, either substitute one of `__PILLAR__FEDERATIONS__DOMAIN__MAP__` or `{{ pillar['federations_domain_map'] }}` with the corresponding federation name to domain name value or remove them if you do not support cluster federation at this time. If you plan to substitute the parameter with its value, here is an example for `{{ pillar['federations_domain_map'] }` ([#28132](https://github.com/kubernetes/kubernetes/pull/28132), [@madhusudancs](https://github.com/madhusudancs)) + * pillar['federations_domain_map'] = "- --federations=myfederation=federation.test" + * where `myfederation` is the name of the federation and `federation.test` is the domain name registered for the federation. +* federation: Upgrading the groupversion to v1beta1 ([#28186](https://github.com/kubernetes/kubernetes/pull/28186), [@nikhiljindal](https://github.com/nikhiljindal)) +* Set Dashboard UI version to v1.1.0 ([#27869](https://github.com/kubernetes/kubernetes/pull/27869), [@bryk](https://github.com/bryk)) + +### Other notable changes + +* Build: Add KUBE_GCS_RELEASE_BUCKET_MIRROR option to push-ci-build.sh ([#28172](https://github.com/kubernetes/kubernetes/pull/28172), [@zmerlynn](https://github.com/zmerlynn)) +* Image GC logic should compensate for reserved blocks ([#27996](https://github.com/kubernetes/kubernetes/pull/27996), [@ronnielai](https://github.com/ronnielai)) +* Bump minimum API version for docker to 1.21 ([#27208](https://github.com/kubernetes/kubernetes/pull/27208), [@yujuhong](https://github.com/yujuhong)) +* Adding lock files for kubeconfig updating ([#28034](https://github.com/kubernetes/kubernetes/pull/28034), [@krousey](https://github.com/krousey)) +* federation service controller: fixing the logic to update DNS records ([#27999](https://github.com/kubernetes/kubernetes/pull/27999), [@quinton-hoole](https://github.com/quinton-hoole)) +* federation: Updating KubeDNS to try finding a local service first for federation query ([#27708](https://github.com/kubernetes/kubernetes/pull/27708), [@nikhiljindal](https://github.com/nikhiljindal)) +* Support journal logs in fluentd-gcp on GCI ([#27981](https://github.com/kubernetes/kubernetes/pull/27981), [@a-robinson](https://github.com/a-robinson)) +* Copy and display source location prominently on Kubernetes instances ([#27985](https://github.com/kubernetes/kubernetes/pull/27985), [@maisem](https://github.com/maisem)) +* Federation e2e support for AWS ([#27791](https://github.com/kubernetes/kubernetes/pull/27791), [@colhom](https://github.com/colhom)) +* Copy and display source location prominently on Kubernetes instances ([#27840](https://github.com/kubernetes/kubernetes/pull/27840), [@zmerlynn](https://github.com/zmerlynn)) +* AWS/GCE: Spread PetSet volume creation across zones, create GCE volumes in non-master zones ([#27553](https://github.com/kubernetes/kubernetes/pull/27553), [@justinsb](https://github.com/justinsb)) +* GCE provider: Create TargetPool with 200 instances, then update with rest ([#27829](https://github.com/kubernetes/kubernetes/pull/27829), [@zmerlynn](https://github.com/zmerlynn)) +* Add sources to server tarballs. ([#27830](https://github.com/kubernetes/kubernetes/pull/27830), [@david-mcmahon](https://github.com/david-mcmahon)) +* Retry Pod/RC updates in kubectl rolling-update ([#27509](https://github.com/kubernetes/kubernetes/pull/27509), [@janetkuo](https://github.com/janetkuo)) +* AWS kube-up: Authorize route53 in the IAM policy ([#27794](https://github.com/kubernetes/kubernetes/pull/27794), [@justinsb](https://github.com/justinsb)) +* Allow conformance tests to run on non-GCE providers ([#26932](https://github.com/kubernetes/kubernetes/pull/26932), [@aaronlevy](https://github.com/aaronlevy)) +* AWS kube-up: move to Docker 1.11.2 ([#27676](https://github.com/kubernetes/kubernetes/pull/27676), [@justinsb](https://github.com/justinsb)) +* Fixed an issue that Deployment may be scaled down further than allowed by maxUnavailable when minReadySeconds is set. ([#27728](https://github.com/kubernetes/kubernetes/pull/27728), [@janetkuo](https://github.com/janetkuo)) + + + +# v1.2.5 + +[Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples) + +## Downloads + +binary | sha1 hash | md5 hash +------ | --------- | -------- +[kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.5/kubernetes.tar.gz) | `ddf12d7f37dfef25308798d71ad547761d0785ac` | `69d770df8fa4eceb57167e34df3962ca` + +## Changes since v1.2.4 + +### Other notable changes + +* Retry Pod/RC updates in kubectl rolling-update ([#27509](https://github.com/kubernetes/kubernetes/pull/27509), [@janetkuo](https://github.com/janetkuo)) +* GCE provider: Create TargetPool with 200 instances, then update with rest ([#27865](https://github.com/kubernetes/kubernetes/pull/27865), [@zmerlynn](https://github.com/zmerlynn)) +* GCE provider: Limit Filter calls to regexps rather than large blobs ([#27741](https://github.com/kubernetes/kubernetes/pull/27741), [@zmerlynn](https://github.com/zmerlynn)) +* Fix strategic merge diff list diff bug ([#26418](https://github.com/kubernetes/kubernetes/pull/26418), [@AdoHe](https://github.com/AdoHe)) +* AWS: Fix long-standing bug in stringSetToPointers ([#26331](https://github.com/kubernetes/kubernetes/pull/26331), [@therc](https://github.com/therc)) +* AWS kube-up: Increase timeout waiting for docker start ([#25405](https://github.com/kubernetes/kubernetes/pull/25405), [@justinsb](https://github.com/justinsb)) +* Fix hyperkube flag parsing ([#25512](https://github.com/kubernetes/kubernetes/pull/25512), [@colhom](https://github.com/colhom)) +* kubectl rolling-update support for same image ([#24645](https://github.com/kubernetes/kubernetes/pull/24645), [@jlowdermilk](https://github.com/jlowdermilk)) +* Return "410 Gone" errors via watch stream when using watch cache ([#25369](https://github.com/kubernetes/kubernetes/pull/25369), [@liggitt](https://github.com/liggitt)) + + + # v1.3.0-beta.2 [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.3/examples) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 60ec7a96c5d..4af7476a99b 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,7 +1,7 @@ { "ImportPath": "k8s.io/kubernetes", "GoVersion": "go1.6", - "GodepVersion": "v69", + "GodepVersion": "v74", "Packages": [ "github.com/ugorji/go/codec/codecgen", "github.com/onsi/ginkgo/ginkgo", @@ -927,203 +927,203 @@ }, { "ImportPath": "github.com/google/cadvisor/api", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/cache/memory", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/collector", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/container", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/container/common", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/container/docker", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/container/libcontainer", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/container/raw", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/container/rkt", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/container/systemd", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/devicemapper", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/events", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/fs", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/healthz", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/http", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/http/mux", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/info/v1", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/info/v1/test", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/info/v2", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/machine", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/manager", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/manager/watcher", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/manager/watcher/raw", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/manager/watcher/rkt", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/metrics", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/pages", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/pages/static", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/storage", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/summary", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils/cloudinfo", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils/cpuload", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils/cpuload/netlink", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils/docker", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils/oomparser", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils/sysfs", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils/sysinfo", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/utils/tail", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/validate", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/cadvisor/version", - "Comment": "v0.23.4", - "Rev": "7d22cf63253c17bad8ab64b8eef679718d00342e" + "Comment": "v0.23.2-25-g51574ec", + "Rev": "51574ec04ff12ca5a50f0935625ec02437191a06" }, { "ImportPath": "github.com/google/gofuzz", @@ -1319,7 +1319,7 @@ }, { "ImportPath": "github.com/miekg/dns", - "Rev": "c2b278e70f35902fd68b54b69238cd10bb1b7451" + "Rev": "5d001d020961ae1c184f9f8152fdc73810481677" }, { "ImportPath": "github.com/mistifyio/go-zfs", @@ -1773,6 +1773,11 @@ "Comment": "v1.0.0-920-g934dbf8", "Rev": "934dbf81977c67c521c75492dc1f55ca74dc5b04" }, + { + "ImportPath": "github.com/renstrom/dedent", + "Comment": "v1.0.0-3-g020d11c", + "Rev": "020d11c3b9c0c7a3c2efcc8e5cf5b9ef7bcea21f" + }, { "ImportPath": "github.com/robfig/cron", "Comment": "v1-16-g0f39cf7", @@ -1797,28 +1802,28 @@ }, { "ImportPath": "github.com/skynetservices/skydns/cache", - "Comment": "2.5.3a-32-gf7b6fb7", - "Rev": "f7b6fb74bcfab300b4e7e0e27b1fe6c0ed555f78" + "Comment": "2.5.3a-41-g00ade30", + "Rev": "00ade3024f047d26130abf161900e0adb72a06f1" }, { "ImportPath": "github.com/skynetservices/skydns/metrics", - "Comment": "2.5.3a-32-gf7b6fb7", - "Rev": "f7b6fb74bcfab300b4e7e0e27b1fe6c0ed555f78" + "Comment": "2.5.3a-41-g00ade30", + "Rev": "00ade3024f047d26130abf161900e0adb72a06f1" }, { "ImportPath": "github.com/skynetservices/skydns/msg", - "Comment": "2.5.3a-32-gf7b6fb7", - "Rev": "f7b6fb74bcfab300b4e7e0e27b1fe6c0ed555f78" + "Comment": "2.5.3a-41-g00ade30", + "Rev": "00ade3024f047d26130abf161900e0adb72a06f1" }, { "ImportPath": "github.com/skynetservices/skydns/server", - "Comment": "2.5.3a-32-gf7b6fb7", - "Rev": "f7b6fb74bcfab300b4e7e0e27b1fe6c0ed555f78" + "Comment": "2.5.3a-41-g00ade30", + "Rev": "00ade3024f047d26130abf161900e0adb72a06f1" }, { "ImportPath": "github.com/skynetservices/skydns/singleflight", - "Comment": "2.5.3a-32-gf7b6fb7", - "Rev": "f7b6fb74bcfab300b4e7e0e27b1fe6c0ed555f78" + "Comment": "2.5.3a-41-g00ade30", + "Rev": "00ade3024f047d26130abf161900e0adb72a06f1" }, { "ImportPath": "github.com/spf13/cobra", @@ -1973,7 +1978,7 @@ }, { "ImportPath": "golang.org/x/exp/inotify", - "Rev": "d00e13ec443927751b2bd49e97dea7bf3b6a6487" + "Rev": "292a51b8d262487dab23a588950e8052d63d9113" }, { "ImportPath": "golang.org/x/net/context", diff --git a/Godeps/LICENSES b/Godeps/LICENSES index 0413ce310cc..1ce4ce21e9a 100644 --- a/Godeps/LICENSES +++ b/Godeps/LICENSES @@ -190,7 +190,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2014 The Kubernetes Authors All rights reserved. + Copyright 2014 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -204,7 +204,7 @@ See the License for the specific language governing permissions and limitations under the License. -= LICENSE d6177d11bbe618cf4ac8a63a16d30f83 - += LICENSE ad09685d909e7a9f763d2bb62d4bd6fb - ================================================================================ ================================================================================ @@ -57322,6 +57322,35 @@ specific language governing permissions and limitations under the License. ================================================================================ +================================================================================ += vendor/github.com/renstrom/dedent licensed under: = + +The MIT License (MIT) + +Copyright (c) 2015 Peter Renström + +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. + += vendor/github.com/renstrom/dedent/LICENSE 285693e07a6e1fd790cb3f3b8b5127db - +================================================================================ + + ================================================================================ = vendor/github.com/robfig/cron licensed under: = diff --git a/LICENSE b/LICENSE index 6b4d837a44b..00b2401109f 100644 --- a/LICENSE +++ b/LICENSE @@ -187,7 +187,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2014 The Kubernetes Authors All rights reserved. + Copyright 2014 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Makefile b/Makefile index 884c0ca972c..c791e7ad288 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,6 +45,14 @@ all: hack/build-go.sh $(WHAT) .PHONY: all +# Build ginkgo +# +# Example: +# make ginkgo +ginkgo: + hack/build-go.sh vendor/github.com/onsi/ginkgo/ginkgo +.PHONY: ginkgo + # Runs all the presubmission verifications. # # Args: @@ -111,7 +119,7 @@ test_e2e: # make test_e2e_node FOCUS=kubelet SKIP=container # make test_e2e_node REMOTE=true DELETE_INSTANCES=true # Build and run tests. -test_e2e_node: +test_e2e_node: ginkgo hack/e2e-node-test.sh .PHONY: test_e2e_node diff --git a/README.md b/README.md index ea5be181774..1c395db1ec1 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,11 @@ # Kubernetes -[![Submit Queue Widget]][Submit Queue] [![GoReportCard Widget]][GoReportCard] [![GoDoc Widget]][GoDoc] [![Coverage Status Widget]][Coverage Status] +[![Submit Queue Widget]][Submit Queue] [![GoDoc Widget]][GoDoc] [![Coverage Status Widget]][Coverage Status] [Submit Queue]: http://submit-queue.k8s.io/#/e2e [Submit Queue Widget]: http://submit-queue.k8s.io/health.svg?v=1 [GoDoc]: https://godoc.org/k8s.io/kubernetes [GoDoc Widget]: https://godoc.org/k8s.io/kubernetes?status.svg -[GoReportCard]: https://goreportcard.com/report/k8s.io/kubernetes -[GoReportCard Widget]: https://goreportcard.com/badge/k8s.io/kubernetes [Coverage Status]: https://coveralls.io/r/kubernetes/kubernetes [Coverage Status Widget]: https://coveralls.io/repos/kubernetes/kubernetes/badge.svg diff --git a/api/swagger-spec/certificates.json b/api/swagger-spec/certificates.json new file mode 100644 index 00000000000..56ba0dd90e0 --- /dev/null +++ b/api/swagger-spec/certificates.json @@ -0,0 +1,110 @@ +{ + "swaggerVersion": "1.2", + "apiVersion": "", + "basePath": "https://10.10.10.10:6443", + "resourcePath": "/apis/certificates", + "apis": [ + { + "path": "/apis/certificates", + "description": "get information of a group", + "operations": [ + { + "type": "unversioned.APIGroup", + "method": "GET", + "summary": "get information of a group", + "nickname": "getAPIGroup", + "parameters": [], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ] + } + ] + } + ], + "models": { + "unversioned.APIGroup": { + "id": "unversioned.APIGroup", + "description": "APIGroup contains the name, the supported versions, and the preferred version of a group.", + "required": [ + "name", + "versions", + "serverAddressByClientCIDRs" + ], + "properties": { + "kind": { + "type": "string", + "description": "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" + }, + "apiVersion": { + "type": "string", + "description": "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" + }, + "name": { + "type": "string", + "description": "name is the name of the group." + }, + "versions": { + "type": "array", + "items": { + "$ref": "unversioned.GroupVersionForDiscovery" + }, + "description": "versions are the versions supported in this group." + }, + "preferredVersion": { + "$ref": "unversioned.GroupVersionForDiscovery", + "description": "preferredVersion is the version preferred by the API server, which probably is the storage version." + }, + "serverAddressByClientCIDRs": { + "type": "array", + "items": { + "$ref": "unversioned.ServerAddressByClientCIDR" + }, + "description": "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." + } + } + }, + "unversioned.GroupVersionForDiscovery": { + "id": "unversioned.GroupVersionForDiscovery", + "description": "GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensiblity.", + "required": [ + "groupVersion", + "version" + ], + "properties": { + "groupVersion": { + "type": "string", + "description": "groupVersion specifies the API group and version in the form \"group/version\"" + }, + "version": { + "type": "string", + "description": "version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion." + } + } + }, + "unversioned.ServerAddressByClientCIDR": { + "id": "unversioned.ServerAddressByClientCIDR", + "description": "ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.", + "required": [ + "clientCIDR", + "serverAddress" + ], + "properties": { + "clientCIDR": { + "type": "string", + "description": "The CIDR with which clients can match their IP to figure out the server address that they should use." + }, + "serverAddress": { + "type": "string", + "description": "Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port." + } + } + } + } + } diff --git a/api/swagger-spec/certificates_v1alpha1.json b/api/swagger-spec/certificates_v1alpha1.json new file mode 100644 index 00000000000..609936a6302 --- /dev/null +++ b/api/swagger-spec/certificates_v1alpha1.json @@ -0,0 +1,1118 @@ +{ + "swaggerVersion": "1.2", + "apiVersion": "certificates/v1alpha1", + "basePath": "https://10.10.10.10:6443", + "resourcePath": "/apis/certificates/v1alpha1", + "apis": [ + { + "path": "/apis/certificates/v1alpha1/certificatesigningrequests", + "description": "API at /apis/certificates/v1alpha1", + "operations": [ + { + "type": "v1alpha1.CertificateSigningRequestList", + "method": "GET", + "summary": "list or watch objects of kind CertificateSigningRequest", + "nickname": "listCertificateSigningRequest", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "labelSelector", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "fieldSelector", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "required": false, + "allowMultiple": false + }, + { + "type": "boolean", + "paramType": "query", + "name": "watch", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "resourceVersion", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.", + "required": false, + "allowMultiple": false + }, + { + "type": "integer", + "paramType": "query", + "name": "timeoutSeconds", + "description": "Timeout for the list/watch call.", + "required": false, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "v1alpha1.CertificateSigningRequestList" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "*/*" + ] + }, + { + "type": "v1alpha1.CertificateSigningRequest", + "method": "POST", + "summary": "create a CertificateSigningRequest", + "nickname": "createCertificateSigningRequest", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "v1alpha1.CertificateSigningRequest", + "paramType": "body", + "name": "body", + "description": "", + "required": true, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "v1alpha1.CertificateSigningRequest" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "*/*" + ] + }, + { + "type": "unversioned.Status", + "method": "DELETE", + "summary": "delete collection of CertificateSigningRequest", + "nickname": "deletecollectionCertificateSigningRequest", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "labelSelector", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "fieldSelector", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "required": false, + "allowMultiple": false + }, + { + "type": "boolean", + "paramType": "query", + "name": "watch", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "resourceVersion", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.", + "required": false, + "allowMultiple": false + }, + { + "type": "integer", + "paramType": "query", + "name": "timeoutSeconds", + "description": "Timeout for the list/watch call.", + "required": false, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "unversioned.Status" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "*/*" + ] + } + ] + }, + { + "path": "/apis/certificates/v1alpha1/watch/certificatesigningrequests", + "description": "API at /apis/certificates/v1alpha1", + "operations": [ + { + "type": "*versioned.Event", + "method": "GET", + "summary": "watch individual changes to a list of CertificateSigningRequest", + "nickname": "watchCertificateSigningRequestList", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "labelSelector", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "fieldSelector", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "required": false, + "allowMultiple": false + }, + { + "type": "boolean", + "paramType": "query", + "name": "watch", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "resourceVersion", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.", + "required": false, + "allowMultiple": false + }, + { + "type": "integer", + "paramType": "query", + "name": "timeoutSeconds", + "description": "Timeout for the list/watch call.", + "required": false, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "*versioned.Event" + } + ], + "produces": [ + "application/json", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "consumes": [ + "*/*" + ] + } + ] + }, + { + "path": "/apis/certificates/v1alpha1/certificatesigningrequests/{name}", + "description": "API at /apis/certificates/v1alpha1", + "operations": [ + { + "type": "v1alpha1.CertificateSigningRequest", + "method": "GET", + "summary": "read the specified CertificateSigningRequest", + "nickname": "readCertificateSigningRequest", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "boolean", + "paramType": "query", + "name": "export", + "description": "Should this value be exported. Export strips fields that a user can not specify.", + "required": false, + "allowMultiple": false + }, + { + "type": "boolean", + "paramType": "query", + "name": "exact", + "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "path", + "name": "name", + "description": "name of the CertificateSigningRequest", + "required": true, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "v1alpha1.CertificateSigningRequest" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "*/*" + ] + }, + { + "type": "v1alpha1.CertificateSigningRequest", + "method": "PUT", + "summary": "replace the specified CertificateSigningRequest", + "nickname": "replaceCertificateSigningRequest", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "v1alpha1.CertificateSigningRequest", + "paramType": "body", + "name": "body", + "description": "", + "required": true, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "path", + "name": "name", + "description": "name of the CertificateSigningRequest", + "required": true, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "v1alpha1.CertificateSigningRequest" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "*/*" + ] + }, + { + "type": "v1alpha1.CertificateSigningRequest", + "method": "PATCH", + "summary": "partially update the specified CertificateSigningRequest", + "nickname": "patchCertificateSigningRequest", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "unversioned.Patch", + "paramType": "body", + "name": "body", + "description": "", + "required": true, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "path", + "name": "name", + "description": "name of the CertificateSigningRequest", + "required": true, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "v1alpha1.CertificateSigningRequest" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json" + ] + }, + { + "type": "unversioned.Status", + "method": "DELETE", + "summary": "delete a CertificateSigningRequest", + "nickname": "deleteCertificateSigningRequest", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "v1.DeleteOptions", + "paramType": "body", + "name": "body", + "description": "", + "required": true, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "path", + "name": "name", + "description": "name of the CertificateSigningRequest", + "required": true, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "unversioned.Status" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "*/*" + ] + } + ] + }, + { + "path": "/apis/certificates/v1alpha1/watch/certificatesigningrequests/{name}", + "description": "API at /apis/certificates/v1alpha1", + "operations": [ + { + "type": "*versioned.Event", + "method": "GET", + "summary": "watch changes to an object of kind CertificateSigningRequest", + "nickname": "watchCertificateSigningRequest", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "labelSelector", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "fieldSelector", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "required": false, + "allowMultiple": false + }, + { + "type": "boolean", + "paramType": "query", + "name": "watch", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "query", + "name": "resourceVersion", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.", + "required": false, + "allowMultiple": false + }, + { + "type": "integer", + "paramType": "query", + "name": "timeoutSeconds", + "description": "Timeout for the list/watch call.", + "required": false, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "path", + "name": "name", + "description": "name of the CertificateSigningRequest", + "required": true, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "*versioned.Event" + } + ], + "produces": [ + "application/json", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "consumes": [ + "*/*" + ] + } + ] + }, + { + "path": "/apis/certificates/v1alpha1/certificatesigningrequests/{name}/approval", + "description": "API at /apis/certificates/v1alpha1", + "operations": [ + { + "type": "v1alpha1.CertificateSigningRequest", + "method": "PUT", + "summary": "replace approval of the specified CertificateSigningRequest", + "nickname": "replaceCertificateSigningRequestApproval", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "v1alpha1.CertificateSigningRequest", + "paramType": "body", + "name": "body", + "description": "", + "required": true, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "path", + "name": "name", + "description": "name of the CertificateSigningRequest", + "required": true, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "v1alpha1.CertificateSigningRequest" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "*/*" + ] + } + ] + }, + { + "path": "/apis/certificates/v1alpha1/certificatesigningrequests/{name}/status", + "description": "API at /apis/certificates/v1alpha1", + "operations": [ + { + "type": "v1alpha1.CertificateSigningRequest", + "method": "PUT", + "summary": "replace status of the specified CertificateSigningRequest", + "nickname": "replaceCertificateSigningRequestStatus", + "parameters": [ + { + "type": "string", + "paramType": "query", + "name": "pretty", + "description": "If 'true', then the output is pretty printed.", + "required": false, + "allowMultiple": false + }, + { + "type": "v1alpha1.CertificateSigningRequest", + "paramType": "body", + "name": "body", + "description": "", + "required": true, + "allowMultiple": false + }, + { + "type": "string", + "paramType": "path", + "name": "name", + "description": "name of the CertificateSigningRequest", + "required": true, + "allowMultiple": false + } + ], + "responseMessages": [ + { + "code": 200, + "message": "OK", + "responseModel": "v1alpha1.CertificateSigningRequest" + } + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "*/*" + ] + } + ] + }, + { + "path": "/apis/certificates/v1alpha1", + "description": "API at /apis/certificates/v1alpha1", + "operations": [ + { + "type": "unversioned.APIResourceList", + "method": "GET", + "summary": "get available resources", + "nickname": "getAPIResources", + "parameters": [], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ] + } + ] + } + ], + "models": { + "v1alpha1.CertificateSigningRequestList": { + "id": "v1alpha1.CertificateSigningRequestList", + "properties": { + "kind": { + "type": "string", + "description": "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" + }, + "apiVersion": { + "type": "string", + "description": "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" + }, + "metadata": { + "$ref": "unversioned.ListMeta" + }, + "items": { + "type": "array", + "items": { + "$ref": "v1alpha1.CertificateSigningRequest" + } + } + } + }, + "unversioned.ListMeta": { + "id": "unversioned.ListMeta", + "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "properties": { + "selfLink": { + "type": "string", + "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." + }, + "resourceVersion": { + "type": "string", + "description": "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" + } + } + }, + "v1alpha1.CertificateSigningRequest": { + "id": "v1alpha1.CertificateSigningRequest", + "description": "Describes a certificate signing request", + "properties": { + "kind": { + "type": "string", + "description": "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" + }, + "apiVersion": { + "type": "string", + "description": "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" + }, + "metadata": { + "$ref": "v1.ObjectMeta" + }, + "spec": { + "$ref": "v1alpha1.CertificateSigningRequestSpec", + "description": "The certificate request itself and any additonal information." + }, + "status": { + "$ref": "v1alpha1.CertificateSigningRequestStatus", + "description": "Derived information about the request." + } + } + }, + "v1.ObjectMeta": { + "id": "v1.ObjectMeta", + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "properties": { + "name": { + "type": "string", + "description": "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://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names" + }, + "generateName": { + "type": "string", + "description": "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.\n\nIf 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).\n\nApplied only if Name is not specified. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency" + }, + "namespace": { + "type": "string", + "description": "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.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md" + }, + "selfLink": { + "type": "string", + "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." + }, + "uid": { + "type": "string", + "description": "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.\n\nPopulated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids" + }, + "resourceVersion": { + "type": "string", + "description": "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.\n\nPopulated 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" + }, + "generation": { + "type": "integer", + "format": "int64", + "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only." + }, + "creationTimestamp": { + "type": "string", + "description": "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.\n\nPopulated by the system. Read-only. Null for lists. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" + }, + "deletionTimestamp": { + "type": "string", + "description": "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 will 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. Once the resource is deleted in the API, the Kubelet will send a hard termination signal to the container. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" + }, + "deletionGracePeriodSeconds": { + "type": "integer", + "format": "int64", + "description": "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." + }, + "labels": { + "type": "object", + "description": "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://releases.k8s.io/HEAD/docs/user-guide/labels.md" + }, + "annotations": { + "type": "object", + "description": "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://releases.k8s.io/HEAD/docs/user-guide/annotations.md" + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "v1.OwnerReference" + }, + "description": "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." + }, + "finalizers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "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." + } + } + }, + "v1.OwnerReference": { + "id": "v1.OwnerReference", + "description": "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.", + "required": [ + "apiVersion", + "kind", + "name", + "uid" + ], + "properties": { + "apiVersion": { + "type": "string", + "description": "API version of the referent." + }, + "kind": { + "type": "string", + "description": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" + }, + "name": { + "type": "string", + "description": "Name of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names" + }, + "uid": { + "type": "string", + "description": "UID of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids" + }, + "controller": { + "type": "boolean", + "description": "If true, this reference points to the managing controller." + } + } + }, + "v1alpha1.CertificateSigningRequestSpec": { + "id": "v1alpha1.CertificateSigningRequestSpec", + "description": "This information is immutable after the request is created. Only the Request and ExtraInfo fields can be set on creation, other fields are derived by Kubernetes and cannot be modified by users.", + "required": [ + "request" + ], + "properties": { + "request": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Base64-encoded PKCS#10 CSR data" + }, + "username": { + "type": "string", + "description": "Information about the requesting user (if relevant) See user.Info interface for details" + }, + "uid": { + "type": "string" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1alpha1.CertificateSigningRequestStatus": { + "id": "v1alpha1.CertificateSigningRequestStatus", + "properties": { + "conditions": { + "type": "array", + "items": { + "$ref": "v1alpha1.CertificateSigningRequestCondition" + }, + "description": "Conditions applied to the request, such as approval or denial." + }, + "certificate": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "If request was approved, the controller will place the issued certificate here." + } + } + }, + "v1alpha1.CertificateSigningRequestCondition": { + "id": "v1alpha1.CertificateSigningRequestCondition", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "description": "request approval state, currently Approved or Denied." + }, + "reason": { + "type": "string", + "description": "brief reason for the request state" + }, + "message": { + "type": "string", + "description": "human readable message with details about the request state" + }, + "lastUpdateTime": { + "type": "string", + "description": "timestamp for the last update to this condition" + } + } + }, + "unversioned.Status": { + "id": "unversioned.Status", + "description": "Status is a return value for calls that don't return other objects.", + "properties": { + "kind": { + "type": "string", + "description": "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" + }, + "apiVersion": { + "type": "string", + "description": "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" + }, + "metadata": { + "$ref": "unversioned.ListMeta", + "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" + }, + "status": { + "type": "string", + "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "reason": { + "type": "string", + "description": "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." + }, + "details": { + "$ref": "unversioned.StatusDetails", + "description": "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." + }, + "code": { + "type": "integer", + "format": "int32", + "description": "Suggested HTTP return code for this status, 0 if not set." + } + } + }, + "unversioned.StatusDetails": { + "id": "unversioned.StatusDetails", + "description": "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.", + "properties": { + "name": { + "type": "string", + "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described)." + }, + "group": { + "type": "string", + "description": "The group attribute of the resource associated with the status StatusReason." + }, + "kind": { + "type": "string", + "description": "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" + }, + "causes": { + "type": "array", + "items": { + "$ref": "unversioned.StatusCause" + }, + "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes." + }, + "retryAfterSeconds": { + "type": "integer", + "format": "int32", + "description": "If specified, the time in seconds before the operation should be retried." + } + } + }, + "unversioned.StatusCause": { + "id": "unversioned.StatusCause", + "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", + "properties": { + "reason": { + "type": "string", + "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available." + }, + "message": { + "type": "string", + "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader." + }, + "field": { + "type": "string", + "description": "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.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"" + } + } + }, + "*versioned.Event": { + "id": "*versioned.Event", + "properties": {} + }, + "unversioned.Patch": { + "id": "unversioned.Patch", + "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", + "properties": {} + }, + "v1.DeleteOptions": { + "id": "v1.DeleteOptions", + "description": "DeleteOptions may be provided when deleting an API object", + "properties": { + "kind": { + "type": "string", + "description": "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" + }, + "apiVersion": { + "type": "string", + "description": "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": { + "type": "integer", + "format": "int64", + "description": "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." + }, + "preconditions": { + "$ref": "v1.Preconditions", + "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned." + }, + "orphanDependents": { + "type": "boolean", + "description": "Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list." + } + } + }, + "v1.Preconditions": { + "id": "v1.Preconditions", + "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", + "properties": { + "uid": { + "$ref": "types.UID", + "description": "Specifies the target UID." + } + } + }, + "types.UID": { + "id": "types.UID", + "properties": {} + }, + "unversioned.APIResourceList": { + "id": "unversioned.APIResourceList", + "description": "APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.", + "required": [ + "groupVersion", + "resources" + ], + "properties": { + "kind": { + "type": "string", + "description": "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" + }, + "apiVersion": { + "type": "string", + "description": "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" + }, + "groupVersion": { + "type": "string", + "description": "groupVersion is the group and version this APIResourceList is for." + }, + "resources": { + "type": "array", + "items": { + "$ref": "unversioned.APIResource" + }, + "description": "resources contains the name of the resources and if they are namespaced." + } + } + }, + "unversioned.APIResource": { + "id": "unversioned.APIResource", + "description": "APIResource specifies the name of a resource and whether it is namespaced.", + "required": [ + "name", + "namespaced", + "kind" + ], + "properties": { + "name": { + "type": "string", + "description": "name is the name of the resource." + }, + "namespaced": { + "type": "boolean", + "description": "namespaced indicates if a resource is namespaced or not." + }, + "kind": { + "type": "string", + "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')" + } + } + } + } + } diff --git a/api/swagger-spec/resourceListing.json b/api/swagger-spec/resourceListing.json index 77630e3d12a..037c94acbc0 100644 --- a/api/swagger-spec/resourceListing.json +++ b/api/swagger-spec/resourceListing.json @@ -61,6 +61,14 @@ "path": "/apis/apps", "description": "get information of a group" }, + { + "path": "/apis/certificates/v1alpha1", + "description": "API at /apis/certificates/v1alpha1" + }, + { + "path": "/apis/certificates", + "description": "get information of a group" + }, { "path": "/apis/rbac.authorization.k8s.io/v1alpha1", "description": "API at /apis/rbac.authorization.k8s.io/v1alpha1" diff --git a/api/swagger-spec/v1.json b/api/swagger-spec/v1.json index c2a1b3a7ea2..e4d0920bf88 100644 --- a/api/swagger-spec/v1.json +++ b/api/swagger-spec/v1.json @@ -19090,6 +19090,10 @@ "type": "object", "description": "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" }, + "stringData": { + "type": "object", + "description": "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": { "type": "string", "description": "Used to facilitate programmatic handling of secret data." @@ -19226,7 +19230,7 @@ }, "selector": { "type": "object", - "description": "This service will route traffic to pods having labels matching this selector. Label keys and values that must match in order to receive traffic for this service. If empty, all pods are selected, if not specified, endpoints must be manually specified. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview" + "description": "This service will route traffic to pods having labels matching this selector. Label keys and values that must match in order to receive traffic for this service. If not specified, endpoints must be manually specified and the system will not automatically manage them. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview" }, "clusterIP": { "type": "string", diff --git a/build/build-image/Dockerfile b/build/build-image/Dockerfile index 6e648357728..2adbd5ae1c5 100644 --- a/build/build-image/Dockerfile +++ b/build/build-image/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/build-image/cross/Dockerfile b/build/build-image/cross/Dockerfile index 3746337302d..dd8d8054b83 100644 --- a/build/build-image/cross/Dockerfile +++ b/build/build-image/cross/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/build-image/cross/Makefile b/build/build-image/cross/Makefile index bbf4c904862..9578e27ee34 100644 --- a/build/build-image/cross/Makefile +++ b/build/build-image/cross/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/common.sh b/build/common.sh index 5decf6b197f..864c9cd129f 100755 --- a/build/common.sh +++ b/build/common.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -170,10 +170,14 @@ function kube::build::verify_prereqs() { function kube::build::docker_available_on_osx() { if [[ -z "${DOCKER_HOST}" ]]; then + if [[ -S "/var/run/docker.sock" ]]; then + kube::log::status "Using Docker for MacOS" + return 0 + fi + kube::log::status "No docker host is set. Checking options for setting one..." - if [[ -z "$(which docker-machine)" && -z "$(which boot2docker)" ]]; then - kube::log::status "It looks like you're running Mac OS X, and neither docker-machine or boot2docker are nowhere to be found." + kube::log::status "It looks like you're running Mac OS X, and neither Docker for Mac, docker-machine or boot2docker are nowhere to be found." kube::log::status "See: https://docs.docker.com/machine/ for installation instructions." return 1 elif [[ -n "$(which docker-machine)" ]]; then @@ -266,6 +270,9 @@ function kube::build::ensure_docker_daemon_connectivity { echo " - Set your environment variables using: " echo " - eval \$(docker-machine env ${DOCKER_MACHINE_NAME})" echo " - \$(boot2docker shellinit)" + echo " - Update your Docker VM" + echo " - Error Message: 'Error response from daemon: client is newer than server (...)' " + echo " - docker-machine upgrade ${DOCKER_MACHINE_NAME}" echo " - On Linux, user isn't in 'docker' group. Add and relogin." echo " - Something like 'sudo usermod -a -G docker ${USER-user}'" echo " - RHEL7 bug and workaround: https://bugzilla.redhat.com/show_bug.cgi?id=1119282#c8" @@ -552,16 +559,6 @@ function kube::build::clean_images() { } function kube::build::ensure_data_container() { - # This is temporary, while last remnants of _workspace are obliterated. If - # the data container exists it might be from before the change from - # Godeps/_workspace/ to vendor/, and thereby still have a Godeps/_workspace/ - # directory in it, which trips up godep (yay godep!). Once we are confident - # that this has run ~everywhere we care about, we can remove this. - # TODO(thockin): remove this after v1.3 is cut. - if "${DOCKER[@]}" inspect "${KUBE_BUILD_DATA_CONTAINER_NAME}" \ - | grep -q "Godeps/_workspace/pkg"; then - docker rm -f "${KUBE_BUILD_DATA_CONTAINER_NAME}" - fi if ! "${DOCKER[@]}" inspect "${KUBE_BUILD_DATA_CONTAINER_NAME}" >/dev/null 2>&1; then kube::log::status "Creating data container" local -ra docker_cmd=( @@ -1204,6 +1201,16 @@ function kube::release::gcs::copy_release_artifacts() { fi gsutil ls -lhr "${gcs_destination}" || return 1 + + if [[ -n "${KUBE_GCS_RELEASE_BUCKET_MIRROR:-}" ]]; then + local -r gcs_mirror="gs://${KUBE_GCS_RELEASE_BUCKET_MIRROR}/${KUBE_GCS_RELEASE_PREFIX}" + kube::log::status "Mirroring build to ${gcs_mirror}" + gsutil -q -m "${gcs_options[@]+${gcs_options[@]}}" rsync -d -r "${gcs_destination}" "${gcs_mirror}" || return 1 + if [[ ${KUBE_GCS_MAKE_PUBLIC} =~ ^[yY]$ ]]; then + kube::log::status "Marking all uploaded mirror objects public" + gsutil -q -m acl ch -R -g all:R "${gcs_mirror}" >/dev/null 2>&1 || return 1 + fi + fi } # Publish a new ci version, (latest,) but only if the release files actually @@ -1468,7 +1475,19 @@ function kube::release::gcs::verify_ci_ge() { # If new version is greater than the GCS version function kube::release::gcs::publish() { local -r publish_file="${1-}" - local -r publish_file_dst="gs://${KUBE_GCS_RELEASE_BUCKET}/${publish_file}" + + kube::release::gcs::publish_to_bucket "${KUBE_GCS_RELEASE_BUCKET}" "${publish_file}" || return 1 + + if [[ -n "${KUBE_GCS_RELEASE_BUCKET_MIRROR:-}" ]]; then + kube::release::gcs::publish_to_bucket "${KUBE_GCS_RELEASE_BUCKET_MIRROR}" "${publish_file}" || return 1 + fi +} + + +function kube::release::gcs::publish_to_bucket() { + local -r publish_bucket="${1}" + local -r publish_file="${2}" + local -r publish_file_dst="gs://${publish_bucket}/${publish_file}" mkdir -p "${RELEASE_STAGE}/upload" || return 1 echo "${KUBE_GCS_PUBLISH_VERSION}" > "${RELEASE_STAGE}/upload/latest" || return 1 @@ -1481,7 +1500,7 @@ function kube::release::gcs::publish() { gsutil acl ch -R -g all:R "${publish_file_dst}" >/dev/null 2>&1 || return 1 gsutil setmeta -h "Cache-Control:private, max-age=0" "${publish_file_dst}" >/dev/null 2>&1 || return 1 # If public, validate public link - local -r public_link="https://storage.googleapis.com/${KUBE_GCS_RELEASE_BUCKET}/${publish_file}" + local -r public_link="https://storage.googleapis.com/${publish_bucket}/${publish_file}" kube::log::status "Validating uploaded version file at ${public_link}" contents="$(curl -s "${public_link}")" else diff --git a/build/copy-output.sh b/build/copy-output.sh index 11a062e6dcf..97acc456c94 100755 --- a/build/copy-output.sh +++ b/build/copy-output.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/debian-iptables/Dockerfile b/build/debian-iptables/Dockerfile index 2d5c9d8c477..7c1c4d88640 100644 --- a/build/debian-iptables/Dockerfile +++ b/build/debian-iptables/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/debian-iptables/Makefile b/build/debian-iptables/Makefile index 79e1deccf02..8be9b5b00b6 100644 --- a/build/debian-iptables/Makefile +++ b/build/debian-iptables/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/json-extractor.py b/build/json-extractor.py index 67b4f7a9df1..dfc0422859f 100755 --- a/build/json-extractor.py +++ b/build/json-extractor.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/kube-dns/Changelog b/build/kube-dns/Changelog index 020953e1dd8..73b89805c1d 100644 --- a/build/kube-dns/Changelog +++ b/build/kube-dns/Changelog @@ -3,3 +3,9 @@ ## Version 1.3 (Fri June 3 2016 Prashanth.B ) - Fixed SRV record lookup (issue #26116) + + ## Version 1.4 (Tue June 21 2016 Nikhil Jindal ) + - Initialising nodesStore (issue #27820) + + ## Version 1.5 (Thu June 23 2016 Nikhil Jindal ) + - Adding support to return local service (pr #27708) diff --git a/build/kube-dns/Dockerfile b/build/kube-dns/Dockerfile index 6e72d95a750..0ce83504c55 100644 --- a/build/kube-dns/Dockerfile +++ b/build/kube-dns/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/kube-dns/Makefile b/build/kube-dns/Makefile index 247a39e6f2d..d43a1677f4c 100644 --- a/build/kube-dns/Makefile +++ b/build/kube-dns/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,12 +17,12 @@ # If you update this image please bump the tag value before pushing. # # Usage: -# [ARCH=amd64] [TAG=1.3] [REGISTRY=gcr.io/google_containers] [BASEIMAGE=busybox] make (container|push) +# [ARCH=amd64] [TAG=1.6] [REGISTRY=gcr.io/google_containers] [BASEIMAGE=busybox] make (container|push) # Default registry, arch and tag. This can be overwritten by arguments to make PLATFORM?=linux ARCH?=amd64 -TAG?=1.3 +TAG?=1.6 REGISTRY?=gcr.io/google_containers GOLANG_VERSION=1.6 diff --git a/build/make-build-image.sh b/build/make-build-image.sh index 5a6e1b2a99f..cc92ae1e7aa 100755 --- a/build/make-build-image.sh +++ b/build/make-build-image.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/make-clean.sh b/build/make-clean.sh index ad4595ab61d..5fcfd075623 100755 --- a/build/make-clean.sh +++ b/build/make-clean.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/make-release-notes.sh b/build/make-release-notes.sh index 43379590772..23355579d06 100755 --- a/build/make-release-notes.sh +++ b/build/make-release-notes.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/pause/Dockerfile b/build/pause/Dockerfile index b565b631f74..09f713292b3 100644 --- a/build/pause/Dockerfile +++ b/build/pause/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/pause/Makefile b/build/pause/Makefile index e4ca218e29d..0471838ed02 100644 --- a/build/pause/Makefile +++ b/build/pause/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/pause/pause.c b/build/pause/pause.c index 375a38a26e7..ffbceb69fbe 100644 --- a/build/pause/pause.c +++ b/build/pause/pause.c @@ -1,5 +1,5 @@ /* -Copyright 2016 The Kubernetes Authors All rights reserved. +Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/build/push-ci-build.sh b/build/push-ci-build.sh index 6d74878ffad..10892982f6f 100755 --- a/build/push-ci-build.sh +++ b/build/push-ci-build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ KUBE_GCS_MAKE_PUBLIC='y' KUBE_GCS_UPLOAD_RELEASE='y' KUBE_GCS_DELETE_EXISTING='n' : ${KUBE_GCS_RELEASE_BUCKET:='kubernetes-release'} +: ${KUBE_GCS_RELEASE_BUCKET_MIRROR:='kubernetes-release-dev'} KUBE_GCS_RELEASE_PREFIX="ci/${LATEST}" KUBE_GCS_PUBLISH_VERSION="${LATEST}" diff --git a/build/push-devel-build.sh b/build/push-devel-build.sh index 849c7f452a6..ebb5c5235a9 100755 --- a/build/push-devel-build.sh +++ b/build/push-devel-build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2015 The Kubernetes Authors All rights reserved. +# Copyright 2015 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/push-federation-images.sh b/build/push-federation-images.sh index 6c44cec6d8a..3ebf7d4dce2 100755 --- a/build/push-federation-images.sh +++ b/build/push-federation-images.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/push-official-release.sh b/build/push-official-release.sh index d73d4ab3a57..f3b91993735 100755 --- a/build/push-official-release.sh +++ b/build/push-official-release.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/release.sh b/build/release.sh index def030c7d40..b5d99e45538 100755 --- a/build/release.sh +++ b/build/release.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/run.sh b/build/run.sh index 4f1c1bca3e3..af6e92dfa3f 100755 --- a/build/run.sh +++ b/build/run.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/shell.sh b/build/shell.sh index 58893d42db3..071b7be4d75 100755 --- a/build/shell.sh +++ b/build/shell.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/util.sh b/build/util.sh index aa360225a8d..d03048c346a 100644 --- a/build/util.sh +++ b/build/util.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/build/versionize-docs.sh b/build/versionize-docs.sh index f987afc8587..221ebe61071 100755 --- a/build/versionize-docs.sh +++ b/build/versionize-docs.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2015 The Kubernetes Authors All rights reserved. +# Copyright 2015 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/addon-manager/Dockerfile b/cluster/addons/addon-manager/Dockerfile index c33994394eb..f6b9cf0d6e1 100644 --- a/cluster/addons/addon-manager/Dockerfile +++ b/cluster/addons/addon-manager/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/addon-manager/Makefile b/cluster/addons/addon-manager/Makefile index b7cfb23fd39..5e02f364188 100644 --- a/cluster/addons/addon-manager/Makefile +++ b/cluster/addons/addon-manager/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,26 +15,26 @@ IMAGE=gcr.io/google-containers/kube-addon-manager ARCH?=amd64 TEMP_DIR:=$(shell mktemp -d) -VERSION=v3 +VERSION=v5 # amd64 and arm has "stable" binaries pushed for v1.2, arm64 and ppc64le hasn't so they have to fetch the latest alpha # however, arm64 and ppc64le are very experimental right now, so it's okay ifeq ($(ARCH),amd64) - KUBECTL_VERSION?=v1.2.4 + KUBECTL_VERSION?=v1.3.0-beta.2 BASEIMAGE?=python:2.7-slim endif ifeq ($(ARCH),arm) - KUBECTL_VERSION?=v1.2.4 + KUBECTL_VERSION?=v1.3.0-beta.2 BASEIMAGE?=hypriot/rpi-python:2.7 QEMUARCH=arm endif ifeq ($(ARCH),arm64) - KUBECTL_VERSION?=v1.3.0-beta.0 + KUBECTL_VERSION?=v1.3.0-beta.2 BASEIMAGE?=aarch64/python:2.7-slim QEMUARCH=aarch64 endif ifeq ($(ARCH),ppc64le) - KUBECTL_VERSION?=v1.3.0-alpha.4 + KUBECTL_VERSION?=v1.3.0-beta.2 BASEIMAGE?=ppc64le/python:2.7-slim QEMUARCH=ppc64le endif diff --git a/cluster/addons/addon-manager/kube-addon-update.sh b/cluster/addons/addon-manager/kube-addon-update.sh index 8b38b5ea3a3..fca7ec230f4 100755 --- a/cluster/addons/addon-manager/kube-addon-update.sh +++ b/cluster/addons/addon-manager/kube-addon-update.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2015 The Kubernetes Authors All rights reserved. +# Copyright 2015 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -477,6 +477,7 @@ function update-addons() { reconcile-objects ${addon_path} ReplicationController "-" & reconcile-objects ${addon_path} Deployment "-" & reconcile-objects ${addon_path} DaemonSet "-" & + reconcile-objects ${addon_path} PetSet "-" & # We don't expect names to be versioned for the following kinds, so # we match the entire name, ignoring version suffix. diff --git a/cluster/addons/addon-manager/kube-addons.sh b/cluster/addons/addon-manager/kube-addons.sh index c532a1d46b2..f62a192512d 100755 --- a/cluster/addons/addon-manager/kube-addons.sh +++ b/cluster/addons/addon-manager/kube-addons.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2014 The Kubernetes Authors All rights reserved. +# Copyright 2014 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ # managed result is of that. Start everything below that directory. KUBECTL=${KUBECTL_BIN:-/usr/local/bin/kubectl} -ADDON_CHECK_INTERVAL_SEC=${TEST_ADDON_CHECK_INTERVAL_SEC:-10} +ADDON_CHECK_INTERVAL_SEC=${TEST_ADDON_CHECK_INTERVAL_SEC:-60} SYSTEM_NAMESPACE=kube-system trusty_master=${TRUSTY_MASTER:-false} diff --git a/cluster/addons/cluster-monitoring/influxdb/influxdb-claim.yaml b/cluster/addons/cluster-monitoring/influxdb/influxdb-claim.yaml new file mode 100644 index 00000000000..d58bca264ca --- /dev/null +++ b/cluster/addons/cluster-monitoring/influxdb/influxdb-claim.yaml @@ -0,0 +1,15 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: influxdb-claim + namespace: kube-system + labels: + kubernetes.io/cluster-service: "true" +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + volumeName: influxdb-pv + diff --git a/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-petset.yaml similarity index 94% rename from cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml rename to cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-petset.yaml index e6249666b76..e9048c2611d 100644 --- a/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-petset.yaml @@ -1,5 +1,5 @@ -apiVersion: v1 -kind: ReplicationController +apiVersion: apps/v1alpha1 +kind: PetSet metadata: name: monitoring-influxdb-grafana-v3 namespace: kube-system @@ -9,9 +9,6 @@ metadata: kubernetes.io/cluster-service: "true" spec: replicas: 1 - selector: - k8s-app: influxGrafana - version: v3 template: metadata: labels: @@ -68,7 +65,8 @@ spec: mountPath: /var volumes: - name: influxdb-persistent-storage - emptyDir: {} + persistentVolumeClaim: + claimName: influxdb-claim - name: grafana-persistent-storage emptyDir: {} - + serviceName: monitoring-influxdb diff --git a/cluster/addons/cluster-monitoring/influxdb/influxdb-pv.yaml b/cluster/addons/cluster-monitoring/influxdb/influxdb-pv.yaml new file mode 100644 index 00000000000..76d091cdd63 --- /dev/null +++ b/cluster/addons/cluster-monitoring/influxdb/influxdb-pv.yaml @@ -0,0 +1,20 @@ +{% set pd_prefix = pillar.get('master_name', '') -%} +{% set pd_name = pd_prefix + '-influxdb-pd') -%} + +kind: PersistentVolume +apiVersion: v1 +metadata: + name: influxdb-pv + namespace: kube-system + labels: + kubernetes.io/cluster-service: "true" +spec: + capacity: + storage: 10Gi + accessModes: + - ReadWriteOnce + - ReadOnlyMany + gcePersistentDisk: + pdName: {{ pd_name }} + fsType: ext4 + persistentVolumeReclaimPolicy: Delete diff --git a/cluster/addons/dashboard/dashboard-controller.yaml b/cluster/addons/dashboard/dashboard-controller.yaml index 3a73df6c8b1..1afc8050bc1 100644 --- a/cluster/addons/dashboard/dashboard-controller.yaml +++ b/cluster/addons/dashboard/dashboard-controller.yaml @@ -2,11 +2,11 @@ apiVersion: v1 kind: ReplicationController metadata: - name: kubernetes-dashboard-v1.1.0-beta3 + name: kubernetes-dashboard-v1.1.0 namespace: kube-system labels: k8s-app: kubernetes-dashboard - version: v1.1.0-beta3 + version: v1.1.0 kubernetes.io/cluster-service: "true" spec: replicas: 1 @@ -16,12 +16,12 @@ spec: metadata: labels: k8s-app: kubernetes-dashboard - version: v1.1.0-beta3 + version: v1.1.0 kubernetes.io/cluster-service: "true" spec: containers: - name: kubernetes-dashboard - image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.1.0-beta3 + image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.1.0 resources: # keep request = limit to keep this container in guaranteed class limits: diff --git a/cluster/addons/fluentd-elasticsearch/es-image/Dockerfile b/cluster/addons/fluentd-elasticsearch/es-image/Dockerfile index 8d98d45ac30..460155a072f 100644 --- a/cluster/addons/fluentd-elasticsearch/es-image/Dockerfile +++ b/cluster/addons/fluentd-elasticsearch/es-image/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/fluentd-elasticsearch/es-image/Makefile b/cluster/addons/fluentd-elasticsearch/es-image/Makefile index ffb0a1befee..40961f42918 100755 --- a/cluster/addons/fluentd-elasticsearch/es-image/Makefile +++ b/cluster/addons/fluentd-elasticsearch/es-image/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/fluentd-elasticsearch/es-image/elasticsearch_logging_discovery.go b/cluster/addons/fluentd-elasticsearch/es-image/elasticsearch_logging_discovery.go index fd8422f5be5..702cb123071 100644 --- a/cluster/addons/fluentd-elasticsearch/es-image/elasticsearch_logging_discovery.go +++ b/cluster/addons/fluentd-elasticsearch/es-image/elasticsearch_logging_discovery.go @@ -1,5 +1,5 @@ /* -Copyright 2015 The Kubernetes Authors All rights reserved. +Copyright 2015 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package main import ( "flag" "fmt" + "os" "strings" "time" @@ -45,12 +46,20 @@ func main() { if err != nil { glog.Fatalf("Failed to make client: %v", err) } + namespace := api.NamespaceSystem + envNamespace := os.Getenv("NAMESPACE") + if envNamespace != "" { + if _, err := c.Namespaces().Get(envNamespace); err != nil { + glog.Fatalf("%s namespace doesn't exist: %v", envNamespace, err) + } + namespace = envNamespace + } var elasticsearch *api.Service // Look for endpoints associated with the Elasticsearch loggging service. // First wait for the service to become available. for t := time.Now(); time.Since(t) < 5*time.Minute; time.Sleep(10 * time.Second) { - elasticsearch, err = c.Services(api.NamespaceSystem).Get("elasticsearch-logging") + elasticsearch, err = c.Services(namespace).Get("elasticsearch-logging") if err == nil { break } @@ -67,7 +76,7 @@ func main() { // Wait for some endpoints. count := 0 for t := time.Now(); time.Since(t) < 5*time.Minute; time.Sleep(10 * time.Second) { - endpoints, err = c.Endpoints(api.NamespaceSystem).Get("elasticsearch-logging") + endpoints, err = c.Endpoints(namespace).Get("elasticsearch-logging") if err != nil { continue } diff --git a/cluster/addons/fluentd-elasticsearch/es-image/run.sh b/cluster/addons/fluentd-elasticsearch/es-image/run.sh index 67ff30009a3..307b5342346 100755 --- a/cluster/addons/fluentd-elasticsearch/es-image/run.sh +++ b/cluster/addons/fluentd-elasticsearch/es-image/run.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2015 The Kubernetes Authors All rights reserved. +# Copyright 2015 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile b/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile index cf91f95d6c4..61ea81cc7c2 100644 --- a/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile +++ b/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Makefile b/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Makefile index 9b2a3fc4914..dd78b15b344 100644 --- a/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Makefile +++ b/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/fluentd-elasticsearch/kibana-image/Dockerfile b/cluster/addons/fluentd-elasticsearch/kibana-image/Dockerfile index 50d0a2c4db8..81587e10898 100644 --- a/cluster/addons/fluentd-elasticsearch/kibana-image/Dockerfile +++ b/cluster/addons/fluentd-elasticsearch/kibana-image/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/fluentd-elasticsearch/kibana-image/Makefile b/cluster/addons/fluentd-elasticsearch/kibana-image/Makefile index 55bcfe5fc44..4033faa8614 100755 --- a/cluster/addons/fluentd-elasticsearch/kibana-image/Makefile +++ b/cluster/addons/fluentd-elasticsearch/kibana-image/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/fluentd-elasticsearch/kibana-image/run.sh b/cluster/addons/fluentd-elasticsearch/kibana-image/run.sh index 181b835d609..a2db75a01cb 100755 --- a/cluster/addons/fluentd-elasticsearch/kibana-image/run.sh +++ b/cluster/addons/fluentd-elasticsearch/kibana-image/run.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2015 The Kubernetes Authors All rights reserved. +# Copyright 2015 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/cluster/addons/fluentd-gcp/fluentd-gcp-image/Dockerfile b/cluster/addons/fluentd-gcp/fluentd-gcp-image/Dockerfile index 731af6845b6..da88f90d522 100644 --- a/cluster/addons/fluentd-gcp/fluentd-gcp-image/Dockerfile +++ b/cluster/addons/fluentd-gcp/fluentd-gcp-image/Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,9 +18,9 @@ # Logging API. This configuration assumes that the host performning # the collection is a VM that has been created with a logging.write # scope and that the Logging API has been enabled for the project -# in the Google Developer Console. +# in the Google Developer Console. -FROM ubuntu:14.04 +FROM ubuntu:16.04 MAINTAINER Alex Robinson "arob@google.com" # Disable prompts from apt. @@ -30,17 +30,24 @@ ENV DO_NOT_INSTALL_CATCH_ALL_CONFIG true RUN apt-get -q update && \ apt-get install -y curl && \ + apt-get install -y gcc && \ + apt-get install -y make && \ apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ curl -s https://dl.google.com/cloudagents/install-logging-agent.sh | bash -# Install the record reformer plugin. -RUN /usr/sbin/google-fluentd-gem install fluent-plugin-record-reformer +# Install the record reformer and systemd plugins. +RUN /usr/sbin/google-fluentd-gem install fluent-plugin-record-reformer -v 0.8.1 +RUN /usr/sbin/google-fluentd-gem install fluent-plugin-systemd -v 0.0.3 # Remove the misleading log file that gets generated when the agent is installed RUN rm -rf /var/log/google-fluentd -# Copy the Fluentd configuration file for logging Docker container logs. +# Copy the Fluentd configuration files for logging Docker container logs. +# Either configuration file can be used by specifying `-c ` as a command +# line argument. COPY google-fluentd.conf /etc/google-fluentd/google-fluentd.conf +COPY google-fluentd-journal.conf /etc/google-fluentd/google-fluentd-journal.conf # Start Fluentd to pick up our config that watches Docker container logs. CMD /usr/sbin/google-fluentd "$FLUENTD_ARGS" diff --git a/cluster/addons/fluentd-gcp/fluentd-gcp-image/Makefile b/cluster/addons/fluentd-gcp/fluentd-gcp-image/Makefile index 95b77f33c62..d7f1cb0152d 100644 --- a/cluster/addons/fluentd-gcp/fluentd-gcp-image/Makefile +++ b/cluster/addons/fluentd-gcp/fluentd-gcp-image/Makefile @@ -1,4 +1,4 @@ -# Copyright 2016 The Kubernetes Authors All rights reserved. +# Copyright 2016 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -28,7 +28,7 @@ .PHONY: kbuild kpush -TAG = 1.20 +TAG = 1.21 # Rules for building the test image for deployment to Dockerhub with user kubernetes. diff --git a/cluster/addons/fluentd-gcp/fluentd-gcp-image/google-fluentd-journal.conf b/cluster/addons/fluentd-gcp/fluentd-gcp-image/google-fluentd-journal.conf new file mode 100644 index 00000000000..b0a4fd401ab --- /dev/null +++ b/cluster/addons/fluentd-gcp/fluentd-gcp-image/google-fluentd-journal.conf @@ -0,0 +1,249 @@ +# This configuration file for Fluentd / td-agent is used +# to watch changes to Docker log files that live in the +# directory /var/lib/docker/containers/ and are symbolically +# linked to from the /var/log directory using names that capture the +# pod name and container name. These logs are then submitted to +# Google Cloud Logging which assumes the installation of the cloud-logging plug-in. +# +# This configuration is almost identical to google-fluentd.conf, with the one +# difference being that this collects systemd journal logs. +# +# Example +# ======= +# A line in the Docker log file might like like this JSON: +# +# {"log":"2014/09/25 21:15:03 Got request with path wombat\n", +# "stream":"stderr", +# "time":"2014-09-25T21:15:03.499185026Z"} +# +# The record reformer is used to write the tag to focus on the pod name +# and the Kubernetes container name. For example a Docker container's logs +# might be in the directory: +# /var/lib/docker/containers/997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b +# and in the file: +# 997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b-json.log +# where 997599971ee6... is the Docker ID of the running container. +# The Kubernetes kubelet makes a symbolic link to this file on the host machine +# in the /var/log/containers directory which includes the pod name and the Kubernetes +# container name: +# synthetic-logger-0.25lps-pod_default-synth-lgr-997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b.log +# -> +# /var/lib/docker/containers/997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b/997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b-json.log +# The /var/log directory on the host is mapped to the /var/log directory in the container +# running this instance of Fluentd and we end up collecting the file: +# /var/log/containers/synthetic-logger-0.25lps-pod_default-synth-lgr-997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b.log +# This results in the tag: +# var.log.containers.synthetic-logger-0.25lps-pod_default-synth-lgr-997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b.log +# The record reformer is used is discard the var.log.containers prefix and +# the Docker container ID suffix and "kubernetes." is pre-pended giving the +# final tag which is ingested into Elasticsearch: +# kubernetes.synthetic-logger-0.25lps-pod_default-synth-lgr +# This makes it easier for users to search for logs by pod name or by +# the name of the Kubernetes container regardless of how many times the +# Kubernetes pod has been restarted (resulting in a several Docker container IDs). + +# Do not directly collect fluentd's own logs to avoid infinite loops. + + type null + + +# Example: +# {"log":"[info:2016-02-16T16:04:05.930-08:00] Some log text here\n","stream":"stdout","time":"2016-02-17T00:04:05.931087621Z"} + + type tail + format json + time_key time + path /var/log/containers/*.log + pos_file /var/log/gcp-containers.log.pos + time_format %Y-%m-%dT%H:%M:%S.%NZ + tag reform.* + read_from_head true + + + + type record_reformer + enable_ruby true + tag kubernetes.${tag_suffix[4].split('-')[0..-2].join('-')} + + +# Example: +# 2015-12-21 23:17:22,066 [salt.state ][INFO ] Completed state [net.ipv4.ip_forward] at time 23:17:22.066081 + + type tail + format /^(?