automate dev environment build
This commit is contained in:
parent
97d7119eec
commit
58f5eb4e1f
3 changed files with 76 additions and 0 deletions
4
Makefile
4
Makefile
|
@ -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
|
||||||
|
|
|
@ -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
46
hack/build-dev-env.sh
Executable 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
|
Loading…
Reference in a new issue