automate dev environment build

This commit is contained in:
Zenara Daley 2018-04-24 16:29:31 -04:00
parent 97d7119eec
commit 58f5eb4e1f
3 changed files with 76 additions and 0 deletions

View file

@ -209,3 +209,7 @@ dep-ensure:
dep version || go get -u github.com/golang/dep/cmd/dep dep version || go get -u github.com/golang/dep/cmd/dep
dep ensure -v dep ensure -v
dep prune -v dep prune -v
.PHONY: dev-env
dev-env:
@./hack/build-dev-env.sh

View file

@ -3,6 +3,32 @@
This document explains how to get started with developing for NGINX Ingress controller. This document explains how to get started with developing for NGINX Ingress controller.
It includes how to build, test, and release ingress controllers. It includes how to build, test, and release ingress controllers.
## Quick Start
### Initial developer environment build
**Prequisites**: Minikube must be installed; See [releases](https://github.com/kubernetes/minikube/releases) for installation instructions.
If you are using **MacOS** and deploying to **minikube**, the following command will build the local nginx controller container image and deploy the ingress controller onto a minikube cluster with RBAC enabled in the namespace `ingress-nginx`:
```
$ make dev-env
```
### Updating the deployment
The nginx controller container image can be rebuilt using:
```
$ ARCH=amd64 TAG=dev REGISTRY=$USER/ingress-controller make build container
```
The image will only be used by pods created after the rebuild. To delete old pods which will cause new ones to spin up:
```
$ kubectl get pods -n ingress-nginx
$ kubectl delete pod -n ingress-nginx nginx-ingress-controller-<unique-pod-id>
```
## Dependencies ## Dependencies
The build uses dependencies in the `vendor` directory, which The build uses dependencies in the `vendor` directory, which

46
hack/build-dev-env.sh Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
# Copyright 2018 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
NAMESPACE=ingress-nginx
minikube start
eval $(minikube docker-env)
echo "[dev-env] installing dependencies"
go get -u github.com/golang/dep
dep ensure
echo "[dev-env] building container"
ARCH=amd64 TAG=dev REGISTRY=$USER/ingress-controller make build container
echo "[dev-env] installing kubectl"
brew install kubectl
echo "[dev-env] deploying NGINX Ingress controller in namespace $NAMESPACE"
cat ./deploy/namespace.yaml | kubectl apply --namespace=$NAMESPACE -f -
cat ./deploy/default-backend.yaml | kubectl apply --namespace=$NAMESPACE -f -
cat ./deploy/configmap.yaml | kubectl apply --namespace=$NAMESPACE -f -
cat ./deploy/tcp-services-configmap.yaml | kubectl apply --namespace=$NAMESPACE -f -
cat ./deploy/udp-services-configmap.yaml | kubectl apply --namespace=$NAMESPACE -f -
cat ./deploy/rbac.yaml | kubectl apply --namespace=$NAMESPACE -f -
cat ./deploy/with-rbac.yaml | kubectl apply --namespace=$NAMESPACE -f -
echo "updating image..."
kubectl set image \
deployments \
--namespace ingress-nginx \
--selector app=ingress-nginx \
nginx-ingress-controller=index.docker.io/$USER/ingress-controller/nginx-ingress-controller:dev