From 000a878d7baf1a91774577363c91a9aee5401d6c Mon Sep 17 00:00:00 2001 From: marcel-dempers Date: Sat, 11 Mar 2023 10:06:53 +1100 Subject: [PATCH] restructure flux folders --- kubernetes/fluxcd/README.md | 39 ++++++++++++++++++- .../flux-system/gotk-components.yaml | 0 .../dev-cluster/flux-system/gotk-sync.yaml | 2 +- .../flux-system/kustomization.yaml | 0 .../example-app-1/deploy/configmap.yaml | 9 +++++ .../example-app-1/deploy/deployment.yaml | 34 ++++++++++++++++ .../example-app-1/deploy/service.yaml | 15 +++++++ .../repositories/example-app-1/src/app.py | 6 +++ .../repositories/example-app-1/src/dockerfile | 8 ++++ 9 files changed, 111 insertions(+), 2 deletions(-) rename kubernetes/fluxcd/{ => repositories/config}/clusters/dev-cluster/flux-system/gotk-components.yaml (100%) rename kubernetes/fluxcd/{ => repositories/config}/clusters/dev-cluster/flux-system/gotk-sync.yaml (89%) rename kubernetes/fluxcd/{ => repositories/config}/clusters/dev-cluster/flux-system/kustomization.yaml (100%) create mode 100644 kubernetes/fluxcd/repositories/example-app-1/deploy/configmap.yaml create mode 100644 kubernetes/fluxcd/repositories/example-app-1/deploy/deployment.yaml create mode 100644 kubernetes/fluxcd/repositories/example-app-1/deploy/service.yaml create mode 100644 kubernetes/fluxcd/repositories/example-app-1/src/app.py create mode 100644 kubernetes/fluxcd/repositories/example-app-1/src/dockerfile diff --git a/kubernetes/fluxcd/README.md b/kubernetes/fluxcd/README.md index a35ae18..6279838 100644 --- a/kubernetes/fluxcd/README.md +++ b/kubernetes/fluxcd/README.md @@ -98,10 +98,47 @@ flux bootstrap github \ --path=kubernetes/fluxcd/clusters/dev-cluster \ --personal \ --branch fluxcd-2022 + +flux check + +# flux manages itself using GitOps objects: +kubectl -n flux-system get GitRepository +kubectl -n flux-system get Kustomization ``` Check the source code that `flux bootstrap` created ``` git pull origin -``` \ No newline at end of file +``` + +# Repository structure + +https://fluxcd.io/flux/guides/repository-structure/ + +* Mono Repo +* Repo per team +* Repo per app + +``` +- apps + - example-app-1 + - example-app-2 +- infrastructure + - ingress-nginx + - monitoring +- clusters + -dev-cluster + -prod-cluster +``` + +## build our app + +``` +cd kubernetes\fluxcd\apps\example-app-1\src + +docker build . -t example-app-1:0.0.1 + +#load the image to our test cluster so we dont need to push to a registry +kind load docker-image example-app-1:0.0.1 --name fluxcd +``` diff --git a/kubernetes/fluxcd/clusters/dev-cluster/flux-system/gotk-components.yaml b/kubernetes/fluxcd/repositories/config/clusters/dev-cluster/flux-system/gotk-components.yaml similarity index 100% rename from kubernetes/fluxcd/clusters/dev-cluster/flux-system/gotk-components.yaml rename to kubernetes/fluxcd/repositories/config/clusters/dev-cluster/flux-system/gotk-components.yaml diff --git a/kubernetes/fluxcd/clusters/dev-cluster/flux-system/gotk-sync.yaml b/kubernetes/fluxcd/repositories/config/clusters/dev-cluster/flux-system/gotk-sync.yaml similarity index 89% rename from kubernetes/fluxcd/clusters/dev-cluster/flux-system/gotk-sync.yaml rename to kubernetes/fluxcd/repositories/config/clusters/dev-cluster/flux-system/gotk-sync.yaml index 69b8d34..97d8067 100644 --- a/kubernetes/fluxcd/clusters/dev-cluster/flux-system/gotk-sync.yaml +++ b/kubernetes/fluxcd/repositories/config/clusters/dev-cluster/flux-system/gotk-sync.yaml @@ -20,7 +20,7 @@ metadata: namespace: flux-system spec: interval: 10m0s - path: ./kubernetes/fluxcd/clusters/dev-cluster + path: ./kubernetes/fluxcd/repositories/config/clusters/dev-cluster prune: true sourceRef: kind: GitRepository diff --git a/kubernetes/fluxcd/clusters/dev-cluster/flux-system/kustomization.yaml b/kubernetes/fluxcd/repositories/config/clusters/dev-cluster/flux-system/kustomization.yaml similarity index 100% rename from kubernetes/fluxcd/clusters/dev-cluster/flux-system/kustomization.yaml rename to kubernetes/fluxcd/repositories/config/clusters/dev-cluster/flux-system/kustomization.yaml diff --git a/kubernetes/fluxcd/repositories/example-app-1/deploy/configmap.yaml b/kubernetes/fluxcd/repositories/example-app-1/deploy/configmap.yaml new file mode 100644 index 0000000..37969d2 --- /dev/null +++ b/kubernetes/fluxcd/repositories/example-app-1/deploy/configmap.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: example-app-1 +data: + config.json: | + { + "environment" : "dev" + } diff --git a/kubernetes/fluxcd/repositories/example-app-1/deploy/deployment.yaml b/kubernetes/fluxcd/repositories/example-app-1/deploy/deployment.yaml new file mode 100644 index 0000000..7c6dadf --- /dev/null +++ b/kubernetes/fluxcd/repositories/example-app-1/deploy/deployment.yaml @@ -0,0 +1,34 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: example-app-1 + labels: + app: example-app-1 +spec: + selector: + matchLabels: + app: example-app-1 + replicas: 2 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + template: + metadata: + labels: + app: example-app-1 + spec: + containers: + - name: example-app-1 + image: example-app-1:0.0.1 + imagePullPolicy: Always + ports: + - containerPort: 5000 + volumeMounts: + - name: config-volume + mountPath: /configs/ + volumes: + - name: config-volume + configMap: + name: example-app-1 diff --git a/kubernetes/fluxcd/repositories/example-app-1/deploy/service.yaml b/kubernetes/fluxcd/repositories/example-app-1/deploy/service.yaml new file mode 100644 index 0000000..f82fdbf --- /dev/null +++ b/kubernetes/fluxcd/repositories/example-app-1/deploy/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: example-app-1 + labels: + app: example-app-1 +spec: + type: ClusterIP + selector: + app: example-app-1 + ports: + - protocol: TCP + name: http + port: 80 + targetPort: 5000 \ No newline at end of file diff --git a/kubernetes/fluxcd/repositories/example-app-1/src/app.py b/kubernetes/fluxcd/repositories/example-app-1/src/app.py new file mode 100644 index 0000000..6c8be82 --- /dev/null +++ b/kubernetes/fluxcd/repositories/example-app-1/src/app.py @@ -0,0 +1,6 @@ +from flask import Flask +app = Flask(__name__) + +@app.route("/") +def hello(): + return "Hello World!" \ No newline at end of file diff --git a/kubernetes/fluxcd/repositories/example-app-1/src/dockerfile b/kubernetes/fluxcd/repositories/example-app-1/src/dockerfile new file mode 100644 index 0000000..350b381 --- /dev/null +++ b/kubernetes/fluxcd/repositories/example-app-1/src/dockerfile @@ -0,0 +1,8 @@ +FROM python:3.7.3-alpine3.9 as base + +RUN pip install Flask==2.0.3 + +WORKDIR /app +COPY app.py /app/ +ENV FLASK_APP=app.py +CMD flask run -h 0.0.0 -p 5000