mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-10-31 23:30:47 +00:00 
			
		
		
		
	Merge pull request #1669 from rneugeba/demo-up
Update DockerCon 2017 demo files
This commit is contained in:
		| @@ -1,11 +1,12 @@ | |||||||
| This directory contains files used in moby demos. | This directory contains files used in Moby/LinuxKit DockerCon 2017 | ||||||
|  | keynote demos. They mostly serve as examples and probably need | ||||||
|  | adjustments to your specific environment. | ||||||
|  |  | ||||||
| # Prerequisites | # Prerequisites | ||||||
|  |  | ||||||
| Most of the scripts/files assume you are on a Mac. | Most of the scripts/files assume you are on a Mac. | ||||||
|  |  | ||||||
| - Recent Docker for Mac installed (edge, nightly, master channel) | - Recent Docker for Mac installed (We used 17.05.0-ce-rc1-mac8 from the edge channel) | ||||||
|   For some of the demo setup, you need at least 17.05.0-ce-rc1 |  | ||||||
| - For the GCP portion: `brew install google-cloud-sdk` | - For the GCP portion: `brew install google-cloud-sdk` | ||||||
| - Infrakit: Clone [infrakit](https://github.com/docker/infrakit) and | - Infrakit: Clone [infrakit](https://github.com/docker/infrakit) and | ||||||
|   the [GCP plugin](https://github.com/docker/infrakit.gcp) for |   the [GCP plugin](https://github.com/docker/infrakit.gcp) for | ||||||
| @@ -25,16 +26,6 @@ gcloud auth application-default login | |||||||
|  |  | ||||||
| You may also want to create ssh-keys and upload them. See the [Generating a new SSH key-pair section](https://cloud.google.com/compute/docs/instances/connecting-to-instance) | You may also want to create ssh-keys and upload them. See the [Generating a new SSH key-pair section](https://cloud.google.com/compute/docs/instances/connecting-to-instance) | ||||||
|  |  | ||||||
| One time configuration of the network: |  | ||||||
| ``` |  | ||||||
| gcloud compute networks create rneugeba-demo --mode auto |  | ||||||
| gcloud compute networks subnets list |  | ||||||
| # get IP subnet for rneugeba-demo |  | ||||||
| gcloud compute firewall-rules create rneugeba-demo-internal --network \ |  | ||||||
|     rneugeba-demo --allow tcp,udp,icmp --source-ranges 10.128.0.0/9 |  | ||||||
| ``` |  | ||||||
| The firewall setup means that all our projects networks can talk to the demo network. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # Expose VMs ports on localhost | # Expose VMs ports on localhost | ||||||
|  |  | ||||||
| @@ -44,6 +35,6 @@ You can use a `socat` container to forward ports from the VM to localhost (via D | |||||||
| ``` | ``` | ||||||
| And then run: | And then run: | ||||||
| ``` | ``` | ||||||
| docker run --rm -t -d -p 8080:8080 socat tcp-listen:8080,reuseaddr,fork tcp:192.168.65.100:80 | docker run --rm -t -d -p 8080:8080 socat tcp-listen:6379,reuseaddr,fork tcp:192.168.65.100:6379 | ||||||
| ``` | ``` | ||||||
| This forwards local port `8080` to `192.168.65.100:80`, so if you start, say the `intro` image, run `moby run -ip 196.168.65.100 intro` | This forwards local (host) port `6379` to `192.168.65.100:6379`, so if you start, say the `redis-os` image, run `moby run -ip 196.168.65.100 redis-os`. | ||||||
|   | |||||||
| @@ -44,9 +44,23 @@ You can perform rolling updates, by for example, switching the kernel version in | |||||||
|  |  | ||||||
| ## Infrakit GCP setup | ## Infrakit GCP setup | ||||||
|  |  | ||||||
| Note: This setup is somewhat specific to our GCP setup (IP addresses | You need to do the general setup as described in the demo [README](../README.md). Specifically, you need the `CLOUDSDK_*` environment variables set and you need to have authenticated with GCP. | ||||||
| and account info) and needs to be adjusted to your setting. The |  | ||||||
| configuration is documented in the top-level README.md. | Note, the demo uses static IP addresses and they are specific to our | ||||||
|  | setup. The IP addresses need to be changed in the `infrakit-gcp.json` | ||||||
|  | config file. | ||||||
|  |  | ||||||
|  | In order to use the static IP addresses we created a custom network: | ||||||
|  | ``` | ||||||
|  | gcloud compute networks create rneugeba-demo --mode auto | ||||||
|  | gcloud compute networks subnets list | ||||||
|  | # get IP subnet for rneugeba-demo | ||||||
|  | gcloud compute firewall-rules create rneugeba-demo-internal --network \ | ||||||
|  |     rneugeba-demo --allow tcp,udp,icmp --source-ranges 10.132.0.0/9 | ||||||
|  | ``` | ||||||
|  | The firewall setup means that all our projects networks can talk to the demo | ||||||
|  | network. | ||||||
|  |  | ||||||
|  |  | ||||||
| Build the image and upload it: | Build the image and upload it: | ||||||
| ``` | ``` | ||||||
|   | |||||||
| @@ -67,8 +67,18 @@ services: | |||||||
|       - CAP_SETUID |       - CAP_SETUID | ||||||
|       - CAP_SETGID |       - CAP_SETGID | ||||||
|     net: host |     net: host | ||||||
|  |   - name: node_exporter | ||||||
|  |     image: "linuxkit/node_exporter:0c7c1588e4cbce9cc946c1a84d3902b38b4b7ada" | ||||||
|  |     capabilities: | ||||||
|  |      - all | ||||||
|  |     net: host | ||||||
|  |     pid: host | ||||||
|  |     binds: | ||||||
|  |      - /proc:/host/proc | ||||||
|  |      - /sys:/host/sys | ||||||
|  |      - /:/rootfs | ||||||
|   - name: etcd |   - name: etcd | ||||||
|     image: "linuxkit/etcd" |     image: "moby/etcd" | ||||||
|     capabilities: |     capabilities: | ||||||
|      - CAP_CHOWN |      - CAP_CHOWN | ||||||
|      - CAP_SETUID |      - CAP_SETUID | ||||||
| @@ -83,4 +93,8 @@ services: | |||||||
|  |  | ||||||
| outputs: | outputs: | ||||||
|   - format: kernel+initrd |   - format: kernel+initrd | ||||||
|   - format: gcp-img |   - format: gcp | ||||||
|  |     project: docker4x | ||||||
|  |     bucket: rolf | ||||||
|  |     family: moby-demo | ||||||
|  |     replace: true | ||||||
|   | |||||||
| @@ -14,9 +14,9 @@ | |||||||
|             "Plugin": "instance-hyperkit", |             "Plugin": "instance-hyperkit", | ||||||
|             "Properties": { |             "Properties": { | ||||||
|                 "kernel+initrd": "etcd", |                 "kernel+initrd": "etcd", | ||||||
|                 "Disk" : 1024, |                 "Disk" : 2048, | ||||||
|                 "CPUs" : 1, |                 "CPUs" : 1, | ||||||
|                 "Memory" : 512 |                 "Memory" : 1024 | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "Flavor": { |         "Flavor": { | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| #! /bin/sh | #! /bin/sh | ||||||
| docker build -t linuxkit/etcd . | docker build -t moby/etcd . | ||||||
|  |  | ||||||
| docker build -t etcd.local -f Dockerfile.local . | docker build -t etcd.local -f Dockerfile.local . | ||||||
|   | |||||||
| @@ -10,7 +10,8 @@ mkdir -p $INFRAKIT_HOME/cli | |||||||
|  |  | ||||||
| infrakit-flavor-vanilla & | infrakit-flavor-vanilla & | ||||||
| infrakit-instance-hyperkit & | infrakit-instance-hyperkit & | ||||||
| infrakit-instance-gcp --project docker4x --zone europe-west1-d & | infrakit-instance-gcp --project $CLOUDSDK_CORE_PROJECT --zone $CLOUDSDK_COMPUTE_ZONE & | ||||||
|  |  | ||||||
|  |  | ||||||
| # start the group plugin in the foreground. If it exits, it will take | # start the group plugin in the foreground. If it exits, it will take | ||||||
| # the others down as well. | # the others down as well. | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								projects/demo/prom/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								projects/demo/prom/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | /data | ||||||
							
								
								
									
										2
									
								
								projects/demo/prom/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								projects/demo/prom/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | FROM prom/prometheus | ||||||
|  | ADD prometheus.yml /etc/prometheus/ | ||||||
							
								
								
									
										2
									
								
								projects/demo/prom/Dockerfile.us-central1-f
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								projects/demo/prom/Dockerfile.us-central1-f
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | FROM prom/prometheus:v1.6.0 | ||||||
|  | ADD prometheus-us-central.yml /etc/prometheus/prometheus.yml | ||||||
							
								
								
									
										3
									
								
								projects/demo/prom/build-prom.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								projects/demo/prom/build-prom.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | #! /bin/sh | ||||||
|  |  | ||||||
|  | docker build -t moby/prom-us-central1-f -f Dockerfile.us-central1-f . | ||||||
							
								
								
									
										62
									
								
								projects/demo/prom/etcd-prom-us-central1-f.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								projects/demo/prom/etcd-prom-us-central1-f.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | kernel: | ||||||
|  |   image: "mobylinux/kernel:4.9.x" | ||||||
|  |   cmdline: "console=ttyS0 page_poison=1" | ||||||
|  | init: | ||||||
|  |   - linuxkit/init:63eed9ca7a09d2ce4c0c5e7238ac005fa44f564b | ||||||
|  |   - mobylinux/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9 | ||||||
|  |   - mobylinux/containerd:18eaf72f3f4f9a9f29ca1951f66df701f873060b | ||||||
|  |   - mobylinux/ca-certificates:eabc5a6e59f05aa91529d80e9a595b85b046f935 | ||||||
|  | onboot: | ||||||
|  |   - name: sysctl | ||||||
|  |     image: "linuxkit/sysctl:1f5ec5d5e6f7a7a1b3d2ff9dd9e36fd6fb14756a" | ||||||
|  |     net: host | ||||||
|  |     pid: host | ||||||
|  |     ipc: host | ||||||
|  |     capabilities: | ||||||
|  |      - CAP_SYS_ADMIN | ||||||
|  |     readonly: true | ||||||
|  |   - name: dhcpcd | ||||||
|  |     image: "linuxkit/dhcpcd:48e249ebef6a521eed886b3bce032db69fbb4afa" | ||||||
|  |     binds: | ||||||
|  |      - /var:/var | ||||||
|  |      - /tmp/etc:/etc | ||||||
|  |     capabilities: | ||||||
|  |      - CAP_NET_ADMIN | ||||||
|  |      - CAP_NET_BIND_SERVICE | ||||||
|  |      - CAP_NET_RAW | ||||||
|  |     net: host | ||||||
|  |     command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"] | ||||||
|  |   - name: metadata | ||||||
|  |     image: "linuxkit/metadata:c5567e65e9125f0a4c4b8cb9d56a86377be62652" | ||||||
|  |     binds: | ||||||
|  |      - /dev:/dev | ||||||
|  |      - /var:/var | ||||||
|  |      - /tmp/etc/resolv.conf:/etc/resolv.conf | ||||||
|  |     net: host | ||||||
|  |     capabilities: | ||||||
|  |      - CAP_SYS_ADMIN | ||||||
|  | services: | ||||||
|  |   - name: rngd | ||||||
|  |     image: "mobylinux/rngd:3dad6dd43270fa632ac031e99d1947f20b22eec9" | ||||||
|  |     capabilities: | ||||||
|  |      - CAP_SYS_ADMIN | ||||||
|  |     oomScoreAdj: -800 | ||||||
|  |     readonly: true | ||||||
|  |   - name: prometheus | ||||||
|  |     image: "moby/prom-us-central1-f" | ||||||
|  |     binds: | ||||||
|  |       - /dev:/dev | ||||||
|  |       - /var/lib/misc:/data | ||||||
|  |     capabilities: | ||||||
|  |       - all | ||||||
|  |     net: host | ||||||
|  | trust: | ||||||
|  |   image: | ||||||
|  |     - mobylinux/kernel | ||||||
|  | outputs: | ||||||
|  |   - format: kernel+initrd | ||||||
|  |   - format: gcp | ||||||
|  |     project: docker4x | ||||||
|  |     bucket: rolf | ||||||
|  |     family: moby-demo | ||||||
|  |     replace: true | ||||||
							
								
								
									
										19
									
								
								projects/demo/prom/prometheus-local.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								projects/demo/prom/prometheus-local.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | global: | ||||||
|  |  | ||||||
|  | scrape_configs: | ||||||
|  |   # - job_name: 'prometheus' | ||||||
|  |   #   scrape_interval: 20s | ||||||
|  |   #   static_configs: | ||||||
|  |   #     - targets: ['localhost:9090'] | ||||||
|  |  | ||||||
|  |   # Scrape the Node Exporter | ||||||
|  |   - job_name: 'node' | ||||||
|  |     scrape_interval: 20s | ||||||
|  |     static_configs: | ||||||
|  |       - targets: ['localhost:9100', 'localhost:9101', 'localhost:9102', 'localhost:9103', 'localhost:9104'] | ||||||
|  |  | ||||||
|  |   # # Scrape the containerd exporter | ||||||
|  |   # - job_name: 'containerd' | ||||||
|  |   #   scrape_interval: 15s | ||||||
|  |   #   static_configs: | ||||||
|  |   #     - targets: ['192.168.65.200:13337', '192.168.65.201:13337', '192.168.65.202:13337', '192.168.65.203:13337', '192.168.65.204:13337'] | ||||||
							
								
								
									
										13
									
								
								projects/demo/prom/prometheus-us-central.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								projects/demo/prom/prometheus-us-central.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | global: | ||||||
|  |  | ||||||
|  | scrape_configs: | ||||||
|  |   - job_name: 'prometheus' | ||||||
|  |     scrape_interval: 20s | ||||||
|  |     static_configs: | ||||||
|  |       - targets: ['localhost:9090'] | ||||||
|  |  | ||||||
|  |   # Scrape the Node Exporter | ||||||
|  |   - job_name: 'node' | ||||||
|  |     scrape_interval: 20s | ||||||
|  |     static_configs: | ||||||
|  |       - targets: ['10.128.0.200:9100', '10.128.0.201:9100', '10.128.0.202:9100', '10.128.0.203:9100', '10.128.0.204:9100'] | ||||||
							
								
								
									
										13
									
								
								projects/demo/prom/prometheus.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								projects/demo/prom/prometheus.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | global: | ||||||
|  |  | ||||||
|  | scrape_configs: | ||||||
|  |   - job_name: 'prometheus' | ||||||
|  |     scrape_interval: 20s | ||||||
|  |     static_configs: | ||||||
|  |       - targets: ['localhost:9090'] | ||||||
|  |  | ||||||
|  |   # Scrape the Node Exporter | ||||||
|  |   - job_name: 'node' | ||||||
|  |     scrape_interval: 20s | ||||||
|  |     static_configs: | ||||||
|  |       - targets: ['10.128.0.200:9100', '10.128.0.201:9100', '10.128.0.202:9100', '10.128.0.203:9100', '10.128.0.204:9100'] | ||||||
| @@ -2,9 +2,9 @@ kernel: | |||||||
|   image: "linuxkit/kernel:4.9.x" |   image: "linuxkit/kernel:4.9.x" | ||||||
|   cmdline: "console=ttyS0 console=tty0 page_poison=1" |   cmdline: "console=ttyS0 console=tty0 page_poison=1" | ||||||
| init: | init: | ||||||
|   - linuxkit/init:42fe8cb1508b3afed39eb89821906e3cc7a70551 |   - linuxkit/init:63eed9ca7a09d2ce4c0c5e7238ac005fa44f564b | ||||||
|   - linuxkit/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9 |   - linuxkit/runc:b0fb122e10dbb7e4e45115177a61a3f8d68c19a9 | ||||||
|   - linuxkit/containerd:fe1b7f438a234cb6481c6538295115eac2a0596d |   - linuxkit/containerd:18eaf72f3f4f9a9f29ca1951f66df701f873060b | ||||||
| services: | services: | ||||||
|   - name: dhcpcd |   - name: dhcpcd | ||||||
|     image: "linuxkit/dhcpcd:0d4012269cb142972fed8542fbdc3ff5a7b695cd" |     image: "linuxkit/dhcpcd:0d4012269cb142972fed8542fbdc3ff5a7b695cd" | ||||||
| @@ -16,9 +16,8 @@ services: | |||||||
|      - CAP_NET_BIND_SERVICE |      - CAP_NET_BIND_SERVICE | ||||||
|      - CAP_NET_RAW |      - CAP_NET_RAW | ||||||
|     net: host |     net: host | ||||||
|     oomScoreAdj: -800 |   - name: redis | ||||||
|   - name: nginx |     image: "redis:3.0.7-alpine" | ||||||
|     image: "nginx:1.11.12-alpine" |  | ||||||
|     capabilities: |     capabilities: | ||||||
|      - CAP_NET_BIND_SERVICE |      - CAP_NET_BIND_SERVICE | ||||||
|      - CAP_CHOWN |      - CAP_CHOWN | ||||||
		Reference in New Issue
	
	Block a user