Skip to content

Commit d5dd212

Browse files
author
Matthew Fisher
committed
ref(quickstart): swap out Vagrant with Minikube
kube-up.sh has long been deprecated. This replaces the vagrant quickstart docs with minikube instead as the successor for local kube development.
1 parent ea27199 commit d5dd212

14 files changed

Lines changed: 106 additions & 245 deletions

File tree

charts/workflow/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ router:
193193
service_annotations:
194194
#<example-key>: <example-value>
195195

196-
# Enable to pin router pod hostPort when using vagrant
196+
# Enable to pin router pod hostPort when using minikube
197197
host_port:
198198
enabled: false
199199

mkdocs.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ pages:
2121
- Boot: quickstart/provider/azure-acs/boot.md
2222
- DNS: quickstart/provider/azure-acs/dns.md
2323
- Install Workflow: quickstart/provider/azure-acs/install-azure-acs.md
24-
- Vagrant:
25-
- Boot: quickstart/provider/vagrant/boot.md
26-
- DNS: quickstart/provider/vagrant/dns.md
27-
- Install Workflow: quickstart/provider/vagrant/install-vagrant.md
24+
- Minikube:
25+
- Boot: quickstart/provider/minikube/boot.md
26+
- DNS: quickstart/provider/minikube/dns.md
27+
- Install Workflow: quickstart/provider/minikube/install-minikube.md
2828
- Deploy Your First App: quickstart/deploy-an-app.md
2929
- Understanding Workflow:
3030
- Concepts: understanding-workflow/concepts.md

src/contributing/development-environment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ To run a Kubernetes cluster locally or elsewhere to support your development act
141141

142142
To facilitate deploying Docker images containing your changes to your Kubernetes cluster, you will need to make use of a Docker registry. This is a location to where you can push your custom-built images and from where your Kubernetes cluster can retrieve those same images.
143143

144-
If your development cluster runs locally (in Vagrant, for instance), the most efficient and economical means of achieving this is to run a Docker registry locally _as_ a Docker container.
144+
If your development cluster runs locally (in Minikube, for instance), the most efficient and economical means of achieving this is to run a Docker registry locally _as_ a Docker container.
145145

146146
To facilitate this, most Deis components provide a make target to create such a registry:
147147

src/managing-workflow/configuring-dns.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ The `LoadBalancer Ingress` field typically describes an existing domain name or
3131

3232
## Without a Load Balancer
3333

34-
On some platforms (Vagrant, for instance), a load balancer is not an easy or practical thing to provision. In these cases, one can directly identify the public IP of a Kubernetes node that is hosting a router pod and use that information to configure the local `/etc/hosts` file.
34+
On some platforms (Minikube, for instance), a load balancer is not an easy or practical thing to provision. In these cases, one can directly identify the public IP of a Kubernetes node that is hosting a router pod and use that information to configure the local `/etc/hosts` file.
3535

3636
Because wildcard entries do not work in a local `/etc/hosts` file, using this strategy may result in frequent editing of that file to add fully-qualified subdomains of a cluster for each application added to that cluster. Because of this a more viable option may be to utilize the [xip.io][xip] service.
3737

src/managing-workflow/configuring-load-balancers.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Configuring Load Balancers
22

