Update docs/ URLs to point to proper locations

parent a552ee61
<!-- Thanks for sending a pull request! Here are some tips for you: <!-- Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, read our contributor guidelines https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#the-pr-submit-process and developer guide https://github.com/kubernetes/community/blob/master/contributors/devel/development.md#development-guide 1. If this is your first time, read our contributor guidelines https://git.k8s.io/community/contributors/devel/pull-requests.md#the-pr-submit-process and developer guide https://git.k8s.io/community/contributors/devel/development.md#development-guide
2. If you want *faster* PR reviews, read how: https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#best-practices-for-faster-reviews 2. If you want *faster* PR reviews, read how: https://git.k8s.io/community/contributors/devel/pull-requests.md#best-practices-for-faster-reviews
3. Follow the instructions for writing a release note: https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#write-release-notes-if-needed 3. Follow the instructions for writing a release note: https://git.k8s.io/community/contributors/devel/pull-requests.md#write-release-notes-if-needed
--> -->
**What this PR does / why we need it**: **What this PR does / why we need it**:
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -43,11 +43,11 @@ ...@@ -43,11 +43,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"versions": { "versions": {
"type": "array", "type": "array",
......
...@@ -42,11 +42,11 @@ ...@@ -42,11 +42,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"groups": { "groups": {
"type": "array", "type": "array",
...@@ -68,11 +68,11 @@ ...@@ -68,11 +68,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
The scripts and data in this directory automate creation and configuration of a Kubernetes cluster, including networking, DNS, nodes, and master components. The scripts and data in this directory automate creation and configuration of a Kubernetes cluster, including networking, DNS, nodes, and master components.
See the [getting-started guides](../docs/getting-started-guides) for examples of how to use the scripts. See the [getting-started guides](https://kubernetes.io/docs/getting-started-guides) for examples of how to use the scripts.
*cloudprovider*/`config-default.sh` contains a set of tweakable definitions/parameters for the cluster. *cloudprovider*/`config-default.sh` contains a set of tweakable definitions/parameters for the cluster.
......
...@@ -4,13 +4,13 @@ This cluster addon is composed of: ...@@ -4,13 +4,13 @@ This cluster addon is composed of:
* A [Google L7 LoadBalancer Controller](https://github.com/kubernetes/contrib/tree/master/ingress/controllers/gce) * A [Google L7 LoadBalancer Controller](https://github.com/kubernetes/contrib/tree/master/ingress/controllers/gce)
* A [404 default backend](https://github.com/kubernetes/contrib/tree/master/404-server) Service + RC * A [404 default backend](https://github.com/kubernetes/contrib/tree/master/404-server) Service + RC
It relies on the [Ingress resource](../../../../docs/user-guide/ingress.md) only available in Kubernetes version 1.1 and beyond. It relies on the [Ingress resource](https://kubernetes.io/docs/user-guide/ingress.md) only available in Kubernetes version 1.1 and beyond.
## Prerequisites ## Prerequisites
Before you can receive traffic through the GCE L7 Loadbalancer Controller you need: Before you can receive traffic through the GCE L7 Loadbalancer Controller you need:
* A Working Kubernetes 1.1 cluster * A Working Kubernetes 1.1 cluster
* At least 1 Kubernetes [NodePort Service](../../../../docs/user-guide/services.md#type-nodeport) (this is the endpoint for your Ingress) * At least 1 Kubernetes [NodePort Service](https://kubernetes.io/docs/user-guide/services.md#type-nodeport) (this is the endpoint for your Ingress)
* Firewall-rules that allow traffic to the NodePort service, as indicated by `kubectl` at Service creation time * Firewall-rules that allow traffic to the NodePort service, as indicated by `kubectl` at Service creation time
* Adequate quota, as mentioned in the next section * Adequate quota, as mentioned in the next section
* A single instance of the L7 Loadbalancer Controller pod (if you're using the default GCE setup, this should already be running in the `kube-system` namespace) * A single instance of the L7 Loadbalancer Controller pod (if you're using the default GCE setup, this should already be running in the `kube-system` namespace)
......
...@@ -52,7 +52,7 @@ spec: ...@@ -52,7 +52,7 @@ spec:
If, for example, you wanted to use NFS you would just need to change the If, for example, you wanted to use NFS you would just need to change the
`gcePersistentDisk` block to `nfs`. See `gcePersistentDisk` block to `nfs`. See
[here](../../../docs/user-guide/volumes.md) for more details on volumes. [here](https://kubernetes.io/docs/user-guide/volumes.md) for more details on volumes.
Note that in any case, the storage (in the case the GCE PersistentDisk) must be Note that in any case, the storage (in the case the GCE PersistentDisk) must be
created independently - this is not something Kubernetes manages for you (yet). created independently - this is not something Kubernetes manages for you (yet).
......
# SaltStack configuration # SaltStack configuration
This is the root of the SaltStack configuration for Kubernetes. A high This is the root of the SaltStack configuration for Kubernetes. A high
level overview for the Kubernetes SaltStack configuration can be found [in the docs tree.](../../docs/admin/salt.md) level overview for the Kubernetes SaltStack configuration can be found [in the docs tree.](https://kubernetes.io/docs/admin/salt.md)
This SaltStack configuration currently applies to default This SaltStack configuration currently applies to default
configurations for Debian-on-GCE, Fedora-on-Vagrant, Ubuntu-on-AWS and configurations for Debian-on-GCE, Fedora-on-Vagrant, Ubuntu-on-AWS and
......
...@@ -67,7 +67,7 @@ func NewCmdToken(out io.Writer, errW io.Writer) *cobra.Command { ...@@ -67,7 +67,7 @@ func NewCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
You can read more about Bootstrap Tokens in this proposal: You can read more about Bootstrap Tokens in this proposal:
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/bootstrap-discovery.md https://git.k8s.io/community/contributors/design-proposals/bootstrap-discovery.md
`), `),
// Without this callback, if a user runs just the "token" // Without this callback, if a user runs just the "token"
......
...@@ -294,10 +294,10 @@ func (c *kubeletConfiguration) addFlags(fs *pflag.FlagSet) { ...@@ -294,10 +294,10 @@ func (c *kubeletConfiguration) addFlags(fs *pflag.FlagSet) {
// Node Allocatable Flags // Node Allocatable Flags
fs.Var(&c.SystemReserved, "system-reserved", "A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=500Mi) pairs that describe resources reserved for non-kubernetes components. Currently only cpu and memory are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. [default=none]") fs.Var(&c.SystemReserved, "system-reserved", "A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=500Mi) pairs that describe resources reserved for non-kubernetes components. Currently only cpu and memory are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. [default=none]")
fs.Var(&c.KubeReserved, "kube-reserved", "A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=500Mi, storage=1Gi) pairs that describe resources reserved for kubernetes system components. Currently cpu, memory and local storage for root file system are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. [default=none]") fs.Var(&c.KubeReserved, "kube-reserved", "A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=500Mi, storage=1Gi) pairs that describe resources reserved for kubernetes system components. Currently cpu, memory and local storage for root file system are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. [default=none]")
fs.StringSliceVar(&c.EnforceNodeAllocatable, "enforce-node-allocatable", c.EnforceNodeAllocatable, "A comma separated list of levels of node allocatable enforcement to be enforced by kubelet. Acceptible options are 'pods', 'system-reserved' & 'kube-reserved'. If the latter two options are specified, '--system-reserved-cgroup' & '--kube-reserved-cgroup' must also be set respectively. See https://github.com/kubernetes/community/blob/master/contributors/design-proposals/node-allocatable.md for more details.") fs.StringSliceVar(&c.EnforceNodeAllocatable, "enforce-node-allocatable", c.EnforceNodeAllocatable, "A comma separated list of levels of node allocatable enforcement to be enforced by kubelet. Acceptible options are 'pods', 'system-reserved' & 'kube-reserved'. If the latter two options are specified, '--system-reserved-cgroup' & '--kube-reserved-cgroup' must also be set respectively. See https://git.k8s.io/community/contributors/design-proposals/node-allocatable.md for more details.")
fs.StringVar(&c.SystemReservedCgroup, "system-reserved-cgroup", c.SystemReservedCgroup, "Absolute name of the top level cgroup that is used to manage non-kubernetes components for which compute resources were reserved via '--system-reserved' flag. Ex. '/system-reserved'. [default='']") fs.StringVar(&c.SystemReservedCgroup, "system-reserved-cgroup", c.SystemReservedCgroup, "Absolute name of the top level cgroup that is used to manage non-kubernetes components for which compute resources were reserved via '--system-reserved' flag. Ex. '/system-reserved'. [default='']")
fs.StringVar(&c.KubeReservedCgroup, "kube-reserved-cgroup", c.KubeReservedCgroup, "Absolute name of the top level cgroup that is used to manage kubernetes components for which compute resources were reserved via '--kube-reserved' flag. Ex. '/kube-reserved'. [default='']") fs.StringVar(&c.KubeReservedCgroup, "kube-reserved-cgroup", c.KubeReservedCgroup, "Absolute name of the top level cgroup that is used to manage kubernetes components for which compute resources were reserved via '--kube-reserved' flag. Ex. '/kube-reserved'. [default='']")
fs.BoolVar(&c.ExperimentalNodeAllocatableIgnoreEvictionThreshold, "experimental-allocatable-ignore-eviction", c.ExperimentalNodeAllocatableIgnoreEvictionThreshold, "When set to 'true', Hard Eviction Thresholds will be ignored while calculating Node Allocatable. See https://github.com/kubernetes/community/blob/master/contributors/design-proposals/node-allocatable.md for more details. [default=false]") fs.BoolVar(&c.ExperimentalNodeAllocatableIgnoreEvictionThreshold, "experimental-allocatable-ignore-eviction", c.ExperimentalNodeAllocatableIgnoreEvictionThreshold, "When set to 'true', Hard Eviction Thresholds will be ignored while calculating Node Allocatable. See https://git.k8s.io/community/contributors/design-proposals/node-allocatable.md for more details. [default=false]")
fs.Var(&c.ExperimentalQOSReserved, "experimental-qos-reserved", "A set of ResourceName=Percentage (e.g. memory=50%) pairs that describe how pod resource requests are reserved at the QoS level. Currently only memory is supported. [default=none]") fs.Var(&c.ExperimentalQOSReserved, "experimental-qos-reserved", "A set of ResourceName=Percentage (e.g. memory=50%) pairs that describe how pod resource requests are reserved at the QoS level. Currently only memory is supported. [default=none]")
} }
See [generating-clientset.md](../../../../docs/devel/generating-clientset.md) See [generating-clientset.md](https://kubernetes.io/docs/devel/generating-clientset.md)
[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/cmd/libs/go2idl/client-gen/README.md?pixel)]() [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/cmd/libs/go2idl/client-gen/README.md?pixel)]()
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
This directory contains a number of examples of how to run This directory contains a number of examples of how to run
real applications with Kubernetes. real applications with Kubernetes.
Demonstrations of how to use specific Kubernetes features can be found in our [documents](../docs/). Demonstrations of how to use specific Kubernetes features can be found in our [documents](https://kubernetes.io/docs/).
### Maintained Examples ### Maintained Examples
......
...@@ -4,7 +4,7 @@ This is a toy example demonstrating how to use kubernetes DNS. ...@@ -4,7 +4,7 @@ This is a toy example demonstrating how to use kubernetes DNS.
### Step Zero: Prerequisites ### Step Zero: Prerequisites
This example assumes that you have forked the repository and [turned up a Kubernetes cluster](../../docs/getting-started-guides/). Make sure DNS is enabled in your setup, see [DNS doc](https://github.com/kubernetes/dns). This example assumes that you have forked the repository and [turned up a Kubernetes cluster](https://kubernetes.io/docs/getting-started-guides/). Make sure DNS is enabled in your setup, see [DNS doc](https://github.com/kubernetes/dns).
```sh ```sh
$ cd kubernetes $ cd kubernetes
......
...@@ -5,7 +5,7 @@ Current Elasticsearch version is `1.7.1`. ...@@ -5,7 +5,7 @@ Current Elasticsearch version is `1.7.1`.
[A more robust example that follows Elasticsearch best-practices of separating nodes concern is also available](production_cluster/README.md). [A more robust example that follows Elasticsearch best-practices of separating nodes concern is also available](production_cluster/README.md).
<img src="http://kubernetes.io/kubernetes/img/warning.png" alt="WARNING" width="25" height="25"> Current pod descriptors use an `emptyDir` for storing data in each data node container. This is meant to be for the sake of simplicity and [should be adapted according to your storage needs](../../docs/design/persistent-storage.md). <img src="http://kubernetes.io/kubernetes/img/warning.png" alt="WARNING" width="25" height="25"> Current pod descriptors use an `emptyDir` for storing data in each data node container. This is meant to be for the sake of simplicity and [should be adapted according to your storage needs](https://kubernetes.io/docs/design/persistent-storage.md).
## Docker image ## Docker image
......
...@@ -10,7 +10,7 @@ Before we start, one needs to know that Elasticsearch best-practices recommend t ...@@ -10,7 +10,7 @@ Before we start, one needs to know that Elasticsearch best-practices recommend t
This is enforced throughout this document. This is enforced throughout this document.
<img src="http://kubernetes.io/kubernetes/img/warning.png" alt="WARNING" width="25" height="25"> Current pod descriptors use an `emptyDir` for storing data in each data node container. This is meant to be for the sake of simplicity and [should be adapted according to your storage needs](../../../docs/design/persistent-storage.md). <img src="http://kubernetes.io/kubernetes/img/warning.png" alt="WARNING" width="25" height="25"> Current pod descriptors use an `emptyDir` for storing data in each data node container. This is meant to be for the sake of simplicity and [should be adapted according to your storage needs](https://kubernetes.io/docs/design/persistent-storage.md).
## Docker image ## Docker image
......
...@@ -18,13 +18,13 @@ If you are running a cluster in Google Container Engine (GKE), instead see the [ ...@@ -18,13 +18,13 @@ If you are running a cluster in Google Container Engine (GKE), instead see the [
### Step Zero: Prerequisites <a id="step-zero"></a> ### Step Zero: Prerequisites <a id="step-zero"></a>
This example assumes that you have a working cluster. See the [Getting Started Guides](../../docs/getting-started-guides/) for details about creating a cluster. This example assumes that you have a working cluster. See the [Getting Started Guides](https://kubernetes.io/docs/getting-started-guides/) for details about creating a cluster.
**Tip:** View all the `kubectl` commands, including their options and descriptions in the [kubectl CLI reference](../../docs/user-guide/kubectl/kubectl.md). **Tip:** View all the `kubectl` commands, including their options and descriptions in the [kubectl CLI reference](https://kubernetes.io/docs/user-guide/kubectl/kubectl.md).
### Step One: Create the Redis master pod<a id="step-one"></a> ### Step One: Create the Redis master pod<a id="step-one"></a>
Use the `examples/guestbook-go/redis-master-controller.json` file to create a [replication controller](../../docs/user-guide/replication-controller.md) and Redis master [pod](../../docs/user-guide/pods.md). The pod runs a Redis key-value server in a container. Using a replication controller is the preferred way to launch long-running pods, even for 1 replica, so that the pod benefits from the self-healing mechanism in Kubernetes (keeps the pods alive). Use the `examples/guestbook-go/redis-master-controller.json` file to create a [replication controller](https://kubernetes.io/docs/user-guide/replication-controller.md) and Redis master [pod](https://kubernetes.io/docs/user-guide/pods.md). The pod runs a Redis key-value server in a container. Using a replication controller is the preferred way to launch long-running pods, even for 1 replica, so that the pod benefits from the self-healing mechanism in Kubernetes (keeps the pods alive).
1. Use the [redis-master-controller.json](redis-master-controller.json) file to create the Redis master replication controller in your Kubernetes cluster by running the `kubectl create -f` *`filename`* command: 1. Use the [redis-master-controller.json](redis-master-controller.json) file to create the Redis master replication controller in your Kubernetes cluster by running the `kubectl create -f` *`filename`* command:
...@@ -69,7 +69,7 @@ Use the `examples/guestbook-go/redis-master-controller.json` file to create a [r ...@@ -69,7 +69,7 @@ Use the `examples/guestbook-go/redis-master-controller.json` file to create a [r
### Step Two: Create the Redis master service <a id="step-two"></a> ### Step Two: Create the Redis master service <a id="step-two"></a>
A Kubernetes [service](../../docs/user-guide/services.md) is a named load balancer that proxies traffic to one or more pods. The services in a Kubernetes cluster are discoverable inside other pods via environment variables or DNS. A Kubernetes [service](https://kubernetes.io/docs/user-guide/services.md) is a named load balancer that proxies traffic to one or more pods. The services in a Kubernetes cluster are discoverable inside other pods via environment variables or DNS.
Services find the pods to load balance based on pod labels. The pod that you created in Step One has the label `app=redis` and `role=master`. The selector field of the service determines which pods will receive the traffic sent to the service. Services find the pods to load balance based on pod labels. The pod that you created in Step One has the label `app=redis` and `role=master`. The selector field of the service determines which pods will receive the traffic sent to the service.
...@@ -263,7 +263,7 @@ redis-slave ...@@ -263,7 +263,7 @@ redis-slave
``` ```
Tip: To turn down your Kubernetes cluster, follow the corresponding instructions in the version of the Tip: To turn down your Kubernetes cluster, follow the corresponding instructions in the version of the
[Getting Started Guides](../../docs/getting-started-guides/) that you previously used to create your cluster. [Getting Started Guides](https://kubernetes.io/docs/getting-started-guides/) that you previously used to create your cluster.
<!-- BEGIN MUNGE: GENERATED_ANALYTICS --> <!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
......
...@@ -10,7 +10,7 @@ Examples are not: ...@@ -10,7 +10,7 @@ Examples are not:
* Full app deployments, ready to use, with no explanation. These * Full app deployments, ready to use, with no explanation. These
belong to [Helm charts](https://github.com/kubernetes/charts). belong to [Helm charts](https://github.com/kubernetes/charts).
* Simple toys to show how to use a Kubernetes feature. These belong in * Simple toys to show how to use a Kubernetes feature. These belong in
the [user guide](../docs/user-guide/). the [user guide](https://kubernetes.io/docs/user-guide/).
* Demos that follow a script to show a Kubernetes feature in * Demos that follow a script to show a Kubernetes feature in
action. Example: killing a node to demonstrate controller action. Example: killing a node to demonstrate controller
self-healing. self-healing.
...@@ -28,8 +28,8 @@ Examples are not: ...@@ -28,8 +28,8 @@ Examples are not:
commands (TL;DR / quickstart), without cloning the repo (kubectl commands (TL;DR / quickstart), without cloning the repo (kubectl
apply -f http://...). apply -f http://...).
* Points to documentation of prerequisites. * Points to documentation of prerequisites.
* [Create a cluster](../docs/getting-started-guides/) (e.g., single-node docker). * [Create a cluster](https://kubernetes.io/docs/getting-started-guides/) (e.g., single-node docker).
* [Setup kubectl](../docs/user-guide/prereqs.md). * [Setup kubectl](https://kubernetes.io/docs/user-guide/prereqs.md).
* etc. * etc.
* Should specify which release of Kubernetes is required and any other * Should specify which release of Kubernetes is required and any other
prerequisites, such as DNS, a cloudprovider with PV provisioning, a prerequisites, such as DNS, a cloudprovider with PV provisioning, a
...@@ -42,21 +42,21 @@ Examples are not: ...@@ -42,21 +42,21 @@ Examples are not:
### Throughout ### Throughout
* Should point to documentation on first mention: * Should point to documentation on first mention:
[kubectl](../docs/user-guide/kubectl-overview.md), [kubectl](https://kubernetes.io/docs/user-guide/kubectl-overview.md),
[pods](../docs/user-guide/pods.md), [pods](https://kubernetes.io/docs/user-guide/pods.md),
[services](../docs/user-guide/services.md), [services](https://kubernetes.io/docs/user-guide/services.md),
[deployments](../docs/user-guide/deployments.md), [deployments](https://kubernetes.io/docs/user-guide/deployments.md),
[replication controllers](../docs/user-guide/replication-controller.md), [replication controllers](https://kubernetes.io/docs/user-guide/replication-controller.md),
[jobs](../docs/user-guide/jobs.md), [jobs](https://kubernetes.io/docs/user-guide/jobs.md),
[labels](../docs/user-guide/labels.md), [labels](https://kubernetes.io/docs/user-guide/labels.md),
[persistent volumes](../docs/user-guide/persistent-volumes.md), [persistent volumes](https://kubernetes.io/docs/user-guide/persistent-volumes.md),
etc. etc.
* Most examples should be cloudprovider-independent (e.g., using PVCs, not PDs). * Most examples should be cloudprovider-independent (e.g., using PVCs, not PDs).
* Other examples with cloudprovider-specific bits could be somewhere else. * Other examples with cloudprovider-specific bits could be somewhere else.
* Actually show the app working -- console output, and or screenshots. * Actually show the app working -- console output, and or screenshots.
* Ascii animations and screencasts are recommended. * Ascii animations and screencasts are recommended.
* Follows [config best practices](../docs/user-guide/config-best-practices.md). * Follows [config best practices](https://kubernetes.io/docs/user-guide/config-best-practices.md).
* Shouldn't duplicate the [thorough walk-through](../docs/user-guide/#thorough-walkthrough). * Shouldn't duplicate the [thorough walk-through](https://kubernetes.io/docs/user-guide/#thorough-walkthrough).
* Docker images are pre-built, and source is contained in a subfolder. * Docker images are pre-built, and source is contained in a subfolder.
* Source is the Dockerfile and any custom files needed beyond the * Source is the Dockerfile and any custom files needed beyond the
upstream app being packaged. upstream app being packaged.
......
...@@ -8,7 +8,7 @@ https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/prereqs.md ...@@ -8,7 +8,7 @@ https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/prereqs.md
### Start MySQL Pod ### Start MySQL Pod
In Kubernetes a [_Pod_](../../docs/user-guide/pods.md) is the smallest deployable unit that can be created, scheduled, and managed. It's a collocated group of containers that share an IP and storage volume. In Kubernetes a [_Pod_](https://kubernetes.io/docs/user-guide/pods.md) is the smallest deployable unit that can be created, scheduled, and managed. It's a collocated group of containers that share an IP and storage volume.
Here is the config for MySQL pod: [mysql-pod.yaml](mysql-pod.yaml) Here is the config for MySQL pod: [mysql-pod.yaml](mysql-pod.yaml)
...@@ -36,7 +36,7 @@ Wait for the status to `1/1` and `Running`. ...@@ -36,7 +36,7 @@ Wait for the status to `1/1` and `Running`.
### Start MySQL Service ### Start MySQL Service
We are creating a [_Service_](../../docs/user-guide/services.md) to expose the TCP port of the MySQL server. A Service distributes traffic across a set of Pods. The order of Service and the targeted Pods does not matter. However Service needs to be started before any other Pods consuming the Service are started. We are creating a [_Service_](https://kubernetes.io/docs/user-guide/services.md) to expose the TCP port of the MySQL server. A Service distributes traffic across a set of Pods. The order of Service and the targeted Pods does not matter. However Service needs to be started before any other Pods consuming the Service are started.
In this application, we will use a Kubernetes Service to provide a discoverable endpoints for the MySQL endpoint in the cluster. MySQL service target pods with the labels `name: mysql-pod` and `context: docker-k8s-lab`. In this application, we will use a Kubernetes Service to provide a discoverable endpoints for the MySQL endpoint in the cluster. MySQL service target pods with the labels `name: mysql-pod` and `context: docker-k8s-lab`.
...@@ -78,7 +78,7 @@ Our service name is ``mysql-service'' and so ``MYSQL_SERVICE_SERVICE_HOST'' and ...@@ -78,7 +78,7 @@ Our service name is ``mysql-service'' and so ``MYSQL_SERVICE_SERVICE_HOST'' and
WildFly is a lightweight Java EE 7 compliant application server. It is wrapped in a Replication Controller and used as the Java EE runtime. WildFly is a lightweight Java EE 7 compliant application server. It is wrapped in a Replication Controller and used as the Java EE runtime.
In Kubernetes a [_Replication Controller_](../../docs/user-guide/replication-controller.md) is responsible for replicating sets of identical pods. Like a _Service_ it has a selector query which identifies the members of it's set. Unlike a service it also has a desired number of replicas, and it will create or delete pods to ensure that the number of pods matches up with it's desired state. In Kubernetes a [_Replication Controller_](https://kubernetes.io/docs/user-guide/replication-controller.md) is responsible for replicating sets of identical pods. Like a _Service_ it has a selector query which identifies the members of it's set. Unlike a service it also has a desired number of replicas, and it will create or delete pods to ensure that the number of pods matches up with it's desired state.
Here is definition of the MySQL service: [wildfly-rc.yaml](wildfly-rc.yaml). Here is definition of the MySQL service: [wildfly-rc.yaml](wildfly-rc.yaml).
......
...@@ -34,7 +34,7 @@ Generally, we have to set up a distributed file system (NFS at least) volume to ...@@ -34,7 +34,7 @@ Generally, we have to set up a distributed file system (NFS at least) volume to
### How To Set this Up ### How To Set this Up
In Kubernetes a [_Pod_](../../docs/user-guide/pods.md) is the smallest deployable unit that can be created, scheduled, and managed. It's a collocated group of containers that share an IP and storage volume. In Kubernetes a [_Pod_](https://kubernetes.io/docs/user-guide/pods.md) is the smallest deployable unit that can be created, scheduled, and managed. It's a collocated group of containers that share an IP and storage volume.
Here is the config [javaweb.yaml](javaweb.yaml) for Java Web pod: Here is the config [javaweb.yaml](javaweb.yaml) for Java Web pod:
......
To access the Kubernetes API [from a Pod](../../docs/user-guide/accessing-the-cluster.md#accessing-the-api-from-a-pod) one of the solution is to run `kubectl proxy` in a so-called sidecar container within the Pod. To do this, you need to package `kubectl` in a container. It is useful when service accounts are being used for accessing the API and the old no-auth KUBERNETES_RO service is not available. Since all containers in a Pod share the same network namespace, containers will be able to reach the API on localhost. To access the Kubernetes API [from a Pod](https://kubernetes.io/docs/user-guide/accessing-the-cluster.md#accessing-the-api-from-a-pod) one of the solution is to run `kubectl proxy` in a so-called sidecar container within the Pod. To do this, you need to package `kubectl` in a container. It is useful when service accounts are being used for accessing the API and the old no-auth KUBERNETES_RO service is not available. Since all containers in a Pod share the same network namespace, containers will be able to reach the API on localhost.
This example contains a [Dockerfile](Dockerfile) and [Makefile](Makefile) for packaging up `kubectl` into This example contains a [Dockerfile](Dockerfile) and [Makefile](Makefile) for packaging up `kubectl` into
a container and pushing the resulting container image on the Google Container Registry. You can modify the Makefile to push to a different registry if needed. a container and pushing the resulting container image on the Google Container Registry. You can modify the Makefile to push to a different registry if needed.
......
...@@ -11,7 +11,7 @@ Meteor uses MongoDB, and we will use the `GCEPersistentDisk` type of ...@@ -11,7 +11,7 @@ Meteor uses MongoDB, and we will use the `GCEPersistentDisk` type of
volume for persistent storage. Therefore, this example is only volume for persistent storage. Therefore, this example is only
applicable to [Google Compute applicable to [Google Compute
Engine](https://cloud.google.com/compute/). Take a look at the Engine](https://cloud.google.com/compute/). Take a look at the
[volumes documentation](../../docs/user-guide/volumes.md) for other options. [volumes documentation](https://kubernetes.io/docs/user-guide/volumes.md) for other options.
First, if you have not already done so: First, if you have not already done so:
...@@ -36,7 +36,7 @@ wget -q -O - https://get.k8s.io | bash ...@@ -36,7 +36,7 @@ wget -q -O - https://get.k8s.io | bash
``` ```
Please see the [Google Compute Engine getting started Please see the [Google Compute Engine getting started
guide](../../docs/getting-started-guides/gce.md) for full guide](https://kubernetes.io/docs/getting-started-guides/gce.md) for full
details and other options for starting a cluster. details and other options for starting a cluster.
Build a container for your Meteor app Build a container for your Meteor app
...@@ -110,7 +110,7 @@ and make sure the `image:` points to the container you just pushed to ...@@ -110,7 +110,7 @@ and make sure the `image:` points to the container you just pushed to
the Docker Hub or GCR. the Docker Hub or GCR.
We will need to provide MongoDB a persistent Kubernetes volume to We will need to provide MongoDB a persistent Kubernetes volume to
store its data. See the [volumes documentation](../../docs/user-guide/volumes.md) for store its data. See the [volumes documentation](https://kubernetes.io/docs/user-guide/volumes.md) for
options. We're going to use Google Compute Engine persistent options. We're going to use Google Compute Engine persistent
disks. Create the MongoDB disk by running: disks. Create the MongoDB disk by running:
...@@ -169,7 +169,7 @@ Here we can see the MongoDB host and port information being passed ...@@ -169,7 +169,7 @@ Here we can see the MongoDB host and port information being passed
into the Meteor app. The `MONGO_SERVICE...` environment variables are into the Meteor app. The `MONGO_SERVICE...` environment variables are
set by Kubernetes, and point to the service named `mongo` specified in set by Kubernetes, and point to the service named `mongo` specified in
[`mongo-service.json`](mongo-service.json). See the [environment [`mongo-service.json`](mongo-service.json). See the [environment
documentation](../../docs/user-guide/container-environment.md) for more details. documentation](https://kubernetes.io/docs/user-guide/container-environment.md) for more details.
As you may know, Meteor uses long lasting connections, and requires As you may know, Meteor uses long lasting connections, and requires
_sticky sessions_. With Kubernetes you can scale out your app easily _sticky sessions_. With Kubernetes you can scale out your app easily
...@@ -177,7 +177,7 @@ with session affinity. The ...@@ -177,7 +177,7 @@ with session affinity. The
[`meteor-service.json`](meteor-service.json) file contains [`meteor-service.json`](meteor-service.json) file contains
`"sessionAffinity": "ClientIP"`, which provides this for us. See the `"sessionAffinity": "ClientIP"`, which provides this for us. See the
[service [service
documentation](../../docs/user-guide/services.md#virtual-ips-and-service-proxies) for documentation](https://kubernetes.io/docs/user-guide/services.md#virtual-ips-and-service-proxies) for
more information. more information.
As mentioned above, the mongo container uses a volume which is mapped As mentioned above, the mongo container uses a volume which is mapped
......
...@@ -10,7 +10,7 @@ This process will create privileged containers which have full access to the hos ...@@ -10,7 +10,7 @@ This process will create privileged containers which have full access to the hos
If you are using a Salt based KUBERNETES\_PROVIDER (**gce**, **vagrant**, **aws**), you should make sure the creation of privileged containers via the API is enabled. Check `cluster/saltbase/pillar/privilege.sls`. If you are using a Salt based KUBERNETES\_PROVIDER (**gce**, **vagrant**, **aws**), you should make sure the creation of privileged containers via the API is enabled. Check `cluster/saltbase/pillar/privilege.sls`.
DaemonSets must be enabled on your cluster. Instructions for enabling DaemonSet can be found [here](../../docs/api.md#enabling-the-extensions-group). DaemonSets must be enabled on your cluster. Instructions for enabling DaemonSet can be found [here](https://kubernetes.io/docs/api.md#enabling-the-extensions-group).
### Step 1: Configure New Relic Agent ### Step 1: Configure New Relic Agent
......
...@@ -6,7 +6,7 @@ For more a in-depth explanation of this example, please [read this post.](https: ...@@ -6,7 +6,7 @@ For more a in-depth explanation of this example, please [read this post.](https:
### Prerequisites ### Prerequisites
This example assumes that you have a basic understanding of Kubernetes conecepts (Pods, Services, Replication Controllers), a Kubernetes cluster up and running, and that you have installed the ```kubectl``` command line tool somewhere in your path. Please see the [getting started](../../docs/getting-started-guides/) for installation instructions for your platform. This example assumes that you have a basic understanding of Kubernetes conecepts (Pods, Services, Replication Controllers), a Kubernetes cluster up and running, and that you have installed the ```kubectl``` command line tool somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/getting-started-guides/) for installation instructions for your platform.
Note: This example was tested on [Google Container Engine](https://cloud.google.com/container-engine/docs/). Some optional commands require the [Google Cloud SDK](https://cloud.google.com/sdk/). Note: This example was tested on [Google Container Engine](https://cloud.google.com/container-engine/docs/). Some optional commands require the [Google Cloud SDK](https://cloud.google.com/sdk/).
...@@ -147,7 +147,7 @@ spec: ...@@ -147,7 +147,7 @@ spec:
[Download file](web-service.yaml) [Download file](web-service.yaml)
This service is called "web," and it uses a [LoadBalancer](../../docs/user-guide/services.md#type-loadbalancer) to distribute traffic on port 80 to port 3000 running on Pods with the "web" tag. Port 80 is the standard HTTP port, and port 3000 is the standard Node.js port. This service is called "web," and it uses a [LoadBalancer](https://kubernetes.io/docs/user-guide/services.md#type-loadbalancer) to distribute traffic on port 80 to port 3000 running on Pods with the "web" tag. Port 80 is the standard HTTP port, and port 3000 is the standard Node.js port.
On Google Container Engine, a [network load balancer](https://cloud.google.com/compute/docs/load-balancing/network/) and [firewall rule](https://cloud.google.com/compute/docs/networking#addingafirewall) to allow traffic are automatically created. On Google Container Engine, a [network load balancer](https://cloud.google.com/compute/docs/load-balancing/network/) and [firewall rule](https://cloud.google.com/compute/docs/networking#addingafirewall) to allow traffic are automatically created.
...@@ -157,7 +157,7 @@ To start the service, run: ...@@ -157,7 +157,7 @@ To start the service, run:
kubectl create -f examples/nodesjs-mongodb/web-service.yaml kubectl create -f examples/nodesjs-mongodb/web-service.yaml
``` ```
If you are running on a platform that does not support LoadBalancer (i.e Bare Metal), you need to use a [NodePort](../../docs/user-guide/services.md#type-nodeport) with your own load balancer. If you are running on a platform that does not support LoadBalancer (i.e Bare Metal), you need to use a [NodePort](https://kubernetes.io/docs/user-guide/services.md#type-nodeport) with your own load balancer.
You may also need to open appropriate Firewall ports to allow traffic. You may also need to open appropriate Firewall ports to allow traffic.
......
...@@ -6,7 +6,7 @@ The example combines a web frontend and an external service that provides MySQL ...@@ -6,7 +6,7 @@ The example combines a web frontend and an external service that provides MySQL
### Step Zero: Prerequisites ### Step Zero: Prerequisites
This example assumes that you have a basic understanding of kubernetes [services](../../docs/user-guide/services.md) and that you have forked the repository and [turned up a Kubernetes cluster](../../docs/getting-started-guides/): This example assumes that you have a basic understanding of kubernetes [services](https://kubernetes.io/docs/user-guide/services.md) and that you have forked the repository and [turned up a Kubernetes cluster](https://kubernetes.io/docs/getting-started-guides/):
```sh ```sh
$ cd kubernetes $ cd kubernetes
...@@ -41,7 +41,7 @@ Raw MySQL Error: Attempt to connect to root@1.2.3.4 failed with error ...@@ -41,7 +41,7 @@ Raw MySQL Error: Attempt to connect to root@1.2.3.4 failed with error
### Step Three: Turn up the phabricator ### Step Three: Turn up the phabricator
To start Phabricator server use the file [`examples/phabricator/phabricator-controller.json`](phabricator-controller.json) which describes a [replication controller](../../docs/user-guide/replication-controller.md) with a single [pod](../../docs/user-guide/pods.md) running an Apache server with Phabricator PHP source: To start Phabricator server use the file [`examples/phabricator/phabricator-controller.json`](phabricator-controller.json) which describes a [replication controller](https://kubernetes.io/docs/user-guide/replication-controller.md) with a single [pod](https://kubernetes.io/docs/user-guide/pods.md) running an Apache server with Phabricator PHP source:
<!-- BEGIN MUNGE: EXAMPLE phabricator-controller.json --> <!-- BEGIN MUNGE: EXAMPLE phabricator-controller.json -->
...@@ -137,7 +137,7 @@ CONTAINER ID IMAGE COMMAND CREATED ...@@ -137,7 +137,7 @@ CONTAINER ID IMAGE COMMAND CREATED
### Step Four: Turn up the phabricator service ### Step Four: Turn up the phabricator service
A Kubernetes 'service' is a named load balancer that proxies traffic to one or more containers. The services in a Kubernetes cluster are discoverable inside other containers via *environment variables*. Services find the containers to load balance based on pod labels. These environment variables are typically referenced in application code, shell scripts, or other places where one node needs to talk to another in a distributed system. You should catch up on [kubernetes services](../../docs/user-guide/services.md) before proceeding. A Kubernetes 'service' is a named load balancer that proxies traffic to one or more containers. The services in a Kubernetes cluster are discoverable inside other containers via *environment variables*. Services find the containers to load balance based on pod labels. These environment variables are typically referenced in application code, shell scripts, or other places where one node needs to talk to another in a distributed system. You should catch up on [kubernetes services](https://kubernetes.io/docs/user-guide/services.md) before proceeding.
The pod that you created in Step Three has the label `name=phabricator`. The selector field of the service determines which pods will receive the traffic sent to the service. The pod that you created in Step Three has the label `name=phabricator`. The selector field of the service determines which pods will receive the traffic sent to the service.
......
...@@ -4,7 +4,7 @@ Selenium is a browser automation tool used primarily for testing web application ...@@ -4,7 +4,7 @@ Selenium is a browser automation tool used primarily for testing web application
### Prerequisites ### Prerequisites
This example assumes you have a working Kubernetes cluster and a properly configured kubectl client. See the [Getting Started Guides](../../docs/getting-started-guides/) for details. This example assumes you have a working Kubernetes cluster and a properly configured kubectl client. See the [Getting Started Guides](https://kubernetes.io/docs/getting-started-guides/) for details.
Google Container Engine is also a quick way to get Kubernetes up and running: https://cloud.google.com/container-engine/ Google Container Engine is also a quick way to get Kubernetes up and running: https://cloud.google.com/container-engine/
......
## Running your first containers in Kubernetes ## Running your first containers in Kubernetes
Ok, you've run one of the [getting started guides](../docs/getting-started-guides/) and you have Ok, you've run one of the [getting started guides](https://kubernetes.io/docs/getting-started-guides/) and you have
successfully turned up a Kubernetes cluster. Now what? This guide will help you get oriented successfully turned up a Kubernetes cluster. Now what? This guide will help you get oriented
to Kubernetes and running your first containers on the cluster. to Kubernetes and running your first containers on the cluster.
...@@ -8,7 +8,7 @@ to Kubernetes and running your first containers on the cluster. ...@@ -8,7 +8,7 @@ to Kubernetes and running your first containers on the cluster.
From this point onwards, it is assumed that `kubectl` is on your path from one of the getting started guides. From this point onwards, it is assumed that `kubectl` is on your path from one of the getting started guides.
The [`kubectl run`](../docs/user-guide/kubectl/kubectl_run.md) line below will create two [nginx](https://registry.hub.docker.com/_/nginx/) [pods](../docs/user-guide/pods.md) listening on port 80. It will also create a [deployment](../docs/user-guide/deployments.md) named `my-nginx` to ensure that there are always two pods running. The [`kubectl run`](https://kubernetes.io/docs/user-guide/kubectl/kubectl_run.md) line below will create two [nginx](https://registry.hub.docker.com/_/nginx/) [pods](https://kubernetes.io/docs/user-guide/pods.md) listening on port 80. It will also create a [deployment](https://kubernetes.io/docs/user-guide/deployments.md) named `my-nginx` to ensure that there are always two pods running.
```bash ```bash
kubectl run my-nginx --image=nginx --replicas=2 --port=80 kubectl run my-nginx --image=nginx --replicas=2 --port=80
...@@ -28,7 +28,7 @@ kubectl get deployment ...@@ -28,7 +28,7 @@ kubectl get deployment
### Exposing your pods to the internet. ### Exposing your pods to the internet.
On some platforms (for example Google Compute Engine) the kubectl command can integrate with your cloud provider to add a [public IP address](../docs/user-guide/services.md#publishing-services---service-types) for the pods, On some platforms (for example Google Compute Engine) the kubectl command can integrate with your cloud provider to add a [public IP address](https://kubernetes.io/docs/user-guide/services.md#publishing-services---service-types) for the pods,
to do this run: to do this run:
```bash ```bash
...@@ -53,7 +53,7 @@ kubectl delete deployment my-nginx ...@@ -53,7 +53,7 @@ kubectl delete deployment my-nginx
### Next: Configuration files ### Next: Configuration files
Most people will eventually want to use declarative configuration files for creating/modifying their applications. A [simplified introduction](../docs/user-guide/deploying-applications.md) Most people will eventually want to use declarative configuration files for creating/modifying their applications. A [simplified introduction](https://kubernetes.io/docs/user-guide/deploying-applications.md)
is given in a different document. is given in a different document.
......
...@@ -55,13 +55,13 @@ $ kubectl config use-context spark ...@@ -55,13 +55,13 @@ $ kubectl config use-context spark
## Step Two: Start your Master service ## Step Two: Start your Master service
The Master [service](../../docs/user-guide/services.md) is the master service The Master [service](https://kubernetes.io/docs/user-guide/services.md) is the master service
for a Spark cluster. for a Spark cluster.
Use the Use the
[`examples/spark/spark-master-controller.yaml`](spark-master-controller.yaml) [`examples/spark/spark-master-controller.yaml`](spark-master-controller.yaml)
file to create a file to create a
[replication controller](../../docs/user-guide/replication-controller.md) [replication controller](https://kubernetes.io/docs/user-guide/replication-controller.md)
running the Spark Master service. running the Spark Master service.
```console ```console
...@@ -137,7 +137,7 @@ spark-ui-proxy 10.0.51.107 aad59283284d611e6839606c214502b5-833417581.us-eas ...@@ -137,7 +137,7 @@ spark-ui-proxy 10.0.51.107 aad59283284d611e6839606c214502b5-833417581.us-eas
The Spark UI in the above example output will be available at http://aad59283284d611e6839606c214502b5-833417581.us-east-1.elb.amazonaws.com The Spark UI in the above example output will be available at http://aad59283284d611e6839606c214502b5-833417581.us-east-1.elb.amazonaws.com
If your Kubernetes cluster is not equipped with a Loadbalancer integration, you will need to use the [kubectl proxy](../../docs/user-guide/accessing-the-cluster.md#using-kubectl-proxy) to If your Kubernetes cluster is not equipped with a Loadbalancer integration, you will need to use the [kubectl proxy](https://kubernetes.io/docs/user-guide/accessing-the-cluster.md#using-kubectl-proxy) to
connect to the Spark WebUI: connect to the Spark WebUI:
```console ```console
...@@ -156,7 +156,7 @@ program. ...@@ -156,7 +156,7 @@ program.
The Spark workers need the Master service to be running. The Spark workers need the Master service to be running.
Use the [`examples/spark/spark-worker-controller.yaml`](spark-worker-controller.yaml) file to create a Use the [`examples/spark/spark-worker-controller.yaml`](spark-worker-controller.yaml) file to create a
[replication controller](../../docs/user-guide/replication-controller.md) that manages the worker pods. [replication controller](https://kubernetes.io/docs/user-guide/replication-controller.md) that manages the worker pods.
```console ```console
$ kubectl create -f examples/spark/spark-worker-controller.yaml $ kubectl create -f examples/spark/spark-worker-controller.yaml
...@@ -353,7 +353,7 @@ Then visit [http://localhost:8080/](http://localhost:8080/). ...@@ -353,7 +353,7 @@ Then visit [http://localhost:8080/](http://localhost:8080/).
the `zeppelin` pod, you will need to provide a way for your clients to get to the `zeppelin` pod, you will need to provide a way for your clients to get to
the the
[`examples/spark/spark-master-service.yaml`](spark-master-service.yaml). See [`examples/spark/spark-master-service.yaml`](spark-master-service.yaml). See
[Services](../../docs/user-guide/services.md) for more information. [Services](https://kubernetes.io/docs/user-guide/services.md) for more information.
## Known Issues With Zeppelin ## Known Issues With Zeppelin
......
...@@ -27,18 +27,18 @@ new Cassandra nodes as they join the cluster. ...@@ -27,18 +27,18 @@ new Cassandra nodes as they join the cluster.
This example also uses some of the core components of Kubernetes: This example also uses some of the core components of Kubernetes:
- [_Pods_](../../../docs/user-guide/pods.md) - [_Pods_](https://kubernetes.io/docs/user-guide/pods.md)
- [ _Services_](../../../docs/user-guide/services.md) - [ _Services_](https://kubernetes.io/docs/user-guide/services.md)
- [_Replication Controllers_](../../../docs/user-guide/replication-controller.md) - [_Replication Controllers_](https://kubernetes.io/docs/user-guide/replication-controller.md)
- [_Stateful Sets_](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) - [_Stateful Sets_](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)
- [_Daemon Sets_](../../../docs/admin/daemons.md) - [_Daemon Sets_](https://kubernetes.io/docs/admin/daemons.md)
## Prerequisites ## Prerequisites
This example assumes that you have a Kubernetes version >=1.2 cluster installed and running, This example assumes that you have a Kubernetes version >=1.2 cluster installed and running,
and that you have installed the [`kubectl`](../../../docs/user-guide/kubectl/kubectl.md) and that you have installed the [`kubectl`](https://kubernetes.io/docs/user-guide/kubectl/kubectl.md)
command line tool somewhere in your path. Please see the command line tool somewhere in your path. Please see the
[getting started guides](../../../docs/getting-started-guides/) [getting started guides](https://kubernetes.io/docs/getting-started-guides/)
for installation instructions for your platform. for installation instructions for your platform.
This example also has a few code and configuration files needed. To avoid This example also has a few code and configuration files needed. To avoid
...@@ -113,8 +113,8 @@ kubectl delete daemonset cassandra ...@@ -113,8 +113,8 @@ kubectl delete daemonset cassandra
## Step 1: Create a Cassandra Headless Service ## Step 1: Create a Cassandra Headless Service
A Kubernetes _[Service](../../../docs/user-guide/services.md)_ describes a set of A Kubernetes _[Service](https://kubernetes.io/docs/user-guide/services.md)_ describes a set of
[_Pods_](../../../docs/user-guide/pods.md) that perform the same task. In [_Pods_](https://kubernetes.io/docs/user-guide/pods.md) that perform the same task. In
Kubernetes, the atomic unit of an application is a Pod: one or more containers Kubernetes, the atomic unit of an application is a Pod: one or more containers
that _must_ be scheduled onto the same host. that _must_ be scheduled onto the same host.
...@@ -353,7 +353,7 @@ system_traces system_schema system_auth system system_distributed ...@@ -353,7 +353,7 @@ system_traces system_schema system_auth system system_distributed
``` ```
In order to increase or decrease the size of the Cassandra StatefulSet, you must use In order to increase or decrease the size of the Cassandra StatefulSet, you must use
`kubectl edit`. You can find more information about the edit command in the [documentation](../../../docs/user-guide/kubectl/kubectl_edit.md). `kubectl edit`. You can find more information about the edit command in the [documentation](https://kubernetes.io/docs/user-guide/kubectl/kubectl_edit.md).
Use the following command to edit the StatefulSet. Use the following command to edit the StatefulSet.
...@@ -426,7 +426,7 @@ $ grace=$(kubectl get po cassandra-0 --template '{{.spec.terminationGracePeriodS ...@@ -426,7 +426,7 @@ $ grace=$(kubectl get po cassandra-0 --template '{{.spec.terminationGracePeriodS
## Step 5: Use a Replication Controller to create Cassandra node pods ## Step 5: Use a Replication Controller to create Cassandra node pods
A Kubernetes A Kubernetes
_[Replication Controller](../../../docs/user-guide/replication-controller.md)_ _[Replication Controller](https://kubernetes.io/docs/user-guide/replication-controller.md)_
is responsible for replicating sets of identical pods. Like a is responsible for replicating sets of identical pods. Like a
Service, it has a selector query which identifies the members of its set. Service, it has a selector query which identifies the members of its set.
Unlike a Service, it also has a desired number of replicas, and it will create Unlike a Service, it also has a desired number of replicas, and it will create
...@@ -654,7 +654,7 @@ $ kubectl delete rc cassandra ...@@ -654,7 +654,7 @@ $ kubectl delete rc cassandra
## Step 8: Use a DaemonSet instead of a Replication Controller ## Step 8: Use a DaemonSet instead of a Replication Controller
In Kubernetes, a [_Daemon Set_](../../../docs/admin/daemons.md) can distribute pods In Kubernetes, a [_Daemon Set_](https://kubernetes.io/docs/admin/daemons.md) can distribute pods
onto Kubernetes nodes, one-to-one. Like a _ReplicationController_, it has a onto Kubernetes nodes, one-to-one. Like a _ReplicationController_, it has a
selector query which identifies the members of its set. Unlike a selector query which identifies the members of its set. Unlike a
_ReplicationController_, it has a node selector to limit which nodes are _ReplicationController_, it has a node selector to limit which nodes are
...@@ -843,7 +843,7 @@ how the container docker image was built and what it contains. ...@@ -843,7 +843,7 @@ how the container docker image was built and what it contains.
You may also note that we are setting some Cassandra parameters (`MAX_HEAP_SIZE` You may also note that we are setting some Cassandra parameters (`MAX_HEAP_SIZE`
and `HEAP_NEWSIZE`), and adding information about the and `HEAP_NEWSIZE`), and adding information about the
[namespace](../../../docs/user-guide/namespaces.md). [namespace](https://kubernetes.io/docs/user-guide/namespaces.md).
We also tell Kubernetes that the container exposes We also tell Kubernetes that the container exposes
both the `CQL` and `Thrift` API ports. Finally, we tell the cluster both the `CQL` and `Thrift` API ports. Finally, we tell the cluster
manager that we need 0.1 cpu (0.1 core). manager that we need 0.1 cpu (0.1 core).
......
...@@ -8,7 +8,7 @@ This document also attempts to describe the core components of Kubernetes: _Pods ...@@ -8,7 +8,7 @@ This document also attempts to describe the core components of Kubernetes: _Pods
### Prerequisites ### Prerequisites
This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the `kubectl` command line tool somewhere in your path. Please see the [getting started](../../../docs/getting-started-guides/) for installation instructions for your platform. This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the `kubectl` command line tool somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/getting-started-guides/) for installation instructions for your platform.
### A note for the impatient ### A note for the impatient
...@@ -23,14 +23,14 @@ Source is freely available at: ...@@ -23,14 +23,14 @@ Source is freely available at:
### Simple Single Pod Hazelcast Node ### Simple Single Pod Hazelcast Node
In Kubernetes, the atomic unit of an application is a [_Pod_](../../../docs/user-guide/pods.md). A Pod is one or more containers that _must_ be scheduled onto the same host. All containers in a pod share a network namespace, and may optionally share mounted volumes. In Kubernetes, the atomic unit of an application is a [_Pod_](https://kubernetes.io/docs/user-guide/pods.md). A Pod is one or more containers that _must_ be scheduled onto the same host. All containers in a pod share a network namespace, and may optionally share mounted volumes.
In this case, we shall not run a single Hazelcast pod, because the discovery mechanism now relies on a service definition. In this case, we shall not run a single Hazelcast pod, because the discovery mechanism now relies on a service definition.
### Adding a Hazelcast Service ### Adding a Hazelcast Service
In Kubernetes a _[Service](../../../docs/user-guide/services.md)_ describes a set of Pods that perform the same task. For example, the set of nodes in a Hazelcast cluster. An important use for a Service is to create a load balancer which distributes traffic across members of the set. But a _Service_ can also be used as a standing query which makes a dynamically changing set of Pods available via the Kubernetes API. This is actually how our discovery mechanism works, by relying on the service to discover other Hazelcast pods. In Kubernetes a _[Service](https://kubernetes.io/docs/user-guide/services.md)_ describes a set of Pods that perform the same task. For example, the set of nodes in a Hazelcast cluster. An important use for a Service is to create a load balancer which distributes traffic across members of the set. But a _Service_ can also be used as a standing query which makes a dynamically changing set of Pods available via the Kubernetes API. This is actually how our discovery mechanism works, by relying on the service to discover other Hazelcast pods.
Here is the service description: Here is the service description:
...@@ -65,7 +65,7 @@ $ kubectl create -f examples/storage/hazelcast/hazelcast-service.yaml ...@@ -65,7 +65,7 @@ $ kubectl create -f examples/storage/hazelcast/hazelcast-service.yaml
The real power of Kubernetes and Hazelcast lies in easily building a replicated, resizable Hazelcast cluster. The real power of Kubernetes and Hazelcast lies in easily building a replicated, resizable Hazelcast cluster.
In Kubernetes a _[_Deployment_](../../../docs/user-guide/deployments.md)_ is responsible for replicating sets of identical pods. Like a _Service_ it has a selector query which identifies the members of its set. Unlike a _Service_ it also has a desired number of replicas, and it will create or delete _Pods_ to ensure that the number of _Pods_ matches up with its desired state. In Kubernetes a _[_Deployment_](https://kubernetes.io/docs/user-guide/deployments.md)_ is responsible for replicating sets of identical pods. Like a _Service_ it has a selector query which identifies the members of its set. Unlike a _Service_ it also has a desired number of replicas, and it will create or delete _Pods_ to ensure that the number of _Pods_ matches up with its desired state.
Deployments will "adopt" existing pods that match their selector query, so let's create a Deployment with a single replica to adopt our existing Hazelcast Pod. Deployments will "adopt" existing pods that match their selector query, so let's create a Deployment with a single replica to adopt our existing Hazelcast Pod.
......
...@@ -4,7 +4,7 @@ This document explains a simple demonstration example of running MySQL synchrono ...@@ -4,7 +4,7 @@ This document explains a simple demonstration example of running MySQL synchrono
### Prerequisites ### Prerequisites
This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the ```kubectl``` command line tool somewhere in your path. Please see the [getting started](../../../docs/getting-started-guides/) for installation instructions for your platform. This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the ```kubectl``` command line tool somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/getting-started-guides/) for installation instructions for your platform.
Also, this example requires the image found in the ```image``` directory. For your convenience, it is built and available on Docker's public image repository as ```capttofu/percona_xtradb_cluster_5_6```. It can also be built which would merely require that the image in the pod or replication controller files is updated. Also, this example requires the image found in the ```image``` directory. For your convenience, it is built and available on Docker's public image repository as ```capttofu/percona_xtradb_cluster_5_6```. It can also be built which would merely require that the image in the pod or replication controller files is updated.
......
...@@ -4,7 +4,7 @@ The following document describes the deployment of a reliable, multi-node Redis ...@@ -4,7 +4,7 @@ The following document describes the deployment of a reliable, multi-node Redis
### Prerequisites ### Prerequisites
This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the ```kubectl``` command line tool somewhere in your path. Please see the [getting started](../../../docs/getting-started-guides/) for installation instructions for your platform. This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the ```kubectl``` command line tool somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/getting-started-guides/) for installation instructions for your platform.
### A note for the impatient ### A note for the impatient
...@@ -12,7 +12,7 @@ This is a somewhat long tutorial. If you want to jump straight to the "do it no ...@@ -12,7 +12,7 @@ This is a somewhat long tutorial. If you want to jump straight to the "do it no
### Turning up an initial master/sentinel pod. ### Turning up an initial master/sentinel pod.
A [_Pod_](../../../docs/user-guide/pods.md) is one or more containers that _must_ be scheduled onto the same host. All containers in a pod share a network namespace, and may optionally share mounted volumes. A [_Pod_](https://kubernetes.io/docs/user-guide/pods.md) is one or more containers that _must_ be scheduled onto the same host. All containers in a pod share a network namespace, and may optionally share mounted volumes.
We will use the shared network namespace to bootstrap our Redis cluster. In particular, the very first sentinel needs to know how to find the master (subsequent sentinels just ask the first sentinel). Because all containers in a Pod share a network namespace, the sentinel can simply look at ```$(hostname -i):6379```. We will use the shared network namespace to bootstrap our Redis cluster. In particular, the very first sentinel needs to know how to find the master (subsequent sentinels just ask the first sentinel). Because all containers in a Pod share a network namespace, the sentinel can simply look at ```$(hostname -i):6379```.
...@@ -27,7 +27,7 @@ kubectl create -f examples/storage/redis/redis-master.yaml ...@@ -27,7 +27,7 @@ kubectl create -f examples/storage/redis/redis-master.yaml
### Turning up a sentinel service ### Turning up a sentinel service
In Kubernetes a [_Service_](../../../docs/user-guide/services.md) describes a set of Pods that perform the same task. For example, the set of nodes in a Cassandra cluster, or even the single node we created above. An important use for a Service is to create a load balancer which distributes traffic across members of the set. But a _Service_ can also be used as a standing query which makes a dynamically changing set of Pods (or the single Pod we've already created) available via the Kubernetes API. In Kubernetes a [_Service_](https://kubernetes.io/docs/user-guide/services.md) describes a set of Pods that perform the same task. For example, the set of nodes in a Cassandra cluster, or even the single node we created above. An important use for a Service is to create a load balancer which distributes traffic across members of the set. But a _Service_ can also be used as a standing query which makes a dynamically changing set of Pods (or the single Pod we've already created) available via the Kubernetes API.
In Redis, we will use a Kubernetes Service to provide a discoverable endpoints for the Redis sentinels in the cluster. From the sentinels Redis clients can find the master, and then the slaves and other relevant info for the cluster. This enables new members to join the cluster when failures occur. In Redis, we will use a Kubernetes Service to provide a discoverable endpoints for the Redis sentinels in the cluster. From the sentinels Redis clients can find the master, and then the slaves and other relevant info for the cluster. This enables new members to join the cluster when failures occur.
...@@ -43,7 +43,7 @@ kubectl create -f examples/storage/redis/redis-sentinel-service.yaml ...@@ -43,7 +43,7 @@ kubectl create -f examples/storage/redis/redis-sentinel-service.yaml
So far, what we have done is pretty manual, and not very fault-tolerant. If the ```redis-master``` pod that we previously created is destroyed for some reason (e.g. a machine dying) our Redis service goes away with it. So far, what we have done is pretty manual, and not very fault-tolerant. If the ```redis-master``` pod that we previously created is destroyed for some reason (e.g. a machine dying) our Redis service goes away with it.
In Kubernetes a [_Replication Controller_](../../../docs/user-guide/replication-controller.md) is responsible for replicating sets of identical pods. Like a _Service_ it has a selector query which identifies the members of it's set. Unlike a _Service_ it also has a desired number of replicas, and it will create or delete _Pods_ to ensure that the number of _Pods_ matches up with it's desired state. In Kubernetes a [_Replication Controller_](https://kubernetes.io/docs/user-guide/replication-controller.md) is responsible for replicating sets of identical pods. Like a _Service_ it has a selector query which identifies the members of it's set. Unlike a _Service_ it also has a desired number of replicas, and it will create or delete _Pods_ to ensure that the number of _Pods_ matches up with it's desired state.
Replication Controllers will "adopt" existing pods that match their selector query, so let's create a Replication Controller with a single replica to adopt our existing Redis server. Here is the replication controller config: [redis-controller.yaml](redis-controller.yaml) Replication Controllers will "adopt" existing pods that match their selector query, so let's create a Replication Controller with a single replica to adopt our existing Redis server. Here is the replication controller config: [redis-controller.yaml](redis-controller.yaml)
......
...@@ -120,7 +120,7 @@ since the ui is not stateless when playing with Web Admin UI will cause `Connect ...@@ -120,7 +120,7 @@ since the ui is not stateless when playing with Web Admin UI will cause `Connect
**BTW** **BTW**
* `gen_pod.sh` is using to generate pod templates for my local cluster, * `gen_pod.sh` is using to generate pod templates for my local cluster,
the generated pods which is using `nodeSelector` to force k8s to schedule containers to my designate nodes, for I need to access persistent data on my host dirs. Note that one needs to label the node before 'nodeSelector' can work, see this [tutorial](../../../docs/user-guide/node-selection/) the generated pods which is using `nodeSelector` to force k8s to schedule containers to my designate nodes, for I need to access persistent data on my host dirs. Note that one needs to label the node before 'nodeSelector' can work, see this [tutorial](https://kubernetes.io/docs/user-guide/node-selection/)
* see [antmanler/rethinkdb-k8s](https://github.com/antmanler/rethinkdb-k8s) for detail * see [antmanler/rethinkdb-k8s](https://github.com/antmanler/rethinkdb-k8s) for detail
......
...@@ -20,17 +20,17 @@ You'll need to install [Go 1.4+](https://golang.org/doc/install) to build ...@@ -20,17 +20,17 @@ You'll need to install [Go 1.4+](https://golang.org/doc/install) to build
`vtctlclient`, the command-line admin tool for Vitess. `vtctlclient`, the command-line admin tool for Vitess.
We also assume you have a running Kubernetes cluster with `kubectl` pointing to We also assume you have a running Kubernetes cluster with `kubectl` pointing to
it by default. See the [Getting Started guides](../../../docs/getting-started-guides/) it by default. See the [Getting Started guides](https://kubernetes.io/docs/getting-started-guides/)
for how to get to that point. Note that your Kubernetes cluster needs to have for how to get to that point. Note that your Kubernetes cluster needs to have
enough resources (CPU+RAM) to schedule all the pods. By default, this example enough resources (CPU+RAM) to schedule all the pods. By default, this example
requires a cluster-wide total of at least 6 virtual CPUs and 10GiB RAM. You can requires a cluster-wide total of at least 6 virtual CPUs and 10GiB RAM. You can
tune these requirements in the tune these requirements in the
[resource limits](../../../docs/user-guide/compute-resources.md) [resource limits](https://kubernetes.io/docs/user-guide/compute-resources.md)
section of each YAML file. section of each YAML file.
Lastly, you need to open ports 30000-30001 (for the Vitess admin daemon) and 80 (for Lastly, you need to open ports 30000-30001 (for the Vitess admin daemon) and 80 (for
the guestbook app) in your firewall. See the the guestbook app) in your firewall. See the
[Services and Firewalls](../../../docs/user-guide/services-firewalls.md) [Services and Firewalls](https://kubernetes.io/docs/user-guide/services-firewalls.md)
guide for examples of how to do that. guide for examples of how to do that.
### Configure site-local settings ### Configure site-local settings
......
...@@ -22,15 +22,15 @@ Source is freely available at: ...@@ -22,15 +22,15 @@ Source is freely available at:
This example assumes you have a Kubernetes cluster installed and This example assumes you have a Kubernetes cluster installed and
running, and that you have installed the ```kubectl``` command line running, and that you have installed the ```kubectl``` command line
tool somewhere in your path. Please see the [getting tool somewhere in your path. Please see the [getting
started](../../docs/getting-started-guides/) for installation started](https://kubernetes.io/docs/getting-started-guides/) for installation
instructions for your platform. instructions for your platform.
## Step One: Start your ZooKeeper service ## Step One: Start your ZooKeeper service
ZooKeeper is a distributed coordination [service](../../docs/user-guide/services.md) that Storm uses as a ZooKeeper is a distributed coordination [service](https://kubernetes.io/docs/user-guide/services.md) that Storm uses as a
bootstrap and for state storage. bootstrap and for state storage.
Use the [`examples/storm/zookeeper.json`](zookeeper.json) file to create a [pod](../../docs/user-guide/pods.md) running Use the [`examples/storm/zookeeper.json`](zookeeper.json) file to create a [pod](https://kubernetes.io/docs/user-guide/pods.md) running
the ZooKeeper service. the ZooKeeper service.
```sh ```sh
...@@ -114,7 +114,7 @@ The Storm workers need both the ZooKeeper and Nimbus services to be ...@@ -114,7 +114,7 @@ The Storm workers need both the ZooKeeper and Nimbus services to be
running. running.
Use the [`examples/storm/storm-worker-controller.json`](storm-worker-controller.json) file to create a Use the [`examples/storm/storm-worker-controller.json`](storm-worker-controller.json) file to create a
[replication controller](../../docs/user-guide/replication-controller.md) that manages the worker pods. [replication controller](https://kubernetes.io/docs/user-guide/replication-controller.md) that manages the worker pods.
```sh ```sh
$ kubectl create -f examples/storm/storm-worker-controller.json $ kubectl create -f examples/storm/storm-worker-controller.json
......
...@@ -85,7 +85,7 @@ Replace the invalid IP in the [nfs PV](nfs-pv.yaml). (In the future, ...@@ -85,7 +85,7 @@ Replace the invalid IP in the [nfs PV](nfs-pv.yaml). (In the future,
we'll be able to tie these together using the service names, but for we'll be able to tie these together using the service names, but for
now, you have to hardcode the IP.) now, you have to hardcode the IP.)
Create the the [persistent volume](../../../docs/user-guide/persistent-volumes.md) Create the the [persistent volume](https://kubernetes.io/docs/user-guide/persistent-volumes.md)
and the persistent volume claim for your NFS server. The persistent volume and and the persistent volume claim for your NFS server. The persistent volume and
claim gives us an indirection that allow multiple pods to refer to the NFS claim gives us an indirection that allow multiple pods to refer to the NFS
server using a symbolic name rather than the hardcoded server address. server using a symbolic name rather than the hardcoded server address.
......
...@@ -98,7 +98,7 @@ type ClusterStatus struct { ...@@ -98,7 +98,7 @@ type ClusterStatus struct {
type Cluster struct { type Cluster struct {
metav1.TypeMeta metav1.TypeMeta
// Standard object's metadata. // Standard object's metadata.
// More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#metadata // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional // +optional
metav1.ObjectMeta metav1.ObjectMeta
...@@ -114,7 +114,7 @@ type Cluster struct { ...@@ -114,7 +114,7 @@ type Cluster struct {
type ClusterList struct { type ClusterList struct {
metav1.TypeMeta metav1.TypeMeta
// Standard list metadata. // Standard list metadata.
// More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#types-kinds // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
// +optional // +optional
metav1.ListMeta metav1.ListMeta
......
...@@ -33,7 +33,7 @@ option go_package = "v1beta1"; ...@@ -33,7 +33,7 @@ option go_package = "v1beta1";
// Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation. // Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation.
message Cluster { message Cluster {
// Standard object's metadata. // Standard object's metadata.
// More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#metadata // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional // +optional
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
...@@ -74,7 +74,7 @@ message ClusterCondition { ...@@ -74,7 +74,7 @@ message ClusterCondition {
// A list of all the kubernetes clusters registered to the federation // A list of all the kubernetes clusters registered to the federation
message ClusterList { message ClusterList {
// Standard list metadata. // Standard list metadata.
// More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#types-kinds // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
// +optional // +optional
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
......
...@@ -99,7 +99,7 @@ type ClusterStatus struct { ...@@ -99,7 +99,7 @@ type ClusterStatus struct {
type Cluster struct { type Cluster struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
// Standard object's metadata. // Standard object's metadata.
// More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#metadata // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional // +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
...@@ -115,7 +115,7 @@ type Cluster struct { ...@@ -115,7 +115,7 @@ type Cluster struct {
type ClusterList struct { type ClusterList struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
// Standard list metadata. // Standard list metadata.
// More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#types-kinds // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
// +optional // +optional
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
......
...@@ -29,7 +29,7 @@ package v1beta1 ...@@ -29,7 +29,7 @@ package v1beta1
// AUTO-GENERATED FUNCTIONS START HERE // AUTO-GENERATED FUNCTIONS START HERE
var map_Cluster = map[string]string{ var map_Cluster = map[string]string{
"": "Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation.", "": "Information about a registered cluster in a federated kubernetes setup. Clusters are not namespaced and have unique names in the federation.",
"metadata": "Standard object's metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#metadata", "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
"spec": "Spec defines the behavior of the Cluster.", "spec": "Spec defines the behavior of the Cluster.",
"status": "Status describes the current status of a Cluster", "status": "Status describes the current status of a Cluster",
} }
...@@ -54,7 +54,7 @@ func (ClusterCondition) SwaggerDoc() map[string]string { ...@@ -54,7 +54,7 @@ func (ClusterCondition) SwaggerDoc() map[string]string {
var map_ClusterList = map[string]string{ var map_ClusterList = map[string]string{
"": "A list of all the kubernetes clusters registered to the federation", "": "A list of all the kubernetes clusters registered to the federation",
"metadata": "Standard list metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#types-kinds", "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
"items": "List of Cluster objects.", "items": "List of Cluster objects.",
} }
......
...@@ -43,11 +43,11 @@ ...@@ -43,11 +43,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"versions": { "versions": {
"type": "array", "type": "array",
......
...@@ -42,11 +42,11 @@ ...@@ -42,11 +42,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"groups": { "groups": {
"type": "array", "type": "array",
...@@ -68,11 +68,11 @@ ...@@ -68,11 +68,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
"properties": { "properties": {
"kind": { "kind": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
}, },
"apiVersion": { "apiVersion": {
"type": "string", "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" "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources"
}, },
"name": { "name": {
"type": "string", "type": "string",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment