mirror of
https://github.com/lordmathis/dev-cluster.git
synced 2025-12-23 00:54:26 +00:00
Add cert-manager
This commit is contained in:
8
infrastructure/base/cert-manager/kustomization.yaml
Normal file
8
infrastructure/base/cert-manager/kustomization.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: cert-manager
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- repository.yaml
|
||||||
|
- release.yaml
|
||||||
4
infrastructure/base/cert-manager/namespace.yaml
Normal file
4
infrastructure/base/cert-manager/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: cert-manager
|
||||||
18
infrastructure/base/cert-manager/release.yaml
Normal file
18
infrastructure/base/cert-manager/release.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: cert-manager
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
interval: 30m
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: cert-manager
|
||||||
|
version: "1.x"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: cert-manager
|
||||||
|
namespace: cert-manager
|
||||||
|
interval: 12h
|
||||||
|
values:
|
||||||
|
installCRDs: true
|
||||||
8
infrastructure/base/cert-manager/repository.yaml
Normal file
8
infrastructure/base/cert-manager/repository.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
|
kind: HelmRepository
|
||||||
|
metadata:
|
||||||
|
name: cert-manager
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
interval: 24h
|
||||||
|
url: https://charts.jetstack.io
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
namespace: kube-system
|
namespace: traefik
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
- repository.yaml
|
- repository.yaml
|
||||||
- release.yaml
|
- release.yaml
|
||||||
4
infrastructure/base/traefik/namespace.yaml
Normal file
4
infrastructure/base/traefik/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: traefik
|
||||||
@@ -2,7 +2,7 @@ apiVersion: helm.toolkit.fluxcd.io/v2
|
|||||||
kind: HelmRelease
|
kind: HelmRelease
|
||||||
metadata:
|
metadata:
|
||||||
name: traefik
|
name: traefik
|
||||||
namespace: kube-system
|
namespace: traefik
|
||||||
spec:
|
spec:
|
||||||
interval: 10m
|
interval: 10m
|
||||||
chart:
|
chart:
|
||||||
@@ -11,7 +11,5 @@ spec:
|
|||||||
version: 28.2.0
|
version: 28.2.0
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: traefik
|
name: traefik-helm-repo
|
||||||
interval: 10m
|
interval: 10m
|
||||||
values:
|
|
||||||
replicaCount: 2
|
|
||||||
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
metadata:
|
metadata:
|
||||||
name: traefik-helm-repo
|
name: traefik-helm-repo
|
||||||
namespace: kube-system
|
namespace: traefik
|
||||||
spec:
|
spec:
|
||||||
interval: 10m
|
interval: 24h
|
||||||
url: https://helm.traefik.io/traefik
|
url: https://helm.traefik.io/traefik
|
||||||
14
infrastructure/prod/cert-manager/issuer.yaml
Normal file
14
infrastructure/prod/cert-manager/issuer.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: ClusterIssuer
|
||||||
|
metadata:
|
||||||
|
name: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
acme:
|
||||||
|
email: admin@example.com
|
||||||
|
server: https://acme-staging-v02.api.letsencrypt.org/directory
|
||||||
|
solvers:
|
||||||
|
- dns01:
|
||||||
|
cloudflare:
|
||||||
|
apiTokenSecretRef:
|
||||||
|
name: cloudflare-api-token-secret
|
||||||
|
key: api-token
|
||||||
4
infrastructure/prod/cert-manager/kustomization.yaml
Normal file
4
infrastructure/prod/cert-manager/kustomization.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../../base/cert-manager
|
||||||
8
infrastructure/prod/cert-manager/secret.yaml
Normal file
8
infrastructure/prod/cert-manager/secret.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: cloudflare-api-token-secret
|
||||||
|
namespace: cert-manager
|
||||||
|
type: Opaque
|
||||||
|
stringData:
|
||||||
|
api-token: your-cloudflare-api-token
|
||||||
@@ -1,8 +1,11 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- ../../base/podinfo
|
- ../../base/traefik
|
||||||
patches:
|
- traefik-values.yaml
|
||||||
- path: podinfo-values.yaml
|
|
||||||
target:
|
configMapGenerator:
|
||||||
kind: HelmRelease
|
- name: traefik-prod-values
|
||||||
|
namespace: traefik
|
||||||
|
files:
|
||||||
|
- values.yaml
|
||||||
18
infrastructure/prod/traefik/release.yaml
Normal file
18
infrastructure/prod/traefik/release.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: traefik
|
||||||
|
namespace: traefik
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: traefik
|
||||||
|
version: 28.2.0
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: traefik-helm-repo
|
||||||
|
interval: 10m
|
||||||
|
valuesFrom:
|
||||||
|
- kind: ConfigMap
|
||||||
|
name: traefik-prod-values
|
||||||
@@ -1,73 +1,35 @@
|
|||||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
deployment:
|
||||||
kind: HelmRelease
|
|
||||||
metadata:
|
|
||||||
name: traefik
|
|
||||||
namespace: kube-system
|
|
||||||
spec:
|
|
||||||
values:
|
|
||||||
deployment:
|
|
||||||
initContainers:
|
|
||||||
- name: volume-permissions
|
|
||||||
image: busybox:1.36@sha256:34b191d63fbc93e25e275bfccf1b5365664e5ac28f06d974e8d50090fbb49f41
|
|
||||||
command: ["sh", "-c", "touch /data/acme.json; chown 65532:65532 /data/acme.json; chmod -v 600 /data/acme.json; chown -R 65532:65532 /var/log/traefik"]
|
|
||||||
securityContext:
|
|
||||||
runAsNonRoot: false
|
|
||||||
runAsGroup: 0
|
|
||||||
runAsUser: 0
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /data
|
|
||||||
- name: access-log
|
|
||||||
mountPath: /var/log/traefik
|
|
||||||
additionalVolumes:
|
additionalVolumes:
|
||||||
- name: access-log
|
- name: access-log
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /var/log/traefik/
|
path: /var/log/traefik/
|
||||||
certResolvers:
|
additionalVolumeMounts:
|
||||||
letsencrypt:
|
- name: access-log
|
||||||
email: admin@example.com
|
|
||||||
dnsChallenge:
|
|
||||||
provider: cloudflare
|
|
||||||
delayBeforeCheck: 30
|
|
||||||
resolvers:
|
|
||||||
- 1.1.1.1
|
|
||||||
- 8.8.8.8
|
|
||||||
storage: /data/acme.json
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: traefik-cf-secret
|
|
||||||
additionalVolumeMounts:
|
|
||||||
- name: access-log
|
|
||||||
mountPath: /var/log/traefik/
|
mountPath: /var/log/traefik/
|
||||||
logs:
|
logs:
|
||||||
access:
|
access:
|
||||||
enabled: true
|
enabled: true
|
||||||
filePath: /var/log/traefik/access.log
|
filePath: /var/log/traefik/access.log
|
||||||
ingressRoute:
|
ingressRoute:
|
||||||
dashboard:
|
dashboard:
|
||||||
enabled: true
|
enabled: true
|
||||||
matchRule: Host(`traefik.namesny.com`)
|
matchRule: Host(`traefik.namesny.com`)
|
||||||
entryPoints: ["websecure"]
|
entryPoints: ["websecure"]
|
||||||
middlewares:
|
middlewares:
|
||||||
- name: "auth-authelia@kubernetescrd"
|
- name: "auth-authelia@kubernetescrd"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
allowCrossNamespace: true
|
allowCrossNamespace: true
|
||||||
persistence:
|
persistence:
|
||||||
enabled: true
|
enabled: true
|
||||||
storageClass: retain-local-path
|
storageClass: retain-local-path
|
||||||
ports:
|
ports:
|
||||||
websecure:
|
websecure:
|
||||||
tls:
|
tls:
|
||||||
enabled: true
|
enabled: true
|
||||||
certResolver: letsencrypt
|
|
||||||
domains:
|
|
||||||
- main: namesny.com
|
|
||||||
sans:
|
|
||||||
- "*.namesny.com"
|
|
||||||
web:
|
web:
|
||||||
redirectTo:
|
redirectTo:
|
||||||
port: websecure
|
port: websecure
|
||||||
service:
|
service:
|
||||||
spec:
|
spec:
|
||||||
externalTrafficPolicy: Local
|
externalTrafficPolicy: Local
|
||||||
|
|||||||
Reference in New Issue
Block a user