-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
271 additions
and
365 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
SHELL := /bin/bash | ||
DOCKER := $(shell type -p docker) | ||
KIND := $(shell type -p kind) | ||
HELM := $(shell type -p helm) | ||
KUBECTL := $(shell type -p helm) | ||
|
||
WEBHOOK_IMAGE := external-dns-midaas-webhook:dev | ||
WEBHOOK_FOLDER := ./ | ||
|
||
MIDAAS_IMAGE := api-midaas:dev | ||
MIDAAS_FOLDER := ./contribute/midaas-ws/ | ||
|
||
export MIDAAS_WS_URL ?= http://midaas.default:8080/ws/ | ||
export MIDAAS_DEV_SUFFIX ?= dev.local | ||
export MIDAAS_ENV_KEYNAME ?= d1 | ||
export MIDAAS_ENV_KEYVALUE ?= test | ||
export MIDAAS_ENV_ZONES ?= $(MIDAAS_ENV_KEYNAME).$(MIDAAS_DEV_SUFFIX) | ||
|
||
KIND_CLUSTER_NAME ?= midaas | ||
KIND_INGRESS_CONTROLLER = NGINX | ||
|
||
# Commons targets | ||
|
||
all: deploy-MIDAAS deploy-WEBHOOK create-test-ingress | ||
|
||
clean: delete-cluster delete-image-MIDAAS delete-image-WEBHOOK | ||
|
||
create-test-ingress: create-cluster check-prerequisites-kubectl | ||
@kubectl apply -f ./contribute/ressources/ingress.yaml | ||
|
||
logs-%: | ||
@kubectl logs -f deployments/external-dns -c $* | ||
|
||
midaas-get-zone: | ||
@kubectl exec midaas cat /tmp/$(MIDAAS_ENV_KEYNAME).$(MIDAAS_DEV_SUFFIX) | jq | ||
|
||
# Check prerequisites | ||
|
||
check-prerequisites-docker: | ||
ifeq ("$(wildcard ${DOCKER})","") | ||
@echo "docker not found" ; exit 1 | ||
endif | ||
check-prerequisites-kind: | ||
ifeq ("$(wildcard ${KIND})","") | ||
@echo "'kind' not found" ; exit 1 | ||
endif | ||
check-prerequisites-kubectl: | ||
ifeq ("$(wildcard ${KUBECTL})","") | ||
@echo "'kubectl' not found" ; exit 1 | ||
endif | ||
check-prerequisites-helm: | ||
ifeq ("$(wildcard ${HELM})","") | ||
@echo "'helm' not found" ; exit 1 | ||
endif | ||
|
||
# Kind targets | ||
|
||
create-cluster: check-prerequisites-kind | ||
ifeq ($(shell kind get clusters |grep $(KIND_CLUSTER_NAME)), $(KIND_CLUSTER_NAME)) | ||
@echo "Kind cluster '$(KIND_CLUSTER_NAME)' already exists, skipping" | ||
else | ||
@kind create cluster --name $(KIND_CLUSTER_NAME) --config ./contribute/kind/kind-config.yaml | ||
@kubectl config use-context kind-$(KIND_CLUSTER_NAME) | ||
endif | ||
|
||
delete-cluster: check-prerequisites-kind | ||
ifeq ($(shell kind get clusters |grep $(KIND_CLUSTER_NAME)), $(KIND_CLUSTER_NAME)) | ||
@kind delete cluster --name $(KIND_CLUSTER_NAME) | ||
endif | ||
|
||
start-ingress-controller: create-cluster | ||
ifeq ($(KIND_INGRESS_CONTROLLER), NGINX) | ||
@if [ ! -s /tmp/external-dns-nginx.yaml ]; then curl -Ls https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml > /tmp/external-dns-nginx.yaml; fi | ||
@kubectl apply -f /tmp/external-dns-nginx.yaml | ||
@kubectl wait --namespace ingress-nginx \ | ||
--for=condition=ready pod \ | ||
--selector=app.kubernetes.io/component=controller \ | ||
--timeout=90s | ||
else ifeq ($(KIND_INGRESS_CONTROLLER), TRAEFIK) | ||
@echo traefik | ||
endif | ||
|
||
# Docker build and push targets | ||
build-%: check-prerequisites-docker | ||
@if [ $* = WEBHOOK ]; then docker build --target dev ${OPTIONS} -t ${$*_IMAGE} ${$*_FOLDER}; else docker build ${OPTIONS} -t ${$*_IMAGE} ${$*_FOLDER}; fi | ||
|
||
push-%: check-prerequisites-kind | ||
kind load docker-image ${$*_IMAGE} --name $(KIND_CLUSTER_NAME) | ||
|
||
delete-image-%: check-prerequisites-docker | ||
docker rmi ${$*_IMAGE} | ||
|
||
# Midaas deployment targets | ||
delete-MIDAAS: create-cluster check-prerequisites-kubectl | ||
@kubectl delete pod midaas --ignore-not-found | ||
@kubectl delete svc midaas --ignore-not-found | ||
|
||
deploy-MIDAAS: create-cluster check-prerequisites-kubectl build-MIDAAS push-MIDAAS delete-MIDAAS | ||
@kubectl run --image $(MIDAAS_IMAGE) --expose=true --port 8080 \ | ||
--env "MIDAAS_KEYNAME=$(MIDAAS_ENV_KEYNAME)" \ | ||
--env "MIDAAS_KEYVALUE=$(MIDAAS_ENV_KEYVALUE)" \ | ||
--env "MIDAAS_ZONES=$(MIDAAS_ENV_ZONES)" midaas | ||
@echo "Kubernetes midaas service is listening on port 8080" | ||
|
||
|
||
# Webhook deployment targets | ||
|
||
delete-WEBHOOK: create-cluster check-prerequisites-helm | ||
@if [ "external-dns" == "$(shell helm ls -f external-dns -o json |jq -r .[].name)" ]; then helm delete external-dns; else echo "No external-dns release is currently running"; fi | ||
|
||
deploy-WEBHOOK: start-ingress-controller check-prerequisites-helm build-WEBHOOK push-WEBHOOK delete-WEBHOOK | ||
@echo "Adding repository" | ||
@helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/ | ||
@envsubst < ./contribute/ressources/external-dns-values.yaml > /tmp/external-dns-values.yaml | ||
@helm upgrade --force --install external-dns external-dns/external-dns -f /tmp/external-dns-values.yaml | ||
@echo "external DNS is running with webhook in sidecar" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# Run all stack locally with docker | ||
|
||
## Kind cluster | ||
|
||
One single node is deployed but it can be customized in `./kind/kind-config.yml`. The cluster comes with [Traefik](https://doc.traefik.io/traefik/providers/kubernetes-ingress/) or [Nginx](https://kind.sigs.k8s.io/docs/user/ingress/#ingress-nginx) ingress controller installed with port mapping on both ports `8080` and `8443`. | ||
|
||
The node is using `extraMounts` to provide a volume binding between host working directory and `/app` to give the ability to bind mount volumes into containers during development. | ||
|
||
|
||
## Midaas Webservice | ||
|
||
A wrapper of midaas is available for development on folder `./midaas-ws`. Note that tool not really do dns records. It only writes fake domain on container filesystem. | ||
|
||
This webservice is written in python with `Fastapi` framework. The webservice listen on 3 endpoints: | ||
- `GET` - `/ws/{domaine}` : retrieve all domains for a specific zone | ||
- `PUT` - `/ws/{domaine}/{type}/{valeur}` : add or modify a DNS record | ||
You must add this body in the request: | ||
```json | ||
{"ttl": 0, "keyname": "string", "keyvalue": "string"} | ||
``` | ||
- `DELETE` - `/ws/{domaine}/{type}/{valeur}` : add or modify a DNS | ||
You must add this body in the request: | ||
```json | ||
{"keyname": "string", "keyvalue": "string"} | ||
``` | ||
|
||
The midaas webservice can be configured with the following environment variables: | ||
|
||
| Name | Description | Default | | ||
| --------------- | ---------------------- | --------- | | ||
| MIDAAS_KEYNAME | TSIG Keyname | test | | ||
| MIDAAS_KEYVALUE | TSIG Keyvalue | test | | ||
| MIDAAS_ZONE | Zone managed by MiDaas | dev.local | | ||
|
||
|
||
## External-DNS Locally | ||
|
||
:construction: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 4 additions & 6 deletions
10
kind/configs/traefik-values.yml → contribute/kind/traefik-values.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,17 @@ | ||
--- | ||
providers: | ||
kubernetesCRD: | ||
namespaces: | ||
- default | ||
- ingress-traefik | ||
enabled: false | ||
kubernetesIngress: | ||
namespaces: | ||
- default | ||
- ingress-traefik | ||
|
||
ports: | ||
web: | ||
nodePort: 80 | ||
hostPort: 80 | ||
websecure: | ||
nodePort: 443 | ||
hostPort: 443 | ||
|
||
service: | ||
type: NodePort | ||
type: ClusterIP |
Oops, something went wrong.