Merge pull request #4460 from sub-mod/guestbook_ns

Adding guestbook example with latest json format for v1beta3 api
pull/6/head
Brian Grant 2015-02-23 16:58:20 -08:00
commit 754a2a8305
15 changed files with 402 additions and 0 deletions

View File

@ -115,6 +115,30 @@ func TestExampleObjectSchemas(t *testing.T) {
"redis-master-service": &api.Service{},
"redis-slave-service": &api.Service{},
},
"../examples/guestbook/v1beta3": {
"frontend-controller": &api.ReplicationController{},
"redis-slave-controller": &api.ReplicationController{},
"redis-master": &api.ReplicationController{},
"frontend-service": &api.Service{},
"redis-master-service": &api.Service{},
"redis-slave-service": &api.Service{},
},
"../examples/guestbook-go": {
"guestbook-controller": &api.ReplicationController{},
"redis-slave-controller": &api.ReplicationController{},
"redis-master-controller": &api.ReplicationController{},
"guestbook-service": &api.Service{},
"redis-master-service": &api.Service{},
"redis-slave-service": &api.Service{},
},
"../examples/guestbook-go/v1beta3": {
"guestbook-controller": &api.ReplicationController{},
"redis-slave-controller": &api.ReplicationController{},
"redis-master-controller": &api.ReplicationController{},
"guestbook-service": &api.Service{},
"redis-master-service": &api.Service{},
"redis-slave-service": &api.Service{},
},
"../examples/walkthrough": {
"pod1": &api.Pod{},
"pod2": &api.Pod{},

View File

@ -0,0 +1,14 @@
## GuestBook v1beta3 example
This example shows how to build a simple, multi-tier web application using Kubernetes and Docker.
The example consists of:
- A web frontend
- A redis master (for storage and a replicated set of redis slaves)
The web front end interacts with the redis master via javascript redis API calls.
The v1beta3 API is not enabled by default. The kube-apiserver process needs to run with the --runtime_config=api/v1beta3 argument. Use the following command to enable it:
$sudo sed -i 's|KUBE_API_ARGS="|KUBE_API_ARGS="--runtime_config=api/v1beta3 |' /etc/kubernetes/apiserver

View File

@ -0,0 +1,38 @@
{
"kind":"ReplicationController",
"apiVersion":"v1beta3",
"metadata":{
"name":"guestbook",
"labels":{
"name":"guestbook"
}
},
"spec":{
"replicas":3,
"selector":{
"name":"guestbook"
},
"template":{
"metadata":{
"labels":{
"name":"guestbook"
}
},
"spec":{
"containers":[
{
"image":"kubernetes/guestbook",
"name":"guestbook",
"ports":[
{
"name":"http-server",
"containerPort":3000,
"protocol":"TCP"
}
]
}
]
}
}
}
}

View File

@ -0,0 +1,18 @@
{
"kind":"Service",
"apiVersion":"v1beta3",
"metadata":{
"name":"guestbook",
"labels":{
"name":"guestbook"
}
},
"spec":{
"port":3000,
"containerPort":"http-server",
"protocol":"TCP",
"selector":{
"name":"guestbook"
}
}
}

View File

@ -0,0 +1,42 @@
{
"kind":"ReplicationController",
"apiVersion":"v1beta3",
"id":"redis-master",
"metadata":{
"name":"redis-master",
"labels":{
"name":"redis",
"role":"master"
}
},
"spec":{
"replicas":1,
"selector":{
"name":"redis",
"role":"master"
},
"template":{
"metadata":{
"labels":{
"name":"redis",
"role":"master"
}
},
"spec":{
"containers":[
{
"name":"redis-master",
"image":"gurpartap/redis",
"ports":[
{
"name":"redis-server",
"containerPort":6379,
"protocol":"TCP"
}
]
}
]
}
}
}
}

View File

@ -0,0 +1,20 @@
{
"kind":"Service",
"apiVersion":"v1beta3",
"metadata":{
"name":"redis-master",
"labels":{
"name":"redis",
"role":"master"
}
},
"spec":{
"port":6379,
"containerPort":"redis-server",
"protocol":"TCP",
"selector":{
"name":"redis",
"role":"master"
}
}
}

View File

@ -0,0 +1,47 @@
{
"kind":"ReplicationController",
"apiVersion":"v1beta3",
"id":"redis-slave",
"metadata":{
"name":"redis-slave",
"labels":{
"name":"redis",
"role":"slave"
}
},
"spec":{
"replicas":1,
"selector":{
"name":"redis",
"role":"slave"
},
"template":{
"metadata":{
"labels":{
"name":"redis",
"role":"slave"
}
},
"spec":{
"containers":[
{
"name":"redis-slave",
"image":"gurpartap/redis",
"command":[
"sh",
"-c",
"redis-server /etc/redis/redis.conf --slaveof $REDIS_MASTER_SERVICE_HOST $REDIS_MASTER_SERVICE_PORT"
],
"ports":[
{
"name":"redis-server",
"containerPort":6379,
"protocol":"TCP"
}
]
}
]
}
}
}
}

View File

@ -0,0 +1,20 @@
{
"kind":"Service",
"apiVersion":"v1beta3",
"metadata":{
"name":"redis-slave",
"labels":{
"name":"redis",
"role":"slave"
}
},
"spec":{
"port":6379,
"containerPort":"redis-server",
"protocol":"TCP",
"selector":{
"name":"redis",
"role":"slave"
}
}
}

View File

@ -0,0 +1,14 @@
## GuestBook v1beta3 example
This example shows how to build a simple, multi-tier web application using Kubernetes and Docker.
The example consists of:
- A web frontend
- A redis master (for storage and a replicated set of redis slaves)
The web front end interacts with the redis master via javascript redis API calls.
The v1beta3 API is not enabled by default. The kube-apiserver process needs to run with the --runtime_config=api/v1beta3 argument. Use the following command to enable it:
$sudo sed -i 's|KUBE_API_ARGS="|KUBE_API_ARGS="--runtime_config=api/v1beta3 |' /etc/kubernetes/apiserver

View File

@ -0,0 +1,37 @@
{
"kind":"ReplicationController",
"apiVersion":"v1beta3",
"metadata":{
"name":"frontend",
"labels":{
"name":"frontend"
}
},
"spec":{
"replicas":2,
"selector":{
"name":"frontend"
},
"template":{
"metadata":{
"labels":{
"name":"frontend"
}
},
"spec":{
"containers":[
{
"name":"php-redis",
"image":"kubernetes/example-guestbook-php-redis",
"ports":[
{
"containerPort":80,
"protocol":"TCP"
}
]
}
]
}
}
}
}

View File

@ -0,0 +1,18 @@
{
"kind":"Service",
"apiVersion":"v1beta3",
"metadata":{
"name":"frontend",
"labels":{
"name":"frontend"
}
},
"spec":{
"port":80,
"containerPort":80,
"protocol":"TCP",
"selector":{
"name":"frontend"
}
}
}

View File

@ -0,0 +1,18 @@
{
"kind":"Service",
"apiVersion":"v1beta3",
"metadata":{
"name":"redis-master",
"labels":{
"name":"redis-master"
}
},
"spec":{
"port":6379,
"containerPort":6379,
"protocol":"TCP",
"selector":{
"name":"redis-master"
}
}
}

View File

@ -0,0 +1,37 @@
{
"kind":"ReplicationController",
"apiVersion":"v1beta3",
"metadata":{
"name":"redis-master",
"labels":{
"name":"redis-master"
}
},
"spec":{
"replicas":1,
"selector":{
"name":"redis-master"
},
"template":{
"metadata":{
"labels":{
"name":"redis-master"
}
},
"spec":{
"containers":[
{
"name":"master",
"image":"dockerfile/redis",
"ports":[
{
"containerPort":6379,
"protocol":"TCP"
}
]
}
]
}
}
}
}

View File

@ -0,0 +1,37 @@
{
"kind":"ReplicationController",
"apiVersion":"v1beta3",
"metadata":{
"name":"redis-slave",
"labels":{
"name":"redis-slave"
}
},
"spec":{
"replicas":2,
"selector":{
"name":"redis-slave"
},
"template":{
"metadata":{
"labels":{
"name":"redis-slave"
}
},
"spec":{
"containers":[
{
"name":"slave",
"image":"brendanburns/redis-slave",
"ports":[
{
"containerPort":6379,
"protocol":"TCP"
}
]
}
]
}
}
}
}

View File

@ -0,0 +1,18 @@
{
"kind":"Service",
"apiVersion":"v1beta3",
"metadata":{
"name":"redis-slave",
"labels":{
"name":"redis-slave"
}
},
"spec":{
"port":6379,
"containerPort":6379,
"protocol":"TCP",
"selector":{
"name":"redis-slave"
}
}
}