Switch to github.com/golang/dep for vendoring
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
This commit is contained in:
parent
d6ab91be27
commit
8e5b17cf13
15431 changed files with 3971413 additions and 8881 deletions
182
vendor/k8s.io/kubernetes/examples/cluster-dns/README.md
generated
vendored
Normal file
182
vendor/k8s.io/kubernetes/examples/cluster-dns/README.md
generated
vendored
Normal file
|
@ -0,0 +1,182 @@
|
|||
## Kubernetes DNS example
|
||||
|
||||
This is a toy example demonstrating how to use kubernetes DNS.
|
||||
|
||||
### 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](../../build/kube-dns/).
|
||||
|
||||
```sh
|
||||
$ cd kubernetes
|
||||
$ hack/dev-build-and-up.sh
|
||||
```
|
||||
|
||||
### Step One: Create two namespaces
|
||||
|
||||
We'll see how cluster DNS works across multiple [namespaces](../../docs/user-guide/namespaces.md), first we need to create two namespaces:
|
||||
|
||||
```sh
|
||||
$ kubectl create -f examples/cluster-dns/namespace-dev.yaml
|
||||
$ kubectl create -f examples/cluster-dns/namespace-prod.yaml
|
||||
```
|
||||
|
||||
Now list all namespaces:
|
||||
|
||||
```sh
|
||||
$ kubectl get namespaces
|
||||
NAME LABELS STATUS
|
||||
default <none> Active
|
||||
development name=development Active
|
||||
production name=production Active
|
||||
```
|
||||
|
||||
For kubectl client to work with each namespace, we define two contexts:
|
||||
|
||||
```sh
|
||||
$ kubectl config set-context dev --namespace=development --cluster=${CLUSTER_NAME} --user=${USER_NAME}
|
||||
$ kubectl config set-context prod --namespace=production --cluster=${CLUSTER_NAME} --user=${USER_NAME}
|
||||
```
|
||||
|
||||
You can view your cluster name and user name in kubernetes config at ~/.kube/config.
|
||||
|
||||
### Step Two: Create backend replication controller in each namespace
|
||||
|
||||
Use the file [`examples/cluster-dns/dns-backend-rc.yaml`](dns-backend-rc.yaml) to create a backend server [replication controller](../../docs/user-guide/replication-controller.md) in each namespace.
|
||||
|
||||
```sh
|
||||
$ kubectl config use-context dev
|
||||
$ kubectl create -f examples/cluster-dns/dns-backend-rc.yaml
|
||||
```
|
||||
|
||||
Once that's up you can list the pod in the cluster:
|
||||
|
||||
```sh
|
||||
$ kubectl get rc
|
||||
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
|
||||
dns-backend dns-backend ddysher/dns-backend name=dns-backend 1
|
||||
```
|
||||
|
||||
Now repeat the above commands to create a replication controller in prod namespace:
|
||||
|
||||
```sh
|
||||
$ kubectl config use-context prod
|
||||
$ kubectl create -f examples/cluster-dns/dns-backend-rc.yaml
|
||||
$ kubectl get rc
|
||||
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
|
||||
dns-backend dns-backend ddysher/dns-backend name=dns-backend 1
|
||||
```
|
||||
|
||||
### Step Three: Create backend service
|
||||
|
||||
Use the file [`examples/cluster-dns/dns-backend-service.yaml`](dns-backend-service.yaml) to create
|
||||
a [service](../../docs/user-guide/services.md) for the backend server.
|
||||
|
||||
```sh
|
||||
$ kubectl config use-context dev
|
||||
$ kubectl create -f examples/cluster-dns/dns-backend-service.yaml
|
||||
```
|
||||
|
||||
Once that's up you can list the service in the cluster:
|
||||
|
||||
```sh
|
||||
$ kubectl get service dns-backend
|
||||
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
|
||||
dns-backend 10.0.2.3 <none> 8000/TCP name=dns-backend 1d
|
||||
```
|
||||
|
||||
Again, repeat the same process for prod namespace:
|
||||
|
||||
```sh
|
||||
$ kubectl config use-context prod
|
||||
$ kubectl create -f examples/cluster-dns/dns-backend-service.yaml
|
||||
$ kubectl get service dns-backend
|
||||
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
|
||||
dns-backend 10.0.2.4 <none> 8000/TCP name=dns-backend 1d
|
||||
```
|
||||
|
||||
### Step Four: Create client pod in one namespace
|
||||
|
||||
Use the file [`examples/cluster-dns/dns-frontend-pod.yaml`](dns-frontend-pod.yaml) to create a client [pod](../../docs/user-guide/pods.md) in dev namespace. The client pod will make a connection to backend and exit. Specifically, it tries to connect to address `http://dns-backend.development.cluster.local:8000`.
|
||||
|
||||
```sh
|
||||
$ kubectl config use-context dev
|
||||
$ kubectl create -f examples/cluster-dns/dns-frontend-pod.yaml
|
||||
```
|
||||
|
||||
Once that's up you can list the pod in the cluster:
|
||||
|
||||
```sh
|
||||
$ kubectl get pods dns-frontend
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
dns-frontend 0/1 ExitCode:0 0 1m
|
||||
```
|
||||
|
||||
Wait until the pod succeeds, then we can see the output from the client pod:
|
||||
|
||||
```sh
|
||||
$ kubectl logs dns-frontend
|
||||
2015-05-07T20:13:54.147664936Z 10.0.236.129
|
||||
2015-05-07T20:13:54.147721290Z Send request to: http://dns-backend.development.cluster.local:8000
|
||||
2015-05-07T20:13:54.147733438Z <Response [200]>
|
||||
2015-05-07T20:13:54.147738295Z Hello World!
|
||||
```
|
||||
|
||||
Please refer to the [source code](images/frontend/client.py) about the log. First line prints out the ip address associated with the service in dev namespace; remaining lines print out our request and server response.
|
||||
|
||||
If we switch to prod namespace with the same pod config, we'll see the same result, i.e. dns will resolve across namespace.
|
||||
|
||||
```sh
|
||||
$ kubectl config use-context prod
|
||||
$ kubectl create -f examples/cluster-dns/dns-frontend-pod.yaml
|
||||
$ kubectl logs dns-frontend
|
||||
2015-05-07T20:13:54.147664936Z 10.0.236.129
|
||||
2015-05-07T20:13:54.147721290Z Send request to: http://dns-backend.development.cluster.local:8000
|
||||
2015-05-07T20:13:54.147733438Z <Response [200]>
|
||||
2015-05-07T20:13:54.147738295Z Hello World!
|
||||
```
|
||||
|
||||
|
||||
#### Note about default namespace
|
||||
|
||||
If you prefer not using namespace, then all your services can be addressed using `default` namespace, e.g. `http://dns-backend.default.svc.cluster.local:8000`, or shorthand version `http://dns-backend:8000`
|
||||
|
||||
|
||||
### tl; dr;
|
||||
|
||||
For those of you who are impatient, here is the summary of the commands we ran in this tutorial. Remember to set first `$CLUSTER_NAME` and `$USER_NAME` to the values found in `~/.kube/config`.
|
||||
|
||||
```sh
|
||||
# create dev and prod namespaces
|
||||
kubectl create -f examples/cluster-dns/namespace-dev.yaml
|
||||
kubectl create -f examples/cluster-dns/namespace-prod.yaml
|
||||
|
||||
# create two contexts
|
||||
kubectl config set-context dev --namespace=development --cluster=${CLUSTER_NAME} --user=${USER_NAME}
|
||||
kubectl config set-context prod --namespace=production --cluster=${CLUSTER_NAME} --user=${USER_NAME}
|
||||
|
||||
# create two backend replication controllers
|
||||
kubectl config use-context dev
|
||||
kubectl create -f examples/cluster-dns/dns-backend-rc.yaml
|
||||
kubectl config use-context prod
|
||||
kubectl create -f examples/cluster-dns/dns-backend-rc.yaml
|
||||
|
||||
# create backend services
|
||||
kubectl config use-context dev
|
||||
kubectl create -f examples/cluster-dns/dns-backend-service.yaml
|
||||
kubectl config use-context prod
|
||||
kubectl create -f examples/cluster-dns/dns-backend-service.yaml
|
||||
|
||||
# create a pod in each namespace and get its output
|
||||
kubectl config use-context dev
|
||||
kubectl create -f examples/cluster-dns/dns-frontend-pod.yaml
|
||||
kubectl logs dns-frontend
|
||||
|
||||
kubectl config use-context prod
|
||||
kubectl create -f examples/cluster-dns/dns-frontend-pod.yaml
|
||||
kubectl logs dns-frontend
|
||||
```
|
||||
|
||||
|
||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||||
[]()
|
||||
<!-- END MUNGE: GENERATED_ANALYTICS -->
|
21
vendor/k8s.io/kubernetes/examples/cluster-dns/dns-backend-rc.yaml
generated
vendored
Normal file
21
vendor/k8s.io/kubernetes/examples/cluster-dns/dns-backend-rc.yaml
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
apiVersion: v1
|
||||
kind: ReplicationController
|
||||
metadata:
|
||||
name: dns-backend
|
||||
labels:
|
||||
name: dns-backend
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
name: dns-backend
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: dns-backend
|
||||
spec:
|
||||
containers:
|
||||
- name: dns-backend
|
||||
image: gcr.io/google_containers/example-dns-backend:v1
|
||||
ports:
|
||||
- name: backend-port
|
||||
containerPort: 8000
|
9
vendor/k8s.io/kubernetes/examples/cluster-dns/dns-backend-service.yaml
generated
vendored
Normal file
9
vendor/k8s.io/kubernetes/examples/cluster-dns/dns-backend-service.yaml
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: dns-backend
|
||||
spec:
|
||||
ports:
|
||||
- port: 8000
|
||||
selector:
|
||||
name: dns-backend
|
16
vendor/k8s.io/kubernetes/examples/cluster-dns/dns-frontend-pod.yaml
generated
vendored
Normal file
16
vendor/k8s.io/kubernetes/examples/cluster-dns/dns-frontend-pod.yaml
generated
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: dns-frontend
|
||||
labels:
|
||||
name: dns-frontend
|
||||
spec:
|
||||
containers:
|
||||
- name: dns-frontend
|
||||
image: gcr.io/google_containers/example-dns-frontend:v1
|
||||
command:
|
||||
- python
|
||||
- client.py
|
||||
- http://dns-backend.development.cluster.local:8000
|
||||
imagePullPolicy: Always
|
||||
restartPolicy: Never
|
20
vendor/k8s.io/kubernetes/examples/cluster-dns/images/backend/Dockerfile
generated
vendored
Normal file
20
vendor/k8s.io/kubernetes/examples/cluster-dns/images/backend/Dockerfile
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Copyright 2016 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
FROM python:2.7-slim
|
||||
|
||||
COPY . /dns-backend
|
||||
WORKDIR /dns-backend
|
||||
|
||||
CMD ["python", "server.py"]
|
27
vendor/k8s.io/kubernetes/examples/cluster-dns/images/backend/Makefile
generated
vendored
Normal file
27
vendor/k8s.io/kubernetes/examples/cluster-dns/images/backend/Makefile
generated
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Copyright 2016 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
TAG = v1
|
||||
PREFIX = gcr.io/google_containers
|
||||
IMAGE = example-dns-backend
|
||||
|
||||
all: push
|
||||
|
||||
image:
|
||||
docker build --pull -t $(PREFIX)/$(IMAGE):$(TAG) .
|
||||
|
||||
push: image
|
||||
gcloud docker -- push $(PREFIX)/$(IMAGE)
|
||||
|
||||
clean:
|
37
vendor/k8s.io/kubernetes/examples/cluster-dns/images/backend/server.py
generated
vendored
Normal file
37
vendor/k8s.io/kubernetes/examples/cluster-dns/images/backend/server.py
generated
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2015 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
|
||||
|
||||
PORT_NUMBER = 8000
|
||||
|
||||
# This class will handles any incoming request.
|
||||
class HTTPHandler(BaseHTTPRequestHandler):
|
||||
# Handler for the GET requests
|
||||
def do_GET(self):
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type','text/html')
|
||||
self.end_headers()
|
||||
self.wfile.write("Hello World!")
|
||||
|
||||
try:
|
||||
# Create a web server and define the handler to manage the incoming request.
|
||||
server = HTTPServer(('', PORT_NUMBER), HTTPHandler)
|
||||
print 'Started httpserver on port ' , PORT_NUMBER
|
||||
server.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
print '^C received, shutting down the web server'
|
||||
server.socket.close()
|
22
vendor/k8s.io/kubernetes/examples/cluster-dns/images/frontend/Dockerfile
generated
vendored
Normal file
22
vendor/k8s.io/kubernetes/examples/cluster-dns/images/frontend/Dockerfile
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Copyright 2016 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
FROM python:2.7-slim
|
||||
|
||||
RUN pip install requests
|
||||
|
||||
COPY . /dns-frontend
|
||||
WORKDIR /dns-frontend
|
||||
|
||||
CMD ["python", "client.py"]
|
27
vendor/k8s.io/kubernetes/examples/cluster-dns/images/frontend/Makefile
generated
vendored
Normal file
27
vendor/k8s.io/kubernetes/examples/cluster-dns/images/frontend/Makefile
generated
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Copyright 2016 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
TAG = v1
|
||||
PREFIX = gcr.io/google_containers
|
||||
IMAGE = example-dns-frontend
|
||||
|
||||
all: push
|
||||
|
||||
image:
|
||||
docker build --pull -t $(PREFIX)/$(IMAGE):$(TAG) .
|
||||
|
||||
push: image
|
||||
gcloud docker -- push $(PREFIX)/$(IMAGE)
|
||||
|
||||
clean:
|
46
vendor/k8s.io/kubernetes/examples/cluster-dns/images/frontend/client.py
generated
vendored
Normal file
46
vendor/k8s.io/kubernetes/examples/cluster-dns/images/frontend/client.py
generated
vendored
Normal file
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2015 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import argparse
|
||||
import requests
|
||||
import socket
|
||||
|
||||
from urlparse import urlparse
|
||||
|
||||
|
||||
def CheckServiceAddress(address):
|
||||
hostname = urlparse(address).hostname
|
||||
service_address = socket.gethostbyname(hostname)
|
||||
print service_address
|
||||
|
||||
|
||||
def GetServerResponse(address):
|
||||
print 'Send request to:', address
|
||||
response = requests.get(address)
|
||||
print response
|
||||
print response.content
|
||||
|
||||
|
||||
def Main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('address')
|
||||
args = parser.parse_args()
|
||||
CheckServiceAddress(args.address)
|
||||
GetServerResponse(args.address)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
Main()
|
6
vendor/k8s.io/kubernetes/examples/cluster-dns/namespace-dev.yaml
generated
vendored
Normal file
6
vendor/k8s.io/kubernetes/examples/cluster-dns/namespace-dev.yaml
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: "development"
|
||||
labels:
|
||||
name: "development"
|
6
vendor/k8s.io/kubernetes/examples/cluster-dns/namespace-prod.yaml
generated
vendored
Normal file
6
vendor/k8s.io/kubernetes/examples/cluster-dns/namespace-prod.yaml
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: "production"
|
||||
labels:
|
||||
name: "production"
|
Loading…
Add table
Add a link
Reference in a new issue