chore: archive OpenShift/ACM cluster content, hub-bootstrap, and applications

This commit is contained in:
2026-02-25 20:44:37 -06:00
parent 05ba1bbdb3
commit 286d20f8c1
173 changed files with 0 additions and 5111 deletions

View File

@@ -1,33 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: monetnaildesign-web
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "5"
spec:
destination:
name: internal
namespace: monetnaildesign
project: default
source:
path: applications/app-web-monetnaildesign
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,40 +0,0 @@
---
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
annotations:
description: Defines how to build the application
template.alpha.openshift.io/wait-for-ready: "true"
name: monetnaildesign-nginx-build
labels:
app: monetnaildesign-nginx
template: nginx-example
name: monetnaildesign-nginx
spec:
output:
to:
kind: ImageStreamTag
name: monetnaildesign-nginx:latest
source:
contextDir: ""
git:
ref: ""
uri: https://github.com/rblundon/monetnaildesign.git
# uri: https://github.com/sclorg/nginx-ex.git
type: Git
strategy:
sourceStrategy:
from:
kind: ImageStreamTag
name: nginx:latest
namespace: openshift
type: Source
triggers:
- type: ImageChange
- type: ConfigChange
- github:
secret: 0Q6mNn8Qj2vCQNwKhvk5O1F8tIQVyxRPehiwhGrP
type: GitHub
- generic:
secret: q86RdskVovs1yd1lfqRm0BncEHc8HjdH2I86CnNP
type: Generic

View File

@@ -1,48 +0,0 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
description: Defines how to deploy the application server
image.openshift.io/triggers: '[{"from":{"kind":"ImageStreamTag","name":"monetnaildesign-nginx:latest"},"fieldPath":
"spec.template.spec.containers[0].image"}]'
template.alpha.openshift.io/wait-for-ready: "true"
labels:
app: monetnaildesign-nginx
template: nginx-example
name: monetnaildesign-nginx
spec:
replicas: 1
selector:
matchLabels:
app: monetnaildesign-nginx
name: monetnaildesign-nginx
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: monetnaildesign-nginx
name: monetnaildesign-nginx
spec:
containers:
- env: []
image: 'image-registry.openshift-image-registry.svc:5000/monetnaildesign/monetnaildesign-nginx'
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 30
timeoutSeconds: 3
name: monetnaildesign-nginx
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 3
timeoutSeconds: 3
resources:
limits:
memory: 512Mi

View File

@@ -1,15 +0,0 @@
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: cloudflare-api-token-monetnaildesign # This is the secret name
namespace: external-dns
spec:
secretStoreRef:
kind: ClusterSecretStore
name: doppler-cluster
refreshInterval: "1h"
data:
- secretKey: api-token-monetnaildesign
remoteRef:
key: CLOUDFLARE_TOKEN_MONETNAILDESIGN

View File

@@ -1,10 +0,0 @@
---
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
annotations:
description: Keeps track of changes in the application image
labels:
app: monetnaildesign-nginx
template: nginx-example
name: monetnaildesign-nginx

View File

@@ -1,42 +0,0 @@
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
# external-dns.alpha.kubernetes.io/hostname: monetnaildesign.com
# external-dns.alpha.kubernetes.io/target: ingress.monetnaildesign.com
name: monetnaildesign-external
namespace: monetnaildesign
labels:
app.kubernetes.io/instance: monetnaildesign
app.kubernetes.io/name: monetnaildesign
app: external-dns-monetnaildesign
spec:
ingressClassName: nginx
tls:
- hosts:
- monetnaildesign.com
- www.monetnaildesign.com
secretName: monetnaildesign-tls
rules:
- host: monetnaildesign.com
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: monetnaildesign-nginx
port:
number: 80
- host: www.monetnaildesign.com
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: monetnaildesign-nginx
port:
number: 80

View File

@@ -1,16 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
# Application deployment
- namespace.yaml
- imagestream.yaml
- buildconfig.yaml
- deployment.yaml
#- externalsecrets.yaml
- service.yaml
- ingress.yaml

View File

@@ -1,13 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: monetnaildesign
name: monetnaildesign
argocd.argoproj.io/managed-by: openshift-gitops-operator
openshift.io/cluster-monitoring: 'true'
name: monetnaildesign
spec:
finalizers:
- kubernetes

View File

@@ -1,16 +0,0 @@
apiVersion: v1
kind: Service
metadata:
annotations:
description: Exposes and load balances the application pods
labels:
app: monetnaildesign-nginx
template: nginx-example
name: monetnaildesign-nginx
spec:
ports:
- name: web
port: 80
targetPort: 8080
selector:
name: monetnaildesign-nginx

View File

@@ -1,33 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: homepage-app
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "5"
spec:
destination:
name: internal
namespace: homepage-app
project: default
source:
path: applications/homepage
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: false
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,55 +0,0 @@
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: homepage
labels:
app.kubernetes.io/name: homepage
rules:
- apiGroups:
- ""
resources:
- namespaces
- pods
- nodes
verbs:
- get
- list
- apiGroups:
- extensions
- networking.k8s.io
resources:
- ingresses
verbs:
- get
- list
- apiGroups:
- traefik.containo.us
resources:
- ingressroutes
verbs:
- get
- list
- apiGroups:
- metrics.k8s.io
resources:
- nodes
- pods
verbs:
- get
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: homepage
labels:
app.kubernetes.io/name: homepage
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: homepage
subjects:
- kind: ServiceAccount
name: homepage
namespace: homepage-app

View File

@@ -1,30 +0,0 @@
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: homepage-bookmarks-secret
namespace: homepage-app
spec:
secretStoreRef:
kind: ClusterSecretStore
name: doppler-cluster
refreshInterval: "1h"
data:
- secretKey: bookmarks.yaml
remoteRef:
key: HOMEPAGE_BOOKMARKS
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: homepage-services-secret
namespace: homepage-app
spec:
secretStoreRef:
kind: ClusterSecretStore
name: doppler-cluster
refreshInterval: "1h"
data:
- secretKey: services.yaml
remoteRef:
key: HOMEPAGE_SERVICES

View File