3-
Depending on what distribution of Kubernetes you use and where you host it, installation of Deis Workflow may automatically provision an external (to Kubernetes) load balancer or similar mechanism for directing inbound traffic from beyond the cluster to the Deis router(s). For example, [kube-aws](https://coreos.com/kubernetes/docs/latest/kubernetes-on-aws.html) and [Google Container Engine](https://cloud.google.com/container-engine/) both do this. On some other platforms-- Vagrant or bare metal, for instance-- this must either be accomplished manually or does not apply at all.
3+
Depending on what distribution of Kubernetes you use and where you host it, installation of Deis Workflow may automatically provision an external (to Kubernetes) load balancer or similar mechanism for directing inbound traffic from beyond the cluster to the Deis router(s). For example, [kube-aws](https://coreos.com/kubernetes/docs/latest/kubernetes-on-aws.html) and [Google Container Engine](https://cloud.google.com/container-engine/) both do this. On some other platforms-- Minikube or bare metal, for instance-- this must either be accomplished manually or does not apply at all.
44

55
## Idle connection timeouts
66

src/quickstart/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Cloud-based options:
2323
* [Amazon Web Services](provider/aws/boot.md): uses Kubernetes upstream `kube-up.sh` to boot a cluster on AWS EC2.
2424
* [Azure Container Service](provider/azure-acs/boot.md): uses Azure Container Service to provision Kubernetes and install Workflow.
2525

26-
If you would like to test on your local machine follow, our guide for [Vagrant](provider/vagrant/boot.md).
26+
If you would like to test on your local machine follow, our guide for [Minikube](provider/minikube/boot.md).
2727

2828
If you have already created a Kubernetes cluster, check out the [system requirements](../installing-workflow/system-requirements.md) and then proceed to [install Deis Workflow on your own Kubernetes cluster](../installing-workflow/index.md).
2929

src/quickstart/install-cli-tools.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Cloud-based options:
4242
* [Amazon Web Services](provider/aws/boot.md): uses Kubernetes upstream `kube-up.sh` to boot a cluster on AWS EC2.
4343
* [Azure Container Service](provider/azure-acs/boot.md): provides a managed Kubernetes environment.
4444

45-
If you would like to test on your local machine follow our guide for [Vagrant](provider/vagrant/boot.md).
45+
If you would like to test on your local machine follow our guide for [Minikube](provider/minikube/boot.md).
4646

4747

4848
[helm-install]: https://github.com/kubernetes/helm#install
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Booting Kubernetes Using Minikube
2+
3+
This guide will walk you through the process of installing a small development
4+
Kubernetes cluster on your local machine using [minikube](https://github.com/kubernetes/minikube).
5+
6+
## Pre-requisites
7+
8+
* OS X
9+
* [xhyve driver](https://github.com/kubernetes/minikube/blob/master/DRIVERS.md#xhyve-driver), [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or [VMware Fusion](https://www.vmware.com/products/fusion) installation
10+
* Linux
11+
* [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or [KVM](http://www.linux-kvm.org/) installation
12+
* Windows
13+
* [Hyper-V](https://github.com/kubernetes/minikube/blob/master/DRIVERS.md#hyperv-driver)
14+
* VT-x/AMD-v virtualization must be enabled in BIOS
15+
* The most recent version of `kubectl`. You can install kubectl following
16+
[these steps](https://kubernetes.io/docs/user-guide/prereqs/).
17+
* Internet connection
18+
* You will need a decent internet connection running `minikube start` for the first time for
19+
Minikube to pull its Docker images. It might take Minikube some time to start.
20+
21+
## Download and Unpack Minikube
22+
23+
See the installation instructions for the
24+
[latest release of minikube](https://github.com/kubernetes/minikube/releases).
25+
26+
## Boot Your First Cluster
27+
28+
We are now ready to boot our first Kubernetes cluster using Minikube!
29+
30+
```
31+
$ minikube start --disk-size=60g --memory=4096
32+
Starting local Kubernetes cluster...
33+
Kubectl is now configured to use the cluster.
34+
```
35+
36+
Now that the cluster is up and ready, `minikube` automatically configures `kubectl` on your machine
37+
with the appropriate authentication and endpoint information.
38+
39+
```
40+
$ kubectl cluster-info
41+
Kubernetes master is running at https://192.168.99.100:8443
42+
KubeDNS is running at https://192.168.99.100:8443/api/v1/proxy/namespaces/kube-system/services/kube-dns
43+
kubernetes-dashboard is running at https://192.168.99.100:8443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
44+
45+
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
46+
```
47+
48+
You are now ready to [install Deis Workflow](install-minikube.md)
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
## Find Your Load Balancer Address
2+
3+
During installation, Deis Workflow specifies that Kubernetes should provision and attach a load
4+
balancer to the router component. The router component is responsible for routing HTTP and HTTPS
5+
requests from outside the cluster to applications that are managed by Deis Worfklow. In cloud
6+
environments, Kubernetes provisions and attaches a load balancer for you. Since we are running in a
7+
local environment, we need to do a little bit of extra work to send requests to the router.
8+
9+
First, determine the ip address allocated to the worker node.
10+
11+
```
12+
$ minikube ip
13+
192.168.99.100
14+
```
15+
16+
## Prepare the Hostname
17+
18+
Now that you have the ip address of your virtual machine, we can use the `nip.io` DNS service to
19+
route arbitrary hostnames to the Deis Workflow edge router. This lets us point the Workflow CLI at
20+
your cluster without having to either use your own domain or update DNS!
21+
22+
To verify the Workflow API server and nip.io, construct your hostname by taking the ip address for
23+
your load balancer and adding `nip.io`. For our example above, the address would be `192.168.99.100`.
24+
25+
Nip answers with the ip address no matter the hostname:
26+
27+
```
28+
$ host 192.168.99.100.nip.io
29+
192.168.99.100.nip.io has address 192.168.99.100
30+
$ host something-random.192.168.99.100.nip.io
31+
something-random.192.168.99.100.nip.io has address 192.168.99.100
32+
```
33+
34+
By default, any HTTP traffic for the hostname `deis` will be sent to the Workflow API service. To test that everything is connected properly you may validate connectivity using `curl`:
35+
36+
```
37+
$ curl http://deis.192.168.99.100.nip.io/v2/ && echo
38+
{"detail":"Authentication credentials were not provided."}
39+
```
40+
41+
You should see a failed request because we provided no credentials to the API server.
42+
43+
Remember the hostname, we will use it in the next step.
44+
45+
[next: deploy your first app](../../deploy-an-app.md)

src/quickstart/provider/vagrant/install-vagrant.md renamed to src/quickstart/provider/minikube/install-minikube.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Install Deis Workflow on Vagrant
1+
# Install Deis Workflow on Minikube
22

33
## Check Your Setup
44

0 commit comments

Comments
 (0)