merge prod and prod-cluster, update Makefile, readme
This commit is contained in:
parent
9327f22c46
commit
4873102074
83
Makefile
83
Makefile
|
@ -1,81 +1,36 @@
|
||||||
KUSTOMIZE = KUSTOMIZE_PLUGIN_HOME=$(PWD)/plugins kustomize
|
KUSTOMIZE = kustomize
|
||||||
KUSTOMIZEFLAGS = --enable-alpha-plugins
|
KUSTOMIZEFLAGS =
|
||||||
|
|
||||||
KUBECTL = kubectl
|
KUBECTL = kubectl
|
||||||
KUBECTLFLAGS =
|
KUBECTLFLAGS =
|
||||||
KUBECTLDIFFFLAGS =
|
KUBECTLDIFFFLAGS = --server-side=true --force-conflicts
|
||||||
KUBECTLAPPLYFLAGS = --server-side=true --force-conflicts --prune
|
KUBECTLAPPLYFLAGS = --server-side=true --force-conflicts --prune
|
||||||
|
|
||||||
SRC := $(shell find kustomize/ -type f)
|
SRC := $(shell find kustomize/ -type f)
|
||||||
OUTDIR = build
|
OUT = build
|
||||||
|
|
||||||
# DEVOUT = $(OUTDIR)/dev
|
PRODOUT = $(OUT)/prod.yaml
|
||||||
# DEVMANIFESTSRC = kustomize/overlays/dev
|
PRODSRC = kustomize/env/prod
|
||||||
# DEVMANIFESTOUT = $(DEVOUT)/manifest.yaml
|
|
||||||
# DEVCLUSTERSRC = kustomize/overlays/dev-cluster
|
|
||||||
# DEVCLUSTEROUT = $(DEVOUT)/cluster.yaml
|
|
||||||
|
|
||||||
PRODOUT = $(OUTDIR)/prod
|
.PHONY: prod
|
||||||
PRODMANIFESTOUT = $(PRODOUT)/manifest.yaml
|
prod: prod-diff
|
||||||
PRODMANIFESTSRC = kustomize/overlays/prod
|
|
||||||
PRODCLUSTEROUT = $(PRODOUT)/cluster.yaml
|
|
||||||
PRODCLUSTERSRC = kustomize/overlays/prod-cluster
|
|
||||||
|
|
||||||
# ifeq ($(environment),prod)
|
|
||||||
# environment = prod
|
|
||||||
|
|
||||||
# ENVOUTDIR = $(PRODOUT)
|
|
||||||
# ENVOUTFILE = $(PRODMANIFESTOUT) $(PRODCLUSTEROUT)
|
|
||||||
# else
|
|
||||||
# environment = dev
|
|
||||||
|
|
||||||
# ENVOUTDIR = $(DEVOUT)
|
|
||||||
# ENVOUTFILE = $(DEVMANIFESTOUT) $(DEVCLUSTERTOUT)
|
|
||||||
# endif
|
|
||||||
|
|
||||||
environment=prod
|
|
||||||
ENVOUTDIR = $(PRODOUT)
|
|
||||||
ENVOUTFILE = $(PRODMANIFESTOUT) $(PRODCLUSTEROUT)
|
|
||||||
|
|
||||||
.PHONY: diff
|
.PHONY: diff
|
||||||
diff: $(environment)
|
prod-diff: $(PRODOUT)
|
||||||
$(KUBECTL) $(KUBECTLFLAGS) diff $(KUBECTLDIFFFLAGS) -f $(ENVOUTDIR) | highlight --out-format xterm256 --syntax diff
|
$(KUBECTL) $(KUBECTLFLAGS) diff $(KUBECTLDIFFFLAGS) -f $(PRODOUT) | highlight --out-format xterm256 --syntax diff
|
||||||
|
|
||||||
.PHONY: apply
|
.PHONY: apply
|
||||||
apply: $(environment)
|
prod-apply: $(PRODOUT)
|
||||||
$(KUBECTL) $(KUBECTLFLAGS) apply $(KUBECTLAPPLYFLAGS) -l app.kubernetes.io/managed-by=kustomize-cluster -f $(ENVOUTDIR)
|
$(KUBECTL) $(KUBECTLFLAGS) apply $(KUBECTLAPPLYFLAGS) -l app.kubernetes.io/managed-by=kustomize -f $(PRODOUT)
|
||||||
$(KUBECTL) $(KUBECTLFLAGS) apply $(KUBECTLAPPLYFLAGS) -l app.kubernetes.io/managed-by=kustomize -f $(ENVOUTDIR)
|
|
||||||
|
|
||||||
.PHONY: all dev prod
|
$(PRODOUT): $(SRC)
|
||||||
all: dev prod
|
mkdir -p $(OUT)
|
||||||
# dev: $(DEVMANIFESTOUT) $(DEVCLUSTEROUT)
|
$(KUSTOMIZE) build $(KUSTOMIZEFLAGS) $(PRODSRC) >$(PRODOUT) || (rm $(PRODOUT); exit 1)
|
||||||
prod: $(PRODMANIFESTOUT) $(PRODCLUSTEROUT)
|
|
||||||
|
|
||||||
# $(DEVMANIFESTOUT): $(SRC)
|
|
||||||
# mkdir -p $(DEVOUT)
|
|
||||||
# $(KUSTOMIZE) build $(KUSTOMIZEFLAGS) $(DEVMANIFESTSRC) >$(DEVMANIFESTOUT) || (rm $(DEVMANIFESTOUT); exit 1)
|
|
||||||
|
|
||||||
# $(DEVCLUSTEROUT): $(SRC)
|
|
||||||
# mkdir -p $(DEVOUT)
|
|
||||||
# $(KUSTOMIZE) build $(KUSTOMIZEFLAGS) $(DEVCLUSTERSRC) >$(DEVCLUSTEROUT) || (rm $(DEVCLUSTEROUT); exit 1)
|
|
||||||
|
|
||||||
$(PRODMANIFESTOUT): $(SRC)
|
|
||||||
mkdir -p $(PRODOUT)
|
|
||||||
$(KUSTOMIZE) build $(KUSTOMIZEFLAGS) $(PRODMANIFESTSRC) >$(PRODMANIFESTOUT) || (rm $(PRODMANIFESTOUT); exit 1)
|
|
||||||
|
|
||||||
$(PRODCLUSTEROUT): $(SRC)
|
|
||||||
mkdir -p $(PRODOUT)
|
|
||||||
$(KUSTOMIZE) build $(KUSTOMIZEFLAGS) $(PRODCLUSTERSRC) >$(PRODCLUSTEROUT) || (rm $(PRODCLUSTEROUT); exit 1)
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -r $(OUTDIR)
|
rm -r $(OUT)
|
||||||
|
|
||||||
# $(KUSTOMIZEOUTALL): $(SRC)
|
|
||||||
# @mkdir -p $(dir $(KUSTOMIZEOUTALL))
|
|
||||||
# $(KUSTOMIZE) build $(KUSTOMIZEFLAGS) $(KUSTOMIZEDIRALL) >$(KUSTOMIZEOUTALL) || (rm $(KUSTOMIZEOUTALL); exit 1)
|
|
||||||
|
|
||||||
# $(KUSTOMIZEOUT): $(SRC)
|
|
||||||
# @mkdir -p $(dir $(KUSTOMIZEOUT))
|
|
||||||
# $(KUSTOMIZE) build $(KUSTOMIZEFLAGS) $(KUSTOMIZEDIR) >$(KUSTOMIZEOUT) || (rm $(KUSTOMIZEOUT); exit 1)
|
|
||||||
|
|
||||||
|
.PHONY: infra
|
||||||
|
infra:
|
||||||
|
terraform -chdir=terraform apply
|
44
README.md
44
README.md
|
@ -4,27 +4,45 @@ Kubernetes deployment for home cluster.
|
||||||
|
|
||||||
## Deploying
|
## Deploying
|
||||||
|
|
||||||
|
Deployments are done through a `Makefile`.
|
||||||
|
|
||||||
Prerequisites:
|
Prerequisites:
|
||||||
* make
|
* make
|
||||||
* docker
|
* terraform
|
||||||
|
* kustomize
|
||||||
* kubectl
|
* kubectl
|
||||||
|
* highlight (for prettying `diff`)
|
||||||
For local deployment:
|
|
||||||
* k3d
|
|
||||||
|
|
||||||
### Local deployment
|
|
||||||
``` sh
|
|
||||||
./setup-local-cluster.sh
|
|
||||||
make
|
|
||||||
make apply
|
|
||||||
```
|
|
||||||
|
|
||||||
### Prod deployment
|
### Prod deployment
|
||||||
|
#### infra
|
||||||
``` sh
|
``` sh
|
||||||
make environment=prod
|
make infra
|
||||||
make environment=prod apply
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This will:
|
||||||
|
1. Configure external-secret to be able to sync kubernetes secrets with the secret store in AWS.
|
||||||
|
2. Configure the DNS entries in DigitalOcean
|
||||||
|
|
||||||
|
#### diff
|
||||||
|
``` sh
|
||||||
|
make
|
||||||
|
```
|
||||||
|
*or*
|
||||||
|
``` sh
|
||||||
|
make prod-diff
|
||||||
|
```
|
||||||
|
|
||||||
|
Generated kubernetes manifest will be in [./build/prod.yaml](./build/prod.yaml).
|
||||||
|
|
||||||
|
#### apply
|
||||||
|
``` sh
|
||||||
|
make prod-apply
|
||||||
|
```
|
||||||
|
|
||||||
|
Generated kubernetes manifest will be in [./build/prod.yaml](./build/prod.yaml).
|
||||||
|
|
||||||
|
Server-side resources that are not declared in the manifest will be pruned.
|
||||||
|
|
||||||
## Services
|
## Services
|
||||||
|
|
||||||
| service | local | prod |
|
| service | local | prod |
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
resources:
|
resources:
|
||||||
|
- ../../overlays/system
|
||||||
|
|
||||||
# - ../../namespaces/kubernetes-dashboard
|
# - ../../namespaces/kubernetes-dashboard
|
||||||
- ../../namespaces/gitea
|
- ../../overlays/gitea
|
||||||
- ../../namespaces/monitoring
|
- ../../overlays/monitoring
|
||||||
- ../../namespaces/nextcloud
|
- ../../overlays/nextcloud
|
||||||
|
|
||||||
# resources:
|
# resources:
|
||||||
# - probes/external-services-bobcat-miner.yaml
|
# - probes/external-services-bobcat-miner.yaml
|
||||||
|
@ -36,6 +38,9 @@ configMapGenerator:
|
||||||
- name: replacements
|
- name: replacements
|
||||||
namespace: default
|
namespace: default
|
||||||
literals:
|
literals:
|
||||||
|
- TRAEFIK_EXTERNAL_HOST=traefik.badjnet.home
|
||||||
|
- LONGHORN_EXTERNAL_HOST=longhorn.badjnet.home
|
||||||
|
|
||||||
- GITEA_EXTERNAL_HOST=code.badjware.dev
|
- GITEA_EXTERNAL_HOST=code.badjware.dev
|
||||||
- GITEA_EXTERNAL_URL=https://code.badjware.dev
|
- GITEA_EXTERNAL_URL=https://code.badjware.dev
|
||||||
|
|
||||||
|
@ -79,6 +84,32 @@ patches:
|
||||||
# - patches/blackbox-exporter-probe-patch.yaml
|
# - patches/blackbox-exporter-probe-patch.yaml
|
||||||
|
|
||||||
replacements:
|
replacements:
|
||||||
|
- source:
|
||||||
|
kind: ConfigMap
|
||||||
|
name: replacements
|
||||||
|
namespace: default
|
||||||
|
fieldPath: data.TRAEFIK_EXTERNAL_HOST
|
||||||
|
targets:
|
||||||
|
- select:
|
||||||
|
kind: Ingress
|
||||||
|
name: traefik
|
||||||
|
namespace: kube-system
|
||||||
|
fieldPaths:
|
||||||
|
- spec.rules.0.host
|
||||||
|
- source:
|
||||||
|
kind: ConfigMap
|
||||||
|
name: replacements
|
||||||
|
namespace: default
|
||||||
|
fieldPath: data.LONGHORN_EXTERNAL_HOST
|
||||||
|
targets:
|
||||||
|
- select:
|
||||||
|
kind: HelmChart
|
||||||
|
name: longhorn
|
||||||
|
namespace: kube-system
|
||||||
|
fieldPaths:
|
||||||
|
- spec.set.[ingress.host]
|
||||||
|
options:
|
||||||
|
create: true
|
||||||
- source:
|
- source:
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
name: replacements
|
name: replacements
|
||||||
|
@ -192,4 +223,4 @@ replacements:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
fieldPaths:
|
fieldPaths:
|
||||||
- spec.rules.0.host
|
- spec.rules.0.host
|
|
@ -1,44 +0,0 @@
|
||||||
resources:
|
|
||||||
- ../../namespaces/kube-system
|
|
||||||
- ../../bases/longhorn
|
|
||||||
|
|
||||||
buildMetadata:
|
|
||||||
- originAnnotations
|
|
||||||
|
|
||||||
commonLabels:
|
|
||||||
app.kubernetes.io/managed-by: kustomize-cluster
|
|
||||||
|
|
||||||
configMapGenerator:
|
|
||||||
- name: cluster-replacements
|
|
||||||
namespace: default
|
|
||||||
literals:
|
|
||||||
- TRAEFIK_EXTERNAL_HOST=traefik.badjnet.home
|
|
||||||
- LONGHORN_EXTERNAL_HOST=longhorn.badjnet.home
|
|
||||||
|
|
||||||
replacements:
|
|
||||||
- source:
|
|
||||||
kind: ConfigMap
|
|
||||||
name: cluster-replacements
|
|
||||||
namespace: default
|
|
||||||
fieldPath: data.TRAEFIK_EXTERNAL_HOST
|
|
||||||
targets:
|
|
||||||
- select:
|
|
||||||
kind: Ingress
|
|
||||||
name: traefik
|
|
||||||
namespace: kube-system
|
|
||||||
fieldPaths:
|
|
||||||
- spec.rules.0.host
|
|
||||||
- source:
|
|
||||||
kind: ConfigMap
|
|
||||||
name: cluster-replacements
|
|
||||||
namespace: default
|
|
||||||
fieldPath: data.LONGHORN_EXTERNAL_HOST
|
|
||||||
targets:
|
|
||||||
- select:
|
|
||||||
kind: HelmChart
|
|
||||||
name: longhorn
|
|
||||||
namespace: kube-system
|
|
||||||
fieldPaths:
|
|
||||||
- spec.set.[ingress.host]
|
|
||||||
options:
|
|
||||||
create: true
|
|
|
@ -1,6 +0,0 @@
|
||||||
apiVersion: badjware/v1
|
|
||||||
kind: SSMParameterPlaceholderTransformer
|
|
||||||
metadata:
|
|
||||||
name: ssm-parameter
|
|
||||||
resourceSelectors:
|
|
||||||
- kind: Secret
|
|
|
@ -1,4 +1,5 @@
|
||||||
resources:
|
resources:
|
||||||
|
- ../../bases/longhorn
|
||||||
- ../../bases/traefik
|
- ../../bases/traefik
|
||||||
- ../../bases/prometheus-operator
|
- ../../bases/prometheus-operator
|
||||||
- ../../bases/external-secrets
|
- ../../bases/external-secrets
|
Loading…
Reference in New Issue