From c84ce76c59823cc52cc4985be209321c9ce1208f Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Wed, 17 Aug 2016 17:22:05 -0700 Subject: examples files for kube int --- doc/ext/kubernetes/.zerotierCliSettings | 18 ++++++ doc/ext/kubernetes/Dockerfile | 8 +++ doc/ext/kubernetes/entrypoint.sh | 3 + doc/ext/kubernetes/server.js | 8 +++ doc/ext/kubernetes/ztkube.md | 110 ++++++++++++++++++++++++++++++++ doc/ext/ztkube.md | 110 -------------------------------- 6 files changed, 147 insertions(+), 110 deletions(-) create mode 100644 doc/ext/kubernetes/.zerotierCliSettings create mode 100644 doc/ext/kubernetes/Dockerfile create mode 100644 doc/ext/kubernetes/entrypoint.sh create mode 100644 doc/ext/kubernetes/server.js create mode 100644 doc/ext/kubernetes/ztkube.md delete mode 100644 doc/ext/ztkube.md (limited to 'doc') diff --git a/doc/ext/kubernetes/.zerotierCliSettings b/doc/ext/kubernetes/.zerotierCliSettings new file mode 100644 index 00000000..abe4cf6c --- /dev/null +++ b/doc/ext/kubernetes/.zerotierCliSettings @@ -0,0 +1,18 @@ +{ + "configVersion": 1, + "defaultCentral": "@my.zerotier.com", + "defaultController": "@my.zerotier.com", + "defaultOne": "@local", + "things": { + "local": { + "auth": "XXXXXXXXXXXXXXXXXXXXXXXX", + "type": "one", + "url": "http://127.0.0.1:9993/" + }, + "my.zerotier.com": { + "auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "type": "central", + "url": "https://my.zerotier.com/" + }, + } +} \ No newline at end of file diff --git a/doc/ext/kubernetes/Dockerfile b/doc/ext/kubernetes/Dockerfile new file mode 100644 index 00000000..030fac61 --- /dev/null +++ b/doc/ext/kubernetes/Dockerfile @@ -0,0 +1,8 @@ +FROM node:4.4 +EXPOSE 8080 +COPY server.js . +COPY zerotier . +COPY zerotier-cli . +COPY entrypoint.sh . +COPY .zerotierCliSettings ?> +CMD node server.js \ No newline at end of file diff --git a/doc/ext/kubernetes/entrypoint.sh b/doc/ext/kubernetes/entrypoint.sh new file mode 100644 index 00000000..0d26bd8f --- /dev/null +++ b/doc/ext/kubernetes/entrypoint.sh @@ -0,0 +1,3 @@ +./zerotier +zerotier-cli join $(NWID).conf +zerotier-cli net-auth $(NWID) $(DEVID) \ No newline at end of file diff --git a/doc/ext/kubernetes/server.js b/doc/ext/kubernetes/server.js new file mode 100644 index 00000000..a4b08bb8 --- /dev/null +++ b/doc/ext/kubernetes/server.js @@ -0,0 +1,8 @@ +var http = require('http'); +var handleRequest = function(request, response) { + console.log('Received request for URL: ' + request.url); + response.writeHead(200); + response.end('Hello World!'); +}; +var www = http.createServer(handleRequest); +www.listen(8080); diff --git a/doc/ext/kubernetes/ztkube.md b/doc/ext/kubernetes/ztkube.md new file mode 100644 index 00000000..2f70cbad --- /dev/null +++ b/doc/ext/kubernetes/ztkube.md @@ -0,0 +1,110 @@ +Kubernetes + ZeroTier +==== + +A self-authorizing Kubernetes cluster deployment over a private ZeroTier network. + +This is a quick tutorial for setting up a Kubernetes deployment which can self-authorize each new replica onto your private ZeroTier network with no additional configuration needed when you scale. The Kubernetes-specific instructions and content is based on the [hellonode](http://kubernetes.io/docs/hellonode/) tutorial. All of the files discussed below can be found [here](); + + + +## Preliminary tasks + +**Step 1: Go to [my.zerotier.com](https://my.zerotier.com) and generate an API key. This key will be used by ZeroTier to automatically authorize new instances of your VMs to join your deployment network during replication.** + +**Step 2: Create a new `private` network. Take note of the network ID, henceforth: `nwid`** + +**Step 3: Follow the instructions from the [hellonode](ttp://kubernetes.io/docs/hellonode/) tutorial and set up your development system (install Google Cloud SDK).** + + + + +## Construct docker container + +**Step 4: Create necessary files for inclusion in Dockerfile** + - `mkdir ztkube` + +Add the following files to the `ztkube` directory. These files will be compiled into the Docker image. + + - Create an empty `.conf` file to specify the private deployment network you created in *Step 2*: + + - The CLI tool config file `.zerotierCliSettings` should contain your API keys to authorize new devices on your network. In this example the default controller is hosted by us at [my.zerotier.com](https://my.zerotier.com). Alternatively, you can host your own network controller but you'll need to modify the CLI config file accordingly. + +``` +{ + "configVersion": 1, + "defaultCentral": "@my.zerotier.com", + "defaultController": "@my.zerotier.com", + "defaultOne": "@local", + "things": { + "local": { + "auth": "XXXXXXXXXXXXXXXXXXXXXXXX", + "type": "one", + "url": "http://127.0.0.1:9993/" + }, + "my.zerotier.com": { + "auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "type": "central", + "url": "https://my.zerotier.com/" + }, + } +} +``` + + + - The `Dockerfile` will copy the ZeroTier service as well as the ZeroTier CLI to the image: + +``` +FROM node:4.4 +EXPOSE 8080 +COPY server.js . +COPY zerotier . +COPY zerotier-cli . +COPY entrypoint.sh . +COPY .zerotierCliSettings ?> +CMD node server.js +``` + + - The `entrypoint.sh` script will start the ZeroTier service in the VM, attempt to join your deployment network and automatically authorize the new VM if your network is set to private: + +``` +./zerotier +zerotier-cli join $(NWID).conf +zerotier-cli net-auth $(NWID) $(DEVID) +``` + +**Step 5: Lastly, build the image:** + +`docker build -t gcr.io/$PROJECT_ID/hello-node .` + + + +**Step 6: Push the docker image to your *Container Registry*** + +`gcloud docker push gcr.io/$PROJECT_ID/hello-node:v1` + + +## Deploy! + +**Step 7: Create Kubernetes Cluster** + +`gcloud config set compute/zone us-central1-a` + +`gcloud container clusters create hello-world` + +`gcloud container clusters get-credentials hello-world` + + + +**Step 8: Create your pod** + +`kubectl run hello-node --image=gcr.io/$PROJECT_ID/hello-node:v1 --port=8080` + + + +**Step 9: Scale** + +`kubectl scale deployment hello-node --replicas=4` + +## Verify + +Now, after a minute or so you can use `zerotier-cli net-members ` to show all of your VM instances on your ZeroTier deployment network. If you haven't [configured your local CLI](https://github.com/zerotier/ZeroTierOne/tree/dev/cli), you can simply log into [my.zerotier.com](https://my.zerotier.com), go to *Networks -> nwid* to check that your VMs are indeed members of your private network. diff --git a/doc/ext/ztkube.md b/doc/ext/ztkube.md deleted file mode 100644 index be176a33..00000000 --- a/doc/ext/ztkube.md +++ /dev/null @@ -1,110 +0,0 @@ -Kubernetes + ZeroTier -==== - -A self-authorizing Kubernetes deployment on a ZeroTier private network. - -This is a quick tutorial for setting up a Kubernetes deployment which can self-authorize each new replica onto your private ZeroTier network with no additional configuration needed when you scale. The Kubernetes-specific instructions and content is based on the [hellonode](http://kubernetes.io/docs/hellonode/) tutorial. All of the files discussed below can be found [here](); - - - -## Preliminary tasks - -**Step 1: Go to [my.zerotier.com](https://my.zerotier.com) and generate an API key. This key will be used by ZeroTier to automatically authorize new instances of your VMs to join your deployment network during replication.** - -**Step 2: Create a new `private` network. Take note of the network ID, henceforth: `nwid`** - -**Step 3: Follow the instructions from the [hellonode](ttp://kubernetes.io/docs/hellonode/) tutorial and set up your development system (install Google Cloud SDK).** - - - - -## Construct docker container - -**Step 4: Create necessary files for inclusion in Dockerfile** - - `mkdir ztkube` - -Add the following files to the `ztkube` directory. These files will be compiled into the Docker image. - - - Create an empty `.conf` file to specify the private deployment network you created in *Step 2*: - - - The CLI tool config file `.zerotierCliSettings` should contain your API keys to authorize new devices on your network. In this example the default controller is hosted by us at [my.zerotier.com](https://my.zerotier.com). Alternatively, you can host your own network controller but you'll need to modify the CLI config file accordingly. - -``` -{ - "configVersion": 1, - "defaultCentral": "@my.zerotier.com", - "defaultController": "@my.zerotier.com", - "defaultOne": "@local", - "things": { - "local": { - "auth": "XXXXXXXXXXXXXXXXXXXXXXXX", - "type": "one", - "url": "http://127.0.0.1:9993/" - }, - "my.zerotier.com": { - "auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", - "type": "central", - "url": "https://my.zerotier.com/" - }, - } -} -``` - - - - The `Dockerfile` will copy the ZeroTier service as well as the ZeroTier CLI to the image: - -``` -FROM node:4.4 -EXPOSE 8080 -COPY server.js . -COPY zerotier . -COPY zerotier-cli . -COPY entrypoint.sh . -COPY .zerotierCliSettings ?> -CMD node server.js -``` - - - The `entrypoint.sh` script will start the ZeroTier service in the VM, attempt to join your deployment network and automatically authorize the new VM if your network is set to private: - -``` -./zerotier -zerotier-cli join $(NWID).conf -zerotier-cli net-auth $(NWID) $(DEVID) -``` - -**Step 5: Lastly, build the image:** - -`docker build -t gcr.io/$PROJECT_ID/hello-node .` - - - -**Step 6: Push the docker image to your *Container Registry*** - -`gcloud docker push gcr.io/$PROJECT_ID/hello-node:v1` - - -## Deploy! - -**Step 7: Create Kubernetes Cluster** - -`gcloud config set compute/zone us-central1-a` - -`gcloud container clusters create hello-world` - -`gcloud container clusters get-credentials hello-world` - - - -**Step 8: Create your pod** - -`kubectl run hello-node --image=gcr.io/$PROJECT_ID/hello-node:v1 --port=8080` - - - -**Step 9: Scale** - -`kubectl scale deployment hello-node --replicas=4` - -## Verify - -Now, after a minute or so you can use `zerotier-cli net-members ` to show all of your VM instances on your ZeroTier deployment network. If you haven't [configured your local CLI](), you can simply log into [my.zerotier.com](https://my.zerotier.com), go to *Networks -> nwid*. -- cgit v1.2.3