@@ -1,66 +0,0 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: homepage
namespace: homepage-app
labels:
app.kubernetes.io/name: homepage
data:
kubernetes.yaml: |
mode: cluster
settings.yaml: |
title: MK-Labs Homepage
background:
image: https://images.unsplash.com/photo-1502790671504-542ad42d5189?auto=format&fit=crop&w=2560&q=80
saturate: 100 # 0, 50, 100... see https://tailwindcss.com/docs/backdrop-saturate
brightness: 50 # 0, 50, 75... see https://tailwindcss.com/docs/backdrop-brightness
opacity: 100 # 0-100
theme: dark
color: slate
useEqualHeights: true
layout:
Proxmox:
header: true
style: row
columns: 4
Network:
header: true
style: row
columns: 4
Other:
header: true
style: row
columns: 4
providers:
openweathermap: openweathermapapikey
weatherapi: weatherapiapikey
custom.css: ""
custom.js: ""
widgets.yaml: |
- kubernetes:
cluster:
show: true
cpu: true
memory: true
showLabel: true
label: "cluster"
nodes:
show: true
cpu: true
memory: true
showLabel: true
- resources:
backend: resources
expanded: true
cpu: true
memory: true
- search:
provider: duckduckgo
target: _blank
docker.yaml: ""

View File

@@ -1,84 +0,0 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: homepage
namespace: homepage-app
labels:
app.kubernetes.io/name: homepage
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/name: homepage
template:
metadata:
labels:
app.kubernetes.io/name: homepage
spec:
serviceAccountName: homepage
automountServiceAccountToken: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
containers:
- name: homepage
image: "ghcr.io/gethomepage/homepage:latest"
imagePullPolicy: Always
env:
- name: HOMEPAGE_ALLOWED_HOSTS
value: "homepage.apps.openshift.int.mk-labs.cloud"
ports:
- name: http
containerPort: 3000
protocol: TCP
volumeMounts:
- mountPath: /app/config/custom.js
name: homepage-config
subPath: custom.js
- mountPath: /app/config/custom.css
name: homepage-config
subPath: custom.css
- mountPath: /app/config/bookmarks.yaml
name: bookmarks
subPath: bookmarks.yaml
- mountPath: /app/config/docker.yaml
name: homepage-config
subPath: docker.yaml
- mountPath: /app/config/kubernetes.yaml
name: homepage-config
subPath: kubernetes.yaml
- mountPath: /app/config/services.yaml
name: services
subPath: services.yaml
- mountPath: /app/config/settings.yaml
name: homepage-config
subPath: settings.yaml
- mountPath: /app/config/widgets.yaml
name: homepage-config
subPath: widgets.yaml
- mountPath: /app/config/logs
name: logs
# - mountPath: /usr/local/etc/ssl/certs/tls.crt
# name: ssl-certs
# subPath: tls.crt
# - mountPath: /usr/local/etc/ssl/certs/tls.key
# name: ssl-certs
# subPath: tls.key
volumes:
- name: homepage-config
configMap:
name: homepage
- name: bookmarks
secret:
secretName: homepage-bookmarks-secret
- name: services
secret:
secretName: homepage-services-secret
# - name: ssl-certs
# secret:
# secretName: letsencrypt-homepage
- name: logs
emptyDir: {}

View File

@@ -1,20 +0,0 @@
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
annotations:
name: letsencrypt-homepage
namespace: homepage-app
spec:
commonName: 'homepage.int.mk-labs.cloud'
dnsNames:
- homepage.int.mk-labs.cloud
duration: 2160h0m0s
issuerRef:
kind: ClusterIssuer
name: letsencrypt-prod
renewBefore: 360h0m0s
secretName: letsencrypt-homepage
usages:
- server auth
- client auth

View File

@@ -1,48 +0,0 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: homepage-ingress
namespace: homepage-app
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- homepage.int.mk-labs.cloud
secretName: letsencrypt-homepage
rules:
- host: homepage.int.mk-labs.cloud
http:
paths:
- path: /
pathType: Exact
backend:
service:
name: homepage-nginx
port:
number: 443
# tls:
# - hosts:
# - homepage.int.mk-labs.cloud
# secretName: letsencrypt-homepage
#---
#apiVersion: networking.k8s.io/v1
#kind: Ingress
#metadata:
# name: hello-openshift
#spec:
# rules:
# - host: hello-openshift.yourcluster.example.com
# http:
# paths:
# - backend:
# # Forward to a Service called 'hello-openshift'
# service:
# name: hello-openshift
# port:
# number: 8080
# path: /
# pathType: Exact

View File

@@ -1,16 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- secret.yaml
- serviceaccount.yaml
- configmap-eso.yaml
- configmap.yaml
- clusterrole.yaml
- service.yaml
#- ingress-certificate.yaml
- ingress.yaml
- deployment.yaml
- route.yaml

View File

@@ -1,12 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: homepage-app
name: homepage-app
argocd.argoproj.io/managed-by: openshift-gitops-operator
name: homepage-app
spec:
finalizers:
- kubernetes

View File

@@ -1,46 +0,0 @@
#---
#3apiVersion: route.openshift.io/v1
#kind: Route
#metadata:
# labels:
# app.kubernetes.io/instance: homepage-app
# app.kubernetes.io/name: homepage-app
# name: homepage-app
# namespace: homepage-app
#spec:
# host: homepage.int.mk-labs.cloud
# port:
# targetPort: http
# tls:
# insecureEdgeTerminationPolicy: Redirect
# termination: edge
# externalCertificate:
# name: letsencrypt-homepage
# to:
# kind: Service
# name: homepage
# weight: 100
# wildcardPolicy: None
---
apiVersion: route.openshift.io/v1
kind: Route
metadata:
labels:
app.kubernetes.io/instance: homepage-app
app.kubernetes.io/name: homepage-app
name: homepage-app2
namespace: homepage-app
spec:
host: homepage.apps.openshift.int.mk-labs.cloud
port:
targetPort: http
tls:
insecureEdgeTerminationPolicy: Redirect
termination: edge
to:
kind: Service
name: homepage
weight: 100
wildcardPolicy: None

View File

