From 20f689466716c855663b539762fb411ec1ac81a6 Mon Sep 17 00:00:00 2001 From: harry Date: Tue, 15 Sep 2015 17:44:00 +0800 Subject: [PATCH] Demo a sidecar mode within pod for java users --- javaweb-tomcat-sidecar/README.md | 216 ++++++++++++++++++++++++++ javaweb-tomcat-sidecar/javaweb-2.yaml | 29 ++++ javaweb-tomcat-sidecar/javaweb.yaml | 22 +++ javaweb-tomcat-sidecar/workflow.png | Bin 0 -> 46353 bytes 4 files changed, 267 insertions(+) create mode 100644 javaweb-tomcat-sidecar/README.md create mode 100644 javaweb-tomcat-sidecar/javaweb-2.yaml create mode 100644 javaweb-tomcat-sidecar/javaweb.yaml create mode 100644 javaweb-tomcat-sidecar/workflow.png diff --git a/javaweb-tomcat-sidecar/README.md b/javaweb-tomcat-sidecar/README.md new file mode 100644 index 00000000..bb234766 --- /dev/null +++ b/javaweb-tomcat-sidecar/README.md @@ -0,0 +1,216 @@ + + + + +WARNING +WARNING +WARNING +WARNING +WARNING + +

PLEASE NOTE: This document applies to the HEAD of the source tree

+ +If you are using a released version of Kubernetes, you should +refer to the docs that go with that version. + + +The latest 1.0.x release of this document can be found +[here](http://releases.k8s.io/release-1.0/examples/javaweb-tomcat-sidecar/README.md). + +Documentation for other releases can be found at +[releases.k8s.io](http://releases.k8s.io). + +-- + + + + + +## Java Web Application with Tomcat and Sidercar Container + +The following document describes the deployment of a Java Web application using Tomcat. Instead of packaging `war` file inside the Tomcat image or mount the `war` as a volume, we use a sidecar container as `war` file provider. + +### Prerequisites + +https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/prereqs.md + +### Overview + +This sidecar mode brings a new workflow for Java users: + +![](workflow.png?raw=true "Workflow") + +As you can see, user can create a `sample:v2` container as sidecar to "provide" war file to Tomcat by copying it to the shared `emptyDir` volume. And Pod will make sure the two containers compose a "atomic" scheduling unit, which is perfect for this case. Thus, your application version management will be totally seperated from web server management. + +For example, if you gonna change the configurations of your Tomcat: + +``` +docker exec -it /bin/bash +# do your change, and then commit it to a new image +docker commit mytomcat:7.0-dev +``` + +Done! The new Tomcat image **will not** mess up with your `sample.war` file. + +You can also upgrade your app to new version seperately, without creating a new "Tomcat plus app" image (and this image will become huge as unionfs will keep all the old war files in its layers). + +**Why don't put my `sample.war` in a host dir and mount it to tomcat container?** + +You have to **manage the volumes** in this case, for example, when you restart or scale the Pod on another Node, your contents is not ready on that host. + +Generally, we have to set up a distributed file system (NFS at least) volume to solve this (if we do not have GCE PD volume). But seriously, it's a overkill. + +### How To + +In Kubernetes a [_Pod_](../../docs/user-guide/pods.md) is the smallest deployable unit that can be created, scheduled, and managed. Its a collocated group of containers that share an IP and storage volume. + +Here is the config [javaweb.yaml](javaweb.yaml) for Java Web pod: + +NOTE: you should define `war` contaienr **first** as it is the "provider". + + + +``` +apiVersion: v1 +kind: Pod +metadata: + name: javaweb +spec: + containers: + - image: resouer/sample:v1 + name: war + volumeMounts: + - mountPath: /app + name: app-volume + - image: resouer/mytomcat:7.0 + name: tomcat + command: ["sh","-c","/root/apache-tomcat-7.0.42-v2/bin/start.sh"] + volumeMounts: + - mountPath: /root/apache-tomcat-7.0.42-v2/webapps + name: app-volume + ports: + - containerPort: 8080 + hostPort: 8001 + volumes: + - name: app-volume +``` + + + +The only magic here is the `resouer/sample:v1` image: + +``` +FROM busybox:latest +ADD sample.war sample.war +CMD "sh" "mv.sh" +``` + +And the content inf `mv.sh` is: + +```sh +cp /sample.war /app +tail -f /etc/hosts +``` + +#### Explaination + +1. 'war' container only contains the `war` file of your app +2. 'war' container's CMD try to copy `sample.war` to the `emptyDir` volume path +3. The last line of `tailf -f` is just used to hold the container, as RC does not support one-off task +4. 'tomcat' container will load the `sample.war` from volume path + +What's more, if you don't want to add a build in `mv.sh` script in the `war` container, you can use Pod lifecycle handler to do the copy work, here's a example [javaweb-2.yaml](javaweb-2.yaml): + + + + +``` +apiVersion: v1 +kind: Pod +metadata: + name: javaweb-2 +spec: + containers: + - image: resouer/sample:v2 + name: war + lifecycle: + postStart: + exec: + command: + - "cp" + - "/sample.war" + - "/app" + volumeMounts: + - mountPath: /app + name: app-volume + - image: resouer/mytomcat:7.0 + name: tomcat + command: ["sh","-c","/root/apache-tomcat-7.0.42-v2/bin/start.sh"] + volumeMounts: + - mountPath: /root/apache-tomcat-7.0.42-v2/webapps + name: app-volume + ports: + - containerPort: 8080 + hostPort: 8001 + volumes: + - name: app-volume +``` + + + +And the `resouer/sample:v2` Dockerfile is quite simple: + +``` +FROM busybox:latest +ADD sample.war sample.war +CMD "tail" "-f" "/etc/hosts" +``` + +#### Explaination + +1. 'war' container only contains the `war` file of your app +2. 'war' container's CMD use `tail` to hold the container, nothing else +3. The `postStart` lifecycle handler will do `cp` after the `war` container is started +4. Again 'tomcat' container will load the `sample.war` from volume path + +Done! Now your `war` container contains nothing except `sample.war`, clean enough. + +### Test It Out + +Create the Java web pod: + +```sh +kubectl create -f examples/javaweb-tomcat-sidecar/javaweb-2.yaml +``` + +Check status of the pod: + +```sh +kubectl get -w po +NAME READY STATUS RESTARTS AGE +javaweb-2 2/2 Running 0 7s +``` + +Wait for the status to `2/2` and `Running`. Then you can visit "Hello, World" on `http://localhost:8001/sample/index.html` + +You can also test `javaweb.yaml` in the same way. + +### Delete Resources + +All resources created in this application can be deleted: + +```sh +kubectl delete -f examples/javaweb-tomcat-sidecar/javaweb-2.yaml +``` + + + + + +[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/examples/javaweb-tomcat-sidecar/README.md?pixel)]() + diff --git a/javaweb-tomcat-sidecar/javaweb-2.yaml b/javaweb-tomcat-sidecar/javaweb-2.yaml new file mode 100644 index 00000000..74908189 --- /dev/null +++ b/javaweb-tomcat-sidecar/javaweb-2.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Pod +metadata: + name: javaweb-2 +spec: + containers: + - image: resouer/sample:v2 + name: war + lifecycle: + postStart: + exec: + command: + - "cp" + - "/sample.war" + - "/app" + volumeMounts: + - mountPath: /app + name: app-volume + - image: resouer/mytomcat:7.0 + name: tomcat + command: ["sh","-c","/root/apache-tomcat-7.0.42-v2/bin/start.sh"] + volumeMounts: + - mountPath: /root/apache-tomcat-7.0.42-v2/webapps + name: app-volume + ports: + - containerPort: 8080 + hostPort: 8001 + volumes: + - name: app-volume \ No newline at end of file diff --git a/javaweb-tomcat-sidecar/javaweb.yaml b/javaweb-tomcat-sidecar/javaweb.yaml new file mode 100644 index 00000000..c29bcd7c --- /dev/null +++ b/javaweb-tomcat-sidecar/javaweb.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: javaweb +spec: + containers: + - image: resouer/sample:v1 + name: war + volumeMounts: + - mountPath: /app + name: app-volume + - image: resouer/mytomcat:7.0 + name: tomcat + command: ["sh","-c","/root/apache-tomcat-7.0.42-v2/bin/start.sh"] + volumeMounts: + - mountPath: /root/apache-tomcat-7.0.42-v2/webapps + name: app-volume + ports: + - containerPort: 8080 + hostPort: 8001 + volumes: + - name: app-volume \ No newline at end of file diff --git a/javaweb-tomcat-sidecar/workflow.png b/javaweb-tomcat-sidecar/workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..7be56d082e6956c230cab02ddaa61bb2970ea4e9 GIT binary patch literal 46353 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

U@2QgD=m)dOyV=JEb1k*D-{lWJ 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