From 152441810010103ca30cd660fc5ae93ff5a9bb19 Mon Sep 17 00:00:00 2001 From: Karl Beecher Date: Tue, 14 Apr 2015 17:32:00 +0200 Subject: [PATCH] Updates celery example Change files from JSON to YAML. --- celery-rabbitmq/README.md | 213 +++++++++++------------ celery-rabbitmq/celery-controller.json | 31 ---- celery-rabbitmq/celery-controller.yaml | 25 +++ celery-rabbitmq/flower-controller.json | 31 ---- celery-rabbitmq/flower-controller.yaml | 26 +++ celery-rabbitmq/rabbitmq-controller.json | 31 ---- celery-rabbitmq/rabbitmq-controller.yaml | 25 +++ celery-rabbitmq/rabbitmq-service.json | 13 -- celery-rabbitmq/rabbitmq-service.yaml | 14 ++ 9 files changed, 190 insertions(+), 219 deletions(-) delete mode 100644 celery-rabbitmq/celery-controller.json create mode 100644 celery-rabbitmq/celery-controller.yaml delete mode 100644 celery-rabbitmq/flower-controller.json create mode 100644 celery-rabbitmq/flower-controller.yaml delete mode 100644 celery-rabbitmq/rabbitmq-controller.json create mode 100644 celery-rabbitmq/rabbitmq-controller.yaml delete mode 100644 celery-rabbitmq/rabbitmq-service.json create mode 100644 celery-rabbitmq/rabbitmq-service.yaml diff --git a/celery-rabbitmq/README.md b/celery-rabbitmq/README.md index b920d30a..494de777 100644 --- a/celery-rabbitmq/README.md +++ b/celery-rabbitmq/README.md @@ -31,28 +31,29 @@ You should already have turned up a Kubernetes cluster. To get the most of this The Celery task queue will need to communicate with the RabbitMQ broker. RabbitMQ will eventually appear on a separate pod, but since pods are ephemeral we need a service that can transparently route requests to RabbitMQ. -Use the file `examples/celery-rabbitmq/rabbitmq-service.json`: +Use the file `examples/celery-rabbitmq/rabbitmq-service.yaml`: -```js -{ - "id": "rabbitmq-service", - "kind": "Service", - "apiVersion": "v1beta1", - "port": 5672, - "containerPort": 5672, - "selector": { - "app": "taskQueue" - }, - "labels": { - "name": "rabbitmq-service" - } -} +```yaml +apiVersion: v1beta3 +kind: Service +metadata: + labels: + name: rabbitmq + name: rabbitmq-service +spec: + ports: + - port: 5672 + protocol: TCP + targetPort: 5672 + selector: + app: taskQueue + component: rabbitmq ``` To start the service, run: ```shell -$ kubectl create -f examples/celery-rabbitmq/rabbitmq-service.json +$ kubectl create -f examples/celery-rabbitmq/rabbitmq-service.yaml ``` **NOTE**: If you're running Kubernetes from source, you can use `cluster/kubectl.sh` instead of `kubectl`. @@ -62,81 +63,71 @@ This service allows other pods to connect to the rabbitmq. To them, it will be s ## Step 2: Fire up RabbitMQ -A RabbitMQ broker can be turned up using the file `examples/celery-rabbitmq/rabbitmq-controller.json`: +A RabbitMQ broker can be turned up using the file `examples/celery-rabbitmq/rabbitmq-controller.yaml`: -```js -{ - "id": "rabbitmq-controller", - "kind": "ReplicationController", - "apiVersion": "v1beta1", - "desiredState": { - "replicas": 1, - "replicaSelector": {"name": "rabbitmq"}, - "podTemplate": { - "desiredState": { - "manifest": { - "version": "v1beta1", - "id": "rabbitmq", - "containers": [{ - "name": "rabbitmq", - "image": "library/rabbitmq", - "cpu": 100, - "ports": [{"containerPort": 5672, "hostPort": 5672}] - }] - } - }, - "labels": { - "name": "rabbitmq", - "app": "taskQueue" - } - } - }, - "labels": { - "name": "rabbitmq" - } -} +```yaml +apiVersion: v1beta3 +kind: ReplicationController +metadata: + labels: + name: rabbitmq + name: rabbitmq-controller +spec: + replicas: 1 + selector: + component: rabbitmq + template: + metadata: + labels: + app: taskQueue + component: rabbitmq + spec: + containers: + - image: rabbitmq + name: rabbitmq + ports: + - containerPort: 5672 + protocol: TCP + resources: + limits: + cpu: 100m ``` -Running `$ kubectl create -f examples/celery-rabbitmq/rabbitmq-controller.json` brings up a replication controller that ensures one pod exists which is running a RabbitMQ instance. +Running `$ kubectl create -f examples/celery-rabbitmq/rabbitmq-controller.yaml` brings up a replication controller that ensures one pod exists which is running a RabbitMQ instance. Note that bringing up the pod includes pulling down a docker image, which may take a few moments. This applies to all other pods in this example. ## Step 3: Fire up Celery -Bringing up the celery worker is done by running `$ kubectl create -f examples/celery-rabbitmq/celery-controller.json`, which contains this: +Bringing up the celery worker is done by running `$ kubectl create -f examples/celery-rabbitmq/celery-controller.yaml`, which contains this: -```js -{ - "id": "celery-controller", - "kind": "ReplicationController", - "apiVersion": "v1beta1", - "desiredState": { - "replicas": 1, - "replicaSelector": {"name": "celery"}, - "podTemplate": { - "desiredState": { - "manifest": { - "version": "v1beta1", - "id": "celery", - "containers": [{ - "name": "celery", - "image": "endocode/celery-app-add", - "cpu": 100, - "ports": [{"containerPort": 5672, "hostPort": 5672}] - }] - } - }, - "labels": { - "name": "celery", - "app": "taskQueue" - } - } - }, - "labels": { - "name": "celery" - } -} +```yaml +apiVersion: v1beta3 +kind: ReplicationController +metadata: + labels: + name: celery + name: celery-controller +spec: + replicas: 1 + selector: + component: celery + template: + metadata: + labels: + app: taskQueue + component: celery + spec: + containers: + - image: endocode/celery-app-add + name: celery + ports: + - containerPort: 5672 + protocol: TCP + resources: + limits: + cpu: 100m ``` There are several things to point out here... @@ -187,39 +178,35 @@ The question now is, how do you see what's going on? Flower is a web-based tool for monitoring and administrating Celery clusters. By connecting to the node that contains Celery, you can see the behaviour of all the workers and their tasks in real-time. -To bring up the frontend, run this command `$ kubectl create -f examples/celery-rabbitmq/celery-controller.json`. This controller is defined as so: +To bring up the frontend, run this command `$ kubectl create -f examples/celery-rabbitmq/flower-controller.yaml`. This controller is defined as so: -```js -{ - "id": "flower-controller", - "kind": "ReplicationController", - "apiVersion": "v1beta1", - "desiredState": { - "replicas": 1, - "replicaSelector": {"name": "flower"}, - "podTemplate": { - "desiredState": { - "manifest": { - "version": "v1beta1", - "id": "flower", - "containers": [{ - "name": "flower", - "image": "endocode/flower", - "cpu": 100, - "ports": [{"containerPort": 5555, "hostPort": 5555}] - }] - } - }, - "labels": { - "name": "flower", - "app": "taskQueue" - } - } - }, - "labels": { - "name": "flower" - } -} +```yaml +apiVersion: v1beta3 +kind: ReplicationController +metadata: + labels: + name: flower + name: flower-controller +spec: + replicas: 1 + selector: + component: flower + template: + metadata: + labels: + app: taskQueue + component: flower + spec: + containers: + - image: endocode/flower + name: flower + ports: + - containerPort: 5555 + hostPort: 5555 + protocol: TCP + resources: + limits: + cpu: 100m ``` This will bring up a new pod with Flower installed and port 5555 (Flower's default port) exposed. This image uses the following command to start Flower: diff --git a/celery-rabbitmq/celery-controller.json b/celery-rabbitmq/celery-controller.json deleted file mode 100644 index 398947fd..00000000 --- a/celery-rabbitmq/celery-controller.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "id": "celery-controller", - "kind": "ReplicationController", - "apiVersion": "v1beta1", - "desiredState": { - "replicas": 1, - "replicaSelector": {"name": "celery"}, - "podTemplate": { - "desiredState": { - "manifest": { - "version": "v1beta1", - "id": "celery", - "containers": [{ - "name": "celery", - "image": "endocode/celery-app-add", - "cpu": 100, - "ports": [{"containerPort": 5672, "hostPort": 5672}] - }] - } - }, - "labels": { - "name": "celery", - "app": "taskQueue" - } - } - }, - "labels": { - "name": "celery" - } -} - diff --git a/celery-rabbitmq/celery-controller.yaml b/celery-rabbitmq/celery-controller.yaml new file mode 100644 index 00000000..4fc7004d --- /dev/null +++ b/celery-rabbitmq/celery-controller.yaml @@ -0,0 +1,25 @@ +apiVersion: v1beta3 +kind: ReplicationController +metadata: + labels: + name: celery + name: celery-controller +spec: + replicas: 1 + selector: + component: celery + template: + metadata: + labels: + app: taskQueue + component: celery + spec: + containers: + - image: endocode/celery-app-add + name: celery + ports: + - containerPort: 5672 + protocol: TCP + resources: + limits: + cpu: 100m diff --git a/celery-rabbitmq/flower-controller.json b/celery-rabbitmq/flower-controller.json deleted file mode 100644 index a92e84a9..00000000 --- a/celery-rabbitmq/flower-controller.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "id": "flower-controller", - "kind": "ReplicationController", - "apiVersion": "v1beta1", - "desiredState": { - "replicas": 1, - "replicaSelector": {"name": "flower"}, - "podTemplate": { - "desiredState": { - "manifest": { - "version": "v1beta1", - "id": "flower", - "containers": [{ - "name": "flower", - "image": "endocode/flower", - "cpu": 100, - "ports": [{"containerPort": 5555, "hostPort": 5555}] - }] - } - }, - "labels": { - "name": "flower", - "app": "taskQueue" - } - } - }, - "labels": { - "name": "flower" - } -} - diff --git a/celery-rabbitmq/flower-controller.yaml b/celery-rabbitmq/flower-controller.yaml new file mode 100644 index 00000000..16481b97 --- /dev/null +++ b/celery-rabbitmq/flower-controller.yaml @@ -0,0 +1,26 @@ +apiVersion: v1beta3 +kind: ReplicationController +metadata: + labels: + name: flower + name: flower-controller +spec: + replicas: 1 + selector: + component: flower + template: + metadata: + labels: + app: taskQueue + component: flower + spec: + containers: + - image: endocode/flower + name: flower + ports: + - containerPort: 5555 + hostPort: 5555 + protocol: TCP + resources: + limits: + cpu: 100m diff --git a/celery-rabbitmq/rabbitmq-controller.json b/celery-rabbitmq/rabbitmq-controller.json deleted file mode 100644 index ffeb78e2..00000000 --- a/celery-rabbitmq/rabbitmq-controller.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "id": "rabbitmq-controller", - "kind": "ReplicationController", - "apiVersion": "v1beta1", - "desiredState": { - "replicas": 1, - "replicaSelector": {"name": "rabbitmq"}, - "podTemplate": { - "desiredState": { - "manifest": { - "version": "v1beta1", - "id": "rabbitmq", - "containers": [{ - "name": "rabbitmq", - "image": "library/rabbitmq", - "cpu": 100, - "ports": [{"containerPort": 5672, "hostPort": 5672}] - }] - } - }, - "labels": { - "name": "rabbitmq", - "app": "taskQueue" - } - } - }, - "labels": { - "name": "rabbitmq" - } -} - diff --git a/celery-rabbitmq/rabbitmq-controller.yaml b/celery-rabbitmq/rabbitmq-controller.yaml new file mode 100644 index 00000000..4bd7f608 --- /dev/null +++ b/celery-rabbitmq/rabbitmq-controller.yaml @@ -0,0 +1,25 @@ +apiVersion: v1beta3 +kind: ReplicationController +metadata: + labels: + name: rabbitmq + name: rabbitmq-controller +spec: + replicas: 1 + selector: + component: rabbitmq + template: + metadata: + labels: + app: taskQueue + component: rabbitmq + spec: + containers: + - image: rabbitmq + name: rabbitmq + ports: + - containerPort: 5672 + protocol: TCP + resources: + limits: + cpu: 100m diff --git a/celery-rabbitmq/rabbitmq-service.json b/celery-rabbitmq/rabbitmq-service.json deleted file mode 100644 index 13177c19..00000000 --- a/celery-rabbitmq/rabbitmq-service.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "id": "rabbitmq-service", - "kind": "Service", - "apiVersion": "v1beta1", - "port": 5672, - "containerPort": 5672, - "selector": { - "app": "taskQueue" - }, - "labels": { - "name": "rabbitmq-service" - } -} diff --git a/celery-rabbitmq/rabbitmq-service.yaml b/celery-rabbitmq/rabbitmq-service.yaml new file mode 100644 index 00000000..80bbb1a2 --- /dev/null +++ b/celery-rabbitmq/rabbitmq-service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1beta3 +kind: Service +metadata: + labels: + name: rabbitmq + name: rabbitmq-service +spec: + ports: + - port: 5672 + protocol: TCP + targetPort: 5672 + selector: + app: taskQueue + component: rabbitmq