@@ -1,11 +0,0 @@
---
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: homepage
namespace: homepage-app
labels:
app.kubernetes.io/name: homepage
annotations:
kubernetes.io/service-account.name: homepage

View File

@@ -1,18 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: homepage
namespace: homepage-app
labels:
app.kubernetes.io/name: homepage
annotations: {}
spec:
type: ClusterIP
ports:
- port: 3000
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: homepage

View File

@@ -1,10 +0,0 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: homepage
namespace: homepage-app
labels:
app.kubernetes.io/name: homepage
secrets:
- name: homepage

View File

@@ -1,20 +0,0 @@
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
annotations:
name: letsencrypt-homepage2
namespace: homepage-app
spec:
commonName: 'homepage2.int.mk-labs.cloud'
dnsNames:
- homepage2.int.mk-labs.cloud
duration: 2160h0m0s
issuerRef:
kind: ClusterIssuer
name: letsencrypt-prod
renewBefore: 360h0m0s
secretName: letsencrypt-homepage2
usages:
- server auth
- client auth

View File

@@ -1,33 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: acm
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "5"
spec:
destination:
name: in-cluster
namespace: open-cluster-management
project: default
source:
path: cluster/acm
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: false
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,6 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml

View File

@@ -1,9 +0,0 @@
---
apiVersion: operator.open-cluster-management.io/v1
kind: MultiClusterHub
metadata:
name: multiclusterhub
namespace: open-cluster-management
spec:
imagePullSecret:
name: multiclusterhub-pull-secret

View File

@@ -1,12 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: open-cluster-management
name: open-cluster-management
argocd.argoproj.io/managed-by: openshift-gitops-operator
name: open-cluster-management
spec:
finalizers:
- kubernetes

View File

@@ -1,25 +0,0 @@
apiVersion: operator.external-secrets.io/v1alpha1
kind: OperatorConfig
metadata:
name: cluster
spec:
prometheus:
enabled: true
service:
port: 8080
resources:
requests:
cpu: 10m
memory: 96Mi
limits:
cpu: 100m
memory: 256Mi
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: open-cluster-management
spec:
targetNamespaces:
- open-cluster-management

View File

@@ -1,13 +0,0 @@
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
labels:
operators.coreos.com/external-secrets-operator.openshift-operators: ''
name: acm-operator-subscription
spec:
sourceNamespace: openshift-marketplace
source: redhat-operators
channel: release-1.0
installPlanApproval: Automatic
name: advanced-cluster-management

View File

@@ -1,28 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: applications
namespace: openshift-gitops
annotations:
argocd.argoproj.io/sync-wave: "5"
spec:
destination:
name: in-cluster
namespace: openshift-gitops
project: default
source:
path: applications
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
ignoreDifferences:
- group: argoproj.io
kind: Application
jsonPointers:
- /spec/syncPolicy/automated

View File

@@ -1,37 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cert-manager
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
destination:
name: in-cluster
namespace: cert-manager
project: default
source:
#path: cluster/cert-manager/overlays/hub
path: cluster/cert-manager
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
helm:
valueFiles:
- values-hub.yaml
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,28 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: external-secrets-internal
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
destination:
name: internal
namespace: openshift-operators
project: default
source:
path: cluster/external-secrets/overlays/internal
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops

View File

@@ -1,38 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: external-secrets
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
destination:
name: in-cluster
namespace: openshift-operators
project: default
source:
#path: cluster/external-secrets
path: cluster/external-secrets/overlays/hub
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
#helm:
# valueFiles:
# - values-hub.yaml
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
# ignoreDifferences:
# - group: apps
# kind: Deployment
# jsonPointers:
# - /spec/replicas

View File

@@ -1,29 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nmstate
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "3"
spec:
destination:
name: in-cluster
namespace: openshift-nmstate
project: default
source:
path: cluster/nmstate/overlays/hub
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops

View File

@@ -1,45 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: cert-manager
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
- clusters: {} # Variable is .name
template:
metadata:
name: '{{.name}}-cert-manager'
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
destination:
name: '{{.name}}'
namespace: cert-manager
project: default
source:
path: cluster/cert-manager
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
helm:
valueFiles:
- values-{{.name}}.yaml
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,14 +0,0 @@
---
apiVersion: v2
name: cert-manager-umbrella
description: A helm chart to include cert-manager with values
type: application
version: 0.1.0
appVersion: 0.1.0
dependencies:
- name: cert-manager
version: v1.17.2
repository: https://charts.jetstack.io
alias: cert-manager
condition: cert-manager.enabled

View File

@@ -1,30 +0,0 @@
{{- if and .Values.le.prod.enabled .Values.le.apiCert.enabled -}}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: ocp-api
namespace: openshift-config
annotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
spec:
dnsNames:
- api.{{ .Values.cluster_name }}.{{ .Values.base_domain }}
issuerRef:
group: cert-manager.io
kind: ClusterIssuer
name: letsencrypt-prod
secretName: ocp-api
---
apiVersion: config.openshift.io/v1
kind: APIServer
metadata:
name: cluster
spec:
servingCerts:
namedCertificates:
- names:
- api.{{ .Values.cluster_name }}.{{ .Values.base_domain }}
servingCertificate:
name: ocp-api
{{- end }}

View File

@@ -1,29 +0,0 @@
{{- if and .Values.le.prod.enabled .Values.le.routerCert.enabled -}}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: router-cert
namespace: openshift-ingress
annotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
spec:
commonName: apps.{{ .Values.cluster_name }}.{{ .Values.base_domain }}
dnsNames:
- apps.{{ .Values.cluster_name }}.{{ .Values.base_domain }}
- "*.apps.{{ .Values.cluster_name }}.{{ .Values.base_domain }}"
issuerRef:
group: cert-manager.io
kind: ClusterIssuer
name: letsencrypt-prod
secretName: router-cert
---
apiVersion: operator.openshift.io/v1
kind: IngressController
metadata:
name: default
namespace: openshift-ingress-operator
spec:
defaultCertificate:
name: router-cert
{{- end }}

View File

@@ -1,17 +0,0 @@
{{- if or .Values.le.prod.enabled .Values.le.staging.enabled }}
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: cloudflare-api-token # This is the secret name
namespace: cert-manager
spec:
secretStoreRef:
kind: ClusterSecretStore
name: doppler-cluster
refreshInterval: "1h"
data:
- secretKey: api-token
remoteRef:
key: CLOUDFLARE_TOKEN
{{- end }}

View File

@@ -1,69 +0,0 @@
{{- define "le.solvers" -}}
{{- range $solver := .Values.le.solvers -}}
{{- if eq $solver.type "dns" -}}
- dns01:
{{- toYaml $solver.dnsConfig | nindent 4 }}
{{- with $solver.dnsZones }}
selector:
dnsZones:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- else if eq $solver.type "http" }}
- http01:
ingress:
ingressClassName: {{ $solver.ingressClassName }}
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.ca.enabled }}
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: ca-issuer
annotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
spec:
ca:
secretName: cert-manager-ca
{{- end }}
{{- if .Values.le.prod.enabled }}
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
annotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
spec:
acme:
email: {{ .Values.le.email }}
{{- with .Values.le.preferredChain }}
preferredChain: {{ toYaml . }}
{{- end }}
privateKeySecretRef:
name: letsencrypt-prod
server: {{ .Values.le.prod.server }}
solvers:
{{- include "le.solvers" . | nindent 4 }}
{{- end }}
{{- if .Values.le.staging.enabled }}
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
annotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
spec:
acme:
email: {{ .Values.le.email }}
{{- with .Values.le.preferredChain }}
preferredChain: {{ toYaml . }}
{{- end }}
privateKeySecretRef:
name: letsencrypt-staging
server: {{ .Values.le.staging.server }}
solvers:
{{- include "le.solvers" . | nindent 4 }}
{{- end }}

View File

@@ -1,53 +0,0 @@
---
# https://github.com/cert-manager/cert-manager/blob/master/deploy/charts/cert-manager/values.yaml
cert-manager:
enabled: true
installCRDs: true
dns01RecursiveNameservers: 1.1.1.1:53
dns01RecursiveNameserversOnly: true
livenessProbe:
enabled: true
prometheus:
enabled: true
servicemonitor:
enabled: true
ca:
enabled: false
tlsCrt: |-
-----BEGIN CERTIFICATE-----
<actual certificate>
-----END CERTIFICATE-----
tlsKey: |-
-----BEGIN PRIVATE KEY-----
<actual key>
-----END PRIVATE KEY-----
le:
prod:
enabled: true
server: https://acme-v02.api.letsencrypt.org/directory
staging:
enabled: true
server: https://acme-staging-v02.api.letsencrypt.org/directory
apiCert:
enabled: true
routerCert:
enabled: true
preferredChain: ""
email: ryan.blundon@protonmail.com
solvers:
- type: dns
dnsConfig:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token
key: api-token
email: ryan.blundon@protonmail.com
cnameStrategy: Follow
dnsZones:
- mk-labs.cloud
cluster_name: hub
base_domain: int.mk-labs.cloud

View File

@@ -1,54 +0,0 @@
---
# https://github.com/cert-manager/cert-manager/blob/master/deploy/charts/cert-manager/values.yaml
cert-manager:
enabled: true
installCRDs: true
dns01RecursiveNameservers: 1.1.1.1:53
dns01RecursiveNameserversOnly: true
livenessProbe:
enabled: true
prometheus:
enabled: true
servicemonitor:
enabled: true
ca:
enabled: false
tlsCrt: |-
-----BEGIN CERTIFICATE-----
<actual certificate>
-----END CERTIFICATE-----
tlsKey: |-
-----BEGIN PRIVATE KEY-----
<actual key>
-----END PRIVATE KEY-----
le:
prod:
enabled: true
server: https://acme-v02.api.letsencrypt.org/directory
staging:
enabled: true
server: https://acme-staging-v02.api.letsencrypt.org/directory
apiCert:
enabled: true
routerCert:
enabled: true
preferredChain: ""
email: ryan.blundon@protonmail.com
solvers:
- type: dns
dnsConfig:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token
key: api-token
email: ryan.blundon@protonmail.com
cnameStrategy: Follow
dnsZones:
- mk-labs.cloud
- monetnaildesign.com
cluster_name: openshift
base_domain: int.mk-labs.cloud

View File

@@ -1,15 +0,0 @@
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: cloudflare-api-token # This is the secret name
namespace: external-dns
spec:
secretStoreRef:
kind: ClusterSecretStore
name: doppler-cluster
refreshInterval: "1h"
data:
- secretKey: api-token
remoteRef:
key: CLOUDFLARE_TOKEN

View File

@@ -1,16 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
# Operator deployment
- namespace.yaml
- operatorgroup.yaml
- subscription.yaml
# Deploy cluster resources
- externalsecrets.yaml
- scc.yaml
- cloudflare.yaml

View File

@@ -1,14 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
annotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
name: external-dns-operator
labels:
argocd.argoproj.io/managed-by: openshift-gitops-operator
kubernetes.io/metadata.name: external-dns-operator
openshift.io/cluster-monitoring: 'true'
spec:
finalizers:
- kubernetes

View File

@@ -1,9 +0,0 @@
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: external-dns-operator
namespace: external-dns-operator
spec:
targetNamespaces:
- external-dns-operator

View File

@@ -1,41 +0,0 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: external-dns
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: external-dns
rules:
- apiGroups: [""]
resources: ["services"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get","watch","list"]
- apiGroups: ["networking","networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["endpoints"]
verbs: ["get","watch","list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: external-dns-viewer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: external-dns
subjects:
- kind: ServiceAccount
name: external-dns
namespace: default

View File

@@ -1,12 +0,0 @@
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: external-dns-operator
namespace: external-dns-operator
spec:
channel: stable-v1
installPlanApproval: Automatic
name: external-dns-operator
source: redhat-operators
sourceNamespace: openshift-marketplace

View File

@@ -1,33 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: external-dns
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "3"
spec:
destination:
name: in-cluster
namespace: external-dns
project: default
source:
path: 02-cluster-operators/external/external-dns
repoURL: git@github.com:rblundon/MK-Labs.git
targetRevision: HEAD
syncPolicy:
automated:
prune: false
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,71 +0,0 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns-cloudflare
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
serviceAccountName: external-dns
containers:
- name: cloudflare
image: registry.k8s.io/external-dns/external-dns:v0.18.0
args:
# - --source=service # ingress is also possible
- --source=ingress
- --ingress-class=nginx
- --domain-filter=mk-labs.cloud # (optional) limit to only example.com domains; change to match the zone created above.
- --provider=cloudflare
# - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...)
- --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request
- --policy=sync # or upsert-only
env:
- name: CF_API_TOKEN
valueFrom:
secretKeyRef:
name: cloudflare-api-token
key: api-token
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns-cloudflare-monetnaildesign
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns-monetnaildesign
template:
metadata:
labels:
app: external-dns-monetnaildesign
spec:
serviceAccountName: external-dns
containers:
- name: cloudflare
image: registry.k8s.io/external-dns/external-dns:v0.15.0
args:
# - --source=service # ingress is also possible
- --source=ingress
- --ingress-class=nginx
- --domain-filter=monetnaildesign.com # (optional) limit to only example.com domains; change to match the zone created above.
- --provider=cloudflare
# - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...)
- --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request
- --policy=sync # or upsert-only
env:
- name: CF_API_TOKEN
valueFrom:
secretKeyRef:
name: cloudflare-api-token
key: api-token

View File

@@ -1,8 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base

View File

@@ -1,5 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: null
name: krb5.conf

View File

@@ -1,8 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base

View File

@@ -1,40 +0,0 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
serviceAccountName: external-dns
containers:
- name: rfc2136
image: registry.k8s.io/external-dns/external-dns:v0.18.0
args:
- --registry=txt
- --txt-prefix=external-dns-
- --txt-owner-id=k8s
- --provider=rfc2136
- --rfc2136-host=infra01.int.mk-labs.cloud
- --rfc2136-port=53
- --rfc2136-zone=int.mk-labs.cloud
- --rfc2136-tsig-secret=96Ah/a2g0/nLeFGK+d/0tzQcccf9hCEIy34PoXX2Qg8=
- --rfc2136-tsig-secret-alg=hmac-sha256
- --rfc2136-tsig-keyname=externaldns-key
- --rfc2136-tsig-axfr
- --source=ingress
- --domain-filter=int.mk-labs.cloud
env:
- name: FREEIPA_API_TOKEN
valueFrom:
secretKeyRef:
name: rfc2136-api-token
key: api-token

View File

@@ -1,37 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: external-secrets-operator
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
- clusters: {} # Variable is .name
template:
metadata:
name: '{{.name}}-external-secrets'
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
project: default
source:
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
path: cluster/external-secrets/overlays/{{.name}}
destination:
name: '{{.name}}'
namespace: openshift-operators
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops

View File

@@ -1,15 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ClusterSecretStore
metadata:
name: doppler-cluster
annotations:
argocd.argoproj.io/sync-wave: "4"
spec:
provider:
doppler:
auth:
secretRef:
dopplerToken:
name: doppler-cluster-token
key: dopplerToken
namespace: external-secrets

View File

@@ -1,15 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
# Operator deployment
- namespace.yaml
- subscription.yaml
- operatorconfig.yaml
# Deploy cluster resources
#- doppler-token.yaml
- cluster-secret-store.yaml

View File

@@ -1,14 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
annotations:
argocd.argoproj.io/tracking-id: 'external-secrets:/Namespace:openshift-operators/external-secrets'
argocd.argoproj.io/sync-wave: "1"
name: external-secrets
labels:
argocd.argoproj.io/managed-by: openshift-gitops-operator
kubernetes.io/metadata.name: external-secrets
spec:
finalizers:
- kubernetes

View File

@@ -1,18 +0,0 @@
apiVersion: operator.external-secrets.io/v1alpha1
kind: OperatorConfig
metadata:
name: cluster
annotations:
argocd.argoproj.io/sync-wave: "3"
spec:
prometheus:
enabled: true
service:
port: 8080
resources:
requests:
cpu: 10m
memory: 96Mi
limits:
cpu: 100m
memory: 256Mi

View File

@@ -1,16 +0,0 @@
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
labels:
operators.coreos.com/external-secrets-operator.openshift-operators: ''
annotations:
argocd.argoproj.io/sync-wave: "2"
name: external-secrets-operator
namespace: openshift-operators
spec:
channel: stable
installPlanApproval: Automatic
name: external-secrets-operator
source: community-operators
sourceNamespace: openshift-marketplace

View File

@@ -1,10 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
# - github.com/redhat-cop/gitops-catalog/external-secrets-operator/operator/overlays/stable
# - github.com/redhat-cop/gitops-catalog/external-secrets-operator/instance/overlays/default
- ../../base

View File

@@ -1,10 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
# - github.com/redhat-cop/gitops-catalog/external-secrets-operator/operator/overlays/stable
# - github.com/redhat-cop/gitops-catalog/external-secrets-operator/instance/overlays/default
- ../../base

View File

@@ -1,45 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: ingress-nginx
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
# - clusters: {} # Variable is .name
- list: # Variable is .cluster
elements:
- cluster: internal
template:
metadata:
name: '{{.cluster}}-ingress-nginx'
annotations:
argocd.argoproj.io/sync-wave: "3"
spec:
destination:
name: '{{.cluster}}'
namespace: ingress-nginx
project: default
source:
path: cluster/ingress-nginx/overlays/{{.cluster}}
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,14 +0,0 @@
---
apiVersion: v2
name: ingress-nginx-umbrella
description: A helm chart to include ingress-nginx with values
type: application
version: 0.1.0
appVersion: 0.1.0
dependencies:
- name: ingress-nginx
version: v4.13.0
repository: https://kubernetes.github.io/ingress-nginx
alias: ingress-nginx
condition: ingress-nginx.enabled

View File

@@ -1,14 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- namespace.yaml
# Operator deployment
- subscription.yaml
# Deploy cluster resources
- scc.yaml
- pvcs.yaml

View File

@@ -1,14 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
annotations:
argocd.argoproj.io/sync-wave: "1"
labels:
kubernetes.io/metadata.name: nginx-ingress
name: nginx-ingress
argocd.argoproj.io/managed-by: openshift-gitops-operator
name: nginx-ingress
spec:
finalizers:
- kubernetes

View File

@@ -1,33 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nginx-ingress-operator
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
destination:
name: in-cluster
namespace: nginx-ingress-operator
project: default
source:
path: cluster-applications/nginx-ingress-operator
repoURL: git@github.com:rblundon/MK-Labs.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: argocd
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,13 +0,0 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-cache
namespace: nginx-ingress
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
storageClassName: synology-nfs

View File

@@ -1,44 +0,0 @@
---
kind: SecurityContextConstraints
apiVersion: security.openshift.io/v1
metadata:
name: nginx-ingress-admin
annotations:
kubernetes.io/description: nginx-ingress-admin allows nginx-ingress to
use the level of capabilities it requires, while forcing all processes
to run as UID 101 as reflected in the official docker images.
allowPrivilegeEscalation: false
allowPrivilegedContainer: true
runAsUser:
type: MustRunAs
uid: 101
seLinuxContext:
type: MustRunAs
fsGroup:
type: MustRunAs
supplementalGroups:
type: MustRunAs
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowHostDirVolumePlugin: false
allowHostIPC: false
readOnlyRootFilesystem: false
seccompProfiles:
- runtime/default
volumes:
- configMap
- downwardAPI
- emptyDir
- persistentVolumeClaim
- projected
- secret
allowedCapabilities:
- NET_BIND_SERVICE
defaultAddCapabilities:
- NET_BIND_SERVICE
requiredDropCapabilities:
- ALL
users:
- 'system:serviceaccount:*:nginx-ingress'
groups: []

View File

@@ -1,12 +0,0 @@
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: nginx-ingress-operator
namespace: openshift-operators
spec:
channel: alpha
installPlanApproval: Automatic #Manual
name: nginx-ingress-operator
source: certified-operators
sourceNamespace: openshift-marketplace

View File

@@ -1,96 +0,0 @@
---
kind: NginxIngress
apiVersion: charts.nginx.org/v1alpha1
metadata:
name: nginxingress-external
namespace: nginx-ingress-external
spec:
# routeSelector:
# matchLabels:
# type: external-ingress
controller:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/instance: nginx-external
app.kubernetes.io/name: nginx-external
topologyKey: kubernetes.io/hostname
config:
entries:
http-snippets: proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=static-cache:10m
max_size=10g inactive=60m use_temp_path=off;
log-format-escaping: json
log-format: |-
{
"msec": "$msec",
"connection": "$connection",
"connection_requests": "$connection_requests",
"pid": "$pid",
"request_id": "$request_id",
"request_length": "$request_length",
"remote_addr": "$remote_addr",
"remote_user": "$remote_user",
"remote_port": "$remote_port",
"time_local": "$time_local",
"time_iso8601": "$time_iso8601",
"request": "$request",
"request_uri": "$request_uri",
"args": "$args",
"status": "$status",
"body_bytes_sent": "$body_bytes_sent",
"bytes_sent": "$bytes_sent",
"http_referer": "$http_referer",
"http_user_agent": "$http_user_agent",
"http_x_forwarded_for": "$http_x_forwarded_for",
"http_host": "$http_host",
"server_name": "$server_name",
"request_time": "$request_time",
"upstream": "$upstream_addr",
"upstream_connect_time": "$upstream_connect_time",
"upstream_header_time": "$upstream_header_time",
"upstream_response_time": "$upstream_response_time",
"upstream_response_length": "$upstream_response_length",
"upstream_cache_status": "$upstream_cache_status",
"ssl_protocol": "$ssl_protocol",
"ssl_cipher": "$ssl_cipher",
"scheme": "$scheme",
"request_method": "$request_method",
"server_protocol": "$server_protocol",
"pipe": "$pipe",
"gzip_ratio": "$gzip_ratio",
"http_cf_ray": "$http_cf_ray"
}
enableCustomResources: true
enableTLSPassthrough: true
enableSnippets: true
image:
pullPolicy: IfNotPresent
repository: nginx/nginx-ingress
tag: 3.7.0-ubi
ingressClass:
create: true
name: nginx-external
setAsDefaultIngress: true
replicaCount: 2
reportIngressStatus:
annotations: {}
enable: true
enableLeaderElection: true
ingressLink: ''
leaderElectionLockName: external-ingress-leader
service:
externalTrafficPolicy: Local
loadBalancerIP: 10.1.82.0
prometheus:
create: true
serviceMonitor:
create: true
volumes:
- name: nginx-cache
persistentVolumeClaim:
claimName: nginx-cache-external
volumeMounts:
- name: nginx-cache
mountPath: /var/cache/nginx

View File

@@ -1,8 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base

View File

@@ -1,100 +0,0 @@
---
kind: NginxIngress
apiVersion: charts.nginx.org/v1alpha1
metadata:
name: nginx
namespace: nginx-ingress
spec:
routeSelector:
matchLabels:
type: nginx
controller:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/instance: nginx
app.kubernetes.io/name: nginx
topologyKey: kubernetes.io/hostname
config:
entries:
http-snippets: proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=static-cache:10m
max_size=10g inactive=60m use_temp_path=off;
log-format-escaping: json
log-format: |-
{
"msec": "$msec",
"connection": "$connection",
"connection_requests": "$connection_requests",
"pid": "$pid",
"request_id": "$request_id",
"request_length": "$request_length",
"remote_addr": "$remote_addr",
"remote_user": "$remote_user",
"remote_port": "$remote_port",
"time_local": "$time_local",
"time_iso8601": "$time_iso8601",
"request": "$request",
"request_uri": "$request_uri",
"args": "$args",
"status": "$status",
"body_bytes_sent": "$body_bytes_sent",
"bytes_sent": "$bytes_sent",
"http_referer": "$http_referer",
"http_user_agent": "$http_user_agent",
"http_x_forwarded_for": "$http_x_forwarded_for",
"http_host": "$http_host",
"server_name": "$server_name",
"request_time": "$request_time",
"upstream": "$upstream_addr",
"upstream_connect_time": "$upstream_connect_time",
"upstream_header_time": "$upstream_header_time",
"upstream_response_time": "$upstream_response_time",
"upstream_response_length": "$upstream_response_length",
"upstream_cache_status": "$upstream_cache_status",
"ssl_protocol": "$ssl_protocol",
"ssl_cipher": "$ssl_cipher",
"scheme": "$scheme",
"request_method": "$request_method",
"server_protocol": "$server_protocol",
"pipe": "$pipe",
"gzip_ratio": "$gzip_ratio",
"http_cf_ray": "$http_cf_ray"
}
enableCustomResources: true
enableTLSPassthrough: true
enableSnippets: true
image:
pullPolicy: IfNotPresent
repository: nginx/nginx-ingress
tag: 5.1.0-ubi
ingressClass:
create: true
name: nginx
setAsDefaultIngress: false
initContainerResources:
requests:
cpu: 100m
memory: 128Mi
replicaCount: 2
reportIngressStatus:
annotations: {}
enable: true
enableLeaderElection: true
ingressLink: ''
leaderElectionLockName: nginx-ingress-leader
service:
externalTrafficPolicy: Local
loadBalancerIP: 10.1.82.0
prometheus:
create: true
serviceMonitor:
create: true
volumes:
- name: nginx-cache
persistentVolumeClaim:
claimName: nginx-cache
volumeMounts:
- name: nginx-cache
mountPath: /var/cache/nginx

View File

@@ -1,175 +0,0 @@
apiVersion: charts.nginx.org/v1alpha1
kind: NginxIngress
metadata:
name: nginx
namespace: nginx-ingress
spec:
controller:
affinity: {}
annotations: {}
appprotect:
enable: false
appprotectdos:
debug: false
enable: false
maxDaemons: 0
maxWorkers: 0
memory: 0
autoscaling:
annotations: {}
behavior: {}
enabled: false
maxReplicas: 3
minReplicas: 1
targetCPUUtilizationPercentage: 50
targetMemoryUtilizationPercentage: 50
config:
annotations: {}
entries: {}
containerPort:
http: 80
https: 443
customConfigMap: ''
customPorts: []
defaultHTTPListenerPort: 80
defaultHTTPSListenerPort: 443
defaultTLS:
cert: ''
key: ''
secret: ''
disableIPV6: false
dnsPolicy: ClusterFirst
enableCertManager: false
enableCustomResources: true
enableExternalDNS: false
enableLatencyMetrics: false
enableOIDC: false
enableSSLDynamicReload: true
enableSnippets: false
enableTLSPassthrough: false
env: []
extraContainers: []
globalConfiguration:
create: false
spec: {}
healthStatus: false
healthStatusURI: /nginx-health
hostNetwork: false
hostPort:
enable: false
http: 80
https: 443
image:
pullPolicy: IfNotPresent
repository: nginx/nginx-ingress
tag: 5.1.0-ubi
ingressClass:
create: true
name: nginx
setAsDefaultIngress: false
initContainerResources:
requests:
cpu: 100m
memory: 128Mi
initContainers: []
lifecycle: {}
logFormat: glog
logLevel: info
mgmt:
licenseTokenSecretName: license-token
minReadySeconds: 0
name: controller
nginxDebug: false
nginxReloadTimeout: 60000
nginxStatus:
allowCidrs: 127.0.0.1
enable: true
port: 8080
nginxplus: false
pod:
annotations: {}
extraLabels: {}
podDisruptionBudget:
annotations: {}
enabled: false
readOnlyRootFilesystem: false
readyStatus:
enable: true
initialDelaySeconds: 0
port: 8081
replicaCount: 1
reportIngressStatus:
annotations: {}
enable: true
enableLeaderElection: true
ingressLink: ''
leaderElectionLockName: nginx-ingress-leader
resources:
requests:
cpu: 100m
memory: 128Mi
selectorLabels: {}
service:
annotations: {}
clusterIP: ''
create: true
customPorts: []
externalIPs: []
externalTrafficPolicy: Local
extraLabels: {}
httpPort:
enable: true
port: 80
targetPort: 80
httpsPort:
enable: true
port: 443
targetPort: 443
loadBalancerIP: 10.1.82.0
loadBalancerSourceRanges: []
type: LoadBalancer
serviceAccount:
annotations: {}
imagePullSecretName: ''
imagePullSecretsNames: []
shareProcessNamespace: false
strategy: {}
terminationGracePeriodSeconds: 30
tlsPassthroughPort: 443
tolerations: []
volumeMounts: []
volumes: []
watchNamespace: ''
watchNamespaceLabel: ''
watchSecretNamespace: ''
wildcardTLS:
cert: ''
key: ''
secret: ''
kind: deployment
nginxServiceMesh:
enable: false
enableEgress: false
prometheus:
create: true
port: 9113
scheme: http
secret: ''
service:
create: false
labels:
service: nginx-ingress-prometheus-service
serviceMonitor:
create: false
endpoints:
- port: prometheus
labels: {}
selectorMatchLabels:
service: nginx-ingress-prometheus-service
rbac:
create: true
serviceInsight:
create: false
port: 9114
scheme: http
secret: ''

View File

@@ -1,9 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base
- ingresscontroller.yaml

View File

@@ -1,6 +0,0 @@
---
## nginx configuration
## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/index.md
ingress-nginx:
enabled: true

View File

@@ -1,33 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: keycloak-operator
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "3"
spec:
destination:
name: in-cluster
namespace: keycloak-operator
project: default
source:
path: cluster-applications/keycloak-operator
repoURL: git@github.com:rblundon/MK-Labs.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: argocd
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,13 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
# Operator deployment
- namespace.yaml
- operatorgroup.yaml
- subscription.yaml
# Deploy cluster resources

View File

@@ -1,13 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: keycloak-operator
name: keycloak-operator
argocd.argoproj.io/managed-by: openshift-gitops-operator
openshift.io/cluster-monitoring: 'true'
name: keycloak-operator
spec:
finalizers:
- kubernetes

View File

@@ -1,9 +0,0 @@
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: keycloak-operator
namespace: keycloak-operator
spec:
targetNamespaces:
- keycloak-operator

View File

@@ -1,12 +0,0 @@
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: keycloak-operator
namespace: keycloak-operator
spec:
channel: fast
installPlanApproval: Automatic #Manual
name: keycloak-operator
source: community-operators
sourceNamespace: openshift-marketplace

View File

@@ -1,46 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: metallb-operator
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
# - clusters: {} # Variable is .name
- list: # Variable is .cluster
elements:
- cluster: internal
template:
metadata:
name: '{{.cluster}}-metallb-operator'
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
destination:
name: '{{.cluster}}'
namespace: metallb-system
project: default
source:
path: cluster/metallb-operator/overlays/{{.cluster}}
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: argocd
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,11 +0,0 @@
---
apiVersion: metallb.io/v1beta1
kind: BGPAdvertisement
metadata:
name: bgp-advert
namespace: metallb-system
spec:
aggregationLength: 32
aggregationLengthV6: 128
ipAddressPools:
- bgp-ip-addresspool

View File

@@ -1,15 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
# Operator deployment
- namespace.yaml
- subscription.yaml
- operatorgroup.yaml
# Deploy cluster resources
- metallb.yaml
- bgp_advertisement.yaml

View File

@@ -1,7 +0,0 @@
---
apiVersion: metallb.io/v1beta1
kind: MetalLB
metadata:
name: metallb
namespace: metallb-system
spec: {}

View File

@@ -1,13 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: metallb-system
name: metallb-system
argocd.argoproj.io/managed-by: openshift-gitops-operator
openshift.io/cluster-monitoring: 'true'
name: metallb-system
spec:
finalizers:
- kubernetes

View File

@@ -1,9 +0,0 @@
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: metallb-operator
namespace: metallb-system
#spec:
# targetNamespaces:
# - metallb-system

View File

@@ -1,12 +0,0 @@
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: metallb-operator
namespace: metallb-system
spec:
channel: stable
installPlanApproval: Automatic #Manual
name: metallb-operator
source: redhat-operators
sourceNamespace: openshift-marketplace

View File

@@ -1,12 +0,0 @@
---
apiVersion: metallb.io/v1beta2
kind: BGPPeer
metadata:
name: bgp-peer-worlddrive
namespace: metallb-system
spec:
disableMP: false
myASN: 65003
peerASN: 65002
peerAddress: 10.1.71.1
peerPort: 179

View File

@@ -1,12 +0,0 @@
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: bgp-ip-addresspool
namespace: metallb-system
spec:
addresses:
- 10.1.182.0/24
autoAssign: true
avoidBuggyIPs: false

View File

@@ -1,12 +0,0 @@
---
apiVersion: metallb.io/v1beta2
kind: BGPPeer
metadata:
name: bgp-peer-worlddrive
namespace: metallb-system
spec:
disableMP: false
myASN: 65001
peerASN: 65002
peerAddress: 10.1.71.1
peerPort: 179

View File

@@ -1,12 +0,0 @@
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: bgp-ip-addresspool
namespace: metallb-system
spec:
addresses:
- 10.1.82.0/24
autoAssign: true
avoidBuggyIPs: false

View File

@@ -1,10 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base
- bgp_peer.yaml
- ip_addresspool.yaml

View File

@@ -1,42 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: nfs-storage
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
- clusters: {} # Variable is .name
template:
metadata:
name: '{{.name}}-nfs-storage'
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
destination:
name: '{{.name}}'
namespace: openshift-nfs-storage
project: default
source:
path: cluster/nfs-storage
repoURL: https://github.com/rblundon/homelab.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- RespectIgnoreDifferences=true
- CreateNamespace=true
managedNamespaceMetadata:
labels:
argocd.argoproj.io/managed-by: openshift-gitops
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas

View File

@@ -1,7 +0,0 @@
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: synology-nfs
provisioner: storage.io/nfs
parameters:
archiveOnDelete: "false"

View File

@@ -1,38 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfs-client-provisioner
labels:
app: nfs-client-provisioner
namespace: openshift-nfs-storage
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: nfs-client-provisioner
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccountName: nfs-client-provisioner
containers:
- name: nfs-client-provisioner
image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: storage.io/nfs
- name: NFS_SERVER
value: 10.10.121.35
- name: NFS_PATH
value: /volume1/openshift-nfs
volumes:
- name: nfs-client-root
nfs:
server: 10.10.121.35
path: /volume1/openshift-nfs

View File

@@ -1,9 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- rbac.yaml
- class.yaml
- deployment.yaml

View File

@@ -1,13 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: openshift-nfs-storage
name: oopenshift-nfs-storage
argocd.argoproj.io/managed-by: openshift-gitops-operator
# openshift.io/cluster-monitoring: true
name: openshift-nfs-storage
spec:
finalizers:
- kubernetes

View File

@@ -1,80 +0,0 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-client-provisioner
namespace: openshift-nfs-storage
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: nfs-client-provisioner-runner
rules:
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: run-nfs-client-provisioner
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
namespace: openshift-nfs-storage
roleRef:
kind: ClusterRole
name: nfs-client-provisioner-runner
apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: leader-locking-nfs-client-provisioner
namespace: openshift-nfs-storage
rules:
- apiGroups: [""]
resources: ["endpoints"]
verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: leader-locking-nfs-client-provisioner
namespace: openshift-nfs-storage
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
namespace: openshift-nfs-storage
roleRef:
kind: Role
name: leader-locking-nfs-client-provisioner
apiGroup: rbac.authorization.k8s.io
---
apiVersion: authorization.openshift.io/v1
kind: RoleBinding
metadata:
name: nfs-client-provisioner-scc
namespace: openshift-nfs-storage
roleRef:
# apiGroup: rbac.authorization.k8s.io
# kind: ClusterRole
name: system:openshift:scc:hostmount-anyuid
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
namespace: openshift-nfs-storage

View File

@@ -1,15 +0,0 @@
---
apiVersion: authorization.openshift.io/v1
kind: RoleBinding
metadata:
name: nfs-client-provisioner-scc
namespace: openshift-nfs-storage
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:openshift:scc:hostmount-anyuid
#name: system:openshift:$NAMESPACE:hostmount-anyuid
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
namespace: openshift-nfs-storage

Some files were not shown because too many files have changed in this diff Show More