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: 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

View File

@@ -1,19 +0,0 @@
---
apiVersion: cdi.kubevirt.io/v1beta1
kind: StorageProfile
metadata:
name: synology-nfs
spec:
claimPropertySets:
- accessModes:
- ReadWriteOnce
volumeMode:
Filesystem
- accessModes:
- ReadWriteMany
volumeMode:
Filesystem
cloneStrategy: csi-clone
status:
provisioner: storage.io/nfs
storageClass: synology-nfs

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-claim
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Mi
storageClassName: synology-nfs

View File

@@ -1,21 +0,0 @@
kind: Pod
apiVersion: v1
metadata:
name: test-pod
spec:
containers:
- name: test-pod
image: gcr.io/google_containers/busybox:1.24
command:
- "/bin/sh"
args:
- "-c"
- "touch /mnt/SUCCESS && exit 0 || exit 1"
volumeMounts:
- name: nfs-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: nfs-pvc
persistentVolumeClaim:
claimName: test-claim

View File

@@ -1,37 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: nmstate-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}}-nmstate'
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
destination:
name: '{{.name}}'
namespace: openshift-nmstate
project: default
source:
path: cluster/nmstate/overlays/{{.name}}
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,10 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- operatorgroup.yaml
- subscription.yaml
- nmstate.yaml
- multinetwork-enable.yaml

View File

@@ -1,8 +0,0 @@
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
annotations:
argocd.argoproj.io/sync-wave: "4"
spec:
useMultiNetworkPolicy: true

View File

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

View File

@@ -1,7 +0,0 @@
apiVersion: nmstate.io/v1
kind: NMState
metadata:
annotations:
argocd.argoproj.io/sync-wave: "4"
name: nmstate
spec: {}

View File

@@ -1,11 +0,0 @@
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
annotations:
argocd.argoproj.io/sync-wave: "3"
name: openshift-nmstate
namespace: openshift-nmstate
spec:
targetNamespaces:
- openshift-nmstate

View File

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

View File

@@ -1,17 +0,0 @@
---
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
annotations:
argocd.argoproj.io/sync-wave: "11"
labels:
machineconfiguration.openshift.io/role: master
name: 99-master-custom-enable-iscsid
spec:
config:
ignition:
version: 3.1.0
systemd:
units:
- enabled: true
name: iscsid.service

View File

@@ -1,38 +0,0 @@
---
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
annotations:
description: Native VLAN connection for iSCSI
name: vlan121-localnet
namespace: default
spec:
config: |-
{
"name": "iscsi-net",
"cniVersion": "0.3.1",
"type": "vlan",
"master": "enp1s0f0",
"mtu": 1500,
"vlanId": 121,
"linkInContainer": false,
"ipam": {
"type": "static",
"addresses": [
{
"address": "10.10.121.10/24"
}
]
}
}
# {
# "cniVersion": "0.3.1",
# "name": "bridge-net",
# "type": "bridge",
# "isGateway": true,
# "vlan": 2,
# "ipam": {
# "type": "dhcp"
# }
# }

View File

@@ -1,10 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base
- ocp-storage-vlan.yaml
- enable-master-iscsi.yaml # Single Node Only

View File

@@ -1,30 +0,0 @@
---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: storage-network-ocp-hub
annotations:
argocd.argoproj.io/sync-wave: "10"
spec:
nodeSelector:
kubernetes.io/hostname: ocp-hub
desiredState:
interfaces:
- name: enp1s0f0.121
state: up
type: vlan
vlan:
base-iface: enp1s0f0
id: 121
- bridge:
port:
- name: enp1s0f0.121
ipv4:
address:
- ip: 10.10.121.10
prefix-length: 24
enabled: true
name: storage-network
state: up
type: linux-bridge
description: Linux bridge with enp1s0 as a port on VLAN 121

View File

@@ -1,17 +0,0 @@
---
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
annotations:
argocd.argoproj.io/sync-wave: "11"
labels:
machineconfiguration.openshift.io/role: worker
name: 99-worker-custom-enable-iscsid
spec:
config:
ignition:
version: 3.1.0
systemd:
units:
- enabled: true
name: iscsid.service

View File

@@ -1,38 +0,0 @@
---
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
annotations:
description: Native VLAN connection for iSCSI
name: vlan121-localnet
namespace: default
spec:
config: |-
{
"name": "iscsi-net",
"cniVersion": "0.3.1",
"type": "vlan",
"master": "enp2s0f0",
"mtu": 1500,
"vlanId": 121,
"linkInContainer": false,
"ipam": {
"type": "static",
"addresses": [
{
"address": "10.10.121.10/24"
}
]
}
}
# {
# "cniVersion": "0.3.1",
# "name": "bridge-net",
# "type": "bridge",
# "isGateway": true,
# "vlan": 2,
# "ipam": {
# "type": "dhcp"
# }
# }

View File

@@ -1,10 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base
- ocp-storage-vlan.yaml
- enable-worker-iscsi.yaml

View File

@@ -1,61 +0,0 @@
---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: storage-network-int-worker01
annotations:
argocd.argoproj.io/sync-wave: "10"
spec:
nodeSelector:
kubernetes.io/hostname: int-worker01
desiredState:
interfaces:
- name: enp2s0f0.121
state: up
type: vlan
vlan:
base-iface: enp2s0f0
id: 121
- bridge:
port:
- name: enp2s0f0.121
ipv4:
address:
- ip: 10.10.121.64
prefix-length: 24
enabled: true
name: storage-network
state: up
type: linux-bridge
description: Linux bridge with enp1s0 as a port on VLAN 121
---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: storage-network-int-worker02
annotations:
argocd.argoproj.io/sync-wave: "10"
spec:
nodeSelector:
kubernetes.io/hostname: int-worker02
desiredState:
interfaces:
- name: enp2s0f0.121
state: up
type: vlan
vlan:
base-iface: enp2s0f0
id: 121
- bridge:
port:
- name: enp2s0f0.121
ipv4:
address:
- ip: 10.10.121.65
prefix-length: 24
enabled: true
name: storage-network
state: up
type: linux-bridge
description: Linux bridge with enp1s0 as a port on VLAN 121

View File

@@ -1,13 +0,0 @@
---
apiVersion: v2
name: opencost-umbrella
description: A helm chart to include opencost with values
type: application
version: 0.1.0
appVersion: 0.1.0
dependencies:
- name: opencost
version: 1.9.8
repository: https://opencost.github.io/opencost-helm-chart
# condition: opencost.enabled

View File

@@ -1,11 +0,0 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
#- namespace.yaml
- https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/opencost.yaml

View File

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

View File

@@ -1,35 +0,0 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: opencost
finalizers:
- resources-finalizer.argocd.argoproj.io
annotations:
argocd.argoproj.io/sync-wave: "5"
spec:
destination:
name: in-cluster
namespace: opencost
project: default
source:
# path: opencost/opencost/develop/kubernetes/opencost.yaml
# repoURL: https://raw.githubusercontent.com/
path: cluster-applications/opencost
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,512 +0,0 @@
# -- Overwrite the default name of the chart
nameOverride: ""
# -- Overwrite all resources name created by the chart
fullnameOverride: ""
# -- Override the deployment namespace
namespaceOverride: ""
loglevel: info
plugins:
enabled: false
install:
enabled: true
fullImageName: curlimages/curl:latest
securityContext:
allowPrivilegeEscalation: false
seccompProfile:
type: RuntimeDefault
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1001031000
folder: /opt/opencost/plugin
# leave this commented to always download most recent version of plugins
# version: <INSERT_SPECIFIC_PLUGINS_VERSION>
configs:
# datadog: |
# {
# "datadog_site": "<INSERT_DATADOG_SITE>",
# "datadog_api_key": "<INSERT_DATADOG_API_KEY>",
# "datadog_app_key": "<INSERT_DATADOG_APP_KEY>"
# }
# -- List of secret names to use for pulling the images
imagePullSecrets: []
serviceAccount:
# -- Specifies whether a service account should be created
create: true
# -- Annotations to add to the service account
annotations: {}
# eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/eksctl-opencost
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
# -- Whether pods running as this service account should have an API token automatically mounted
automountServiceAccountToken: true
# NetworkPolicies for ingress
networkPolicies:
# -- Specifies whether networkpolicies should be created
enabled: false
# -- Internal Prometheus settings related to NetworkPolicies
prometheus:
# -- Namespace where internal Prometheus is installed
namespace: prometheus-system
# -- Pod port of in-cluster Prometheus
port: 9090
# -- Labels applied to the Prometheus server pod(s)
labels:
app.kubernetes.io/name: prometheus
# -- Extra egress rule
extraEgress: []
# -- Strategy to be used for the Deployment
updateStrategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
# -- Annotations to add to the all the resources
annotations: {}
# -- Annotations to add to the OpenCost Pod
podAnnotations: {}
# -- Annotations to add to the Secret
secretAnnotations: {}
# -- Labels to add to the OpenCost Pod
podLabels: {}
# -- Pod priority
priorityClassName: ~
# -- Holds pod-level security attributes and common container settings
podSecurityContext: {}
# fsGroup: 2000
service:
enabled: true
# -- Annotations to add to the service
annotations: {}
# -- Labels to add to the service account
labels: {}
# -- Kubernetes Service type
type: ClusterIP
# -- NodePort if service type is NodePort
nodePort: {}
# -- extra ports. Useful for sidecar pods such as oauth-proxy
extraPorts: []
# - name: oauth-proxy
# port: 8081
# targetPort: 8081
# - name: oauth-metrics
# port: 8082
# targetPort: 8082
# -- LoadBalancer Source IP CIDR if service type is LoadBalancer and cloud provider supports this
loadBalancerSourceRanges: []
# Create cluster role policies
rbac:
enabled: true
opencost:
# -- <SECRET_NAME> for the secret containing the Cloud Costs cloud-integration.json https://www.opencost.io/docs/configuration/#cloud-costs
# -- kubectl create secret generic <SECRET_NAME> --from-file=cloud-integration.json -n opencost
cloudIntegrationSecret: ""
exporter:
# API_PORT for the cost-model to listen on
apiPort: 9003
# debugPort: 40000 # for development purposes (debugging with delve) and not for production.
# -- The GCP Pricing API requires a key. This is supplied just for evaluation.
cloudProviderApiKey: ""
# -- Default cluster ID to use if cluster_id is not set in Prometheus metrics.
defaultClusterId: 'default-cluster'
image:
# -- Exporter container image registry
registry: ghcr.io
# -- Exporter container image name
repository: opencost/opencost
# -- Exporter container image tag
tag: "1.113.0@sha256:b313d6d320058bbd3841a948fb636182f49b46df2368d91e2ae046ed03c0f83c"
# -- Exporter container image pull policy
pullPolicy: IfNotPresent
# -- Override the full image name for development purposes
fullImageName: null
# -- List of extra arguments for the command, e.g.: log-format=json
extraArgs: []
# -- Number of OpenCost replicas to run
replicas: 1
resources:
# -- CPU/Memory resource requests
requests:
cpu: '10m'
memory: '55Mi'
# -- CPU/Memory resource limits
limits:
cpu: '999m'
memory: '1Gi'
# Startup probe configuration
startupProbe:
# -- Whether probe is enabled
enabled: true
# -- Probe path
path: /healthz
# -- Number of seconds before probe is initiated
initialDelaySeconds: 10
# -- Probe frequency in seconds
periodSeconds: 5
# -- Number of failures for probe to be considered failed
failureThreshold: 30
# Liveness probe configuration
livenessProbe:
# -- Whether probe is enabled
enabled: true
# -- Probe path
path: /healthz
# -- Number of seconds before probe is initiated
initialDelaySeconds: 10
# -- Probe frequency in seconds
periodSeconds: 20
# -- Number of failures for probe to be considered failed
failureThreshold: 3
# Readiness probe configuration
readinessProbe:
# -- Whether probe is enabled
enabled: true
# -- Probe path
path: /healthz
# -- Number of seconds before probe is initiated
initialDelaySeconds: 10
# -- Probe frequency in seconds
periodSeconds: 10
# -- Number of failures for probe to be considered failed
failureThreshold: 3
# -- The security options the container should be run with
securityContext: # {}
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1001031000
# Path of CSV file
csv_path: ""
# Persistent volume claim for storing the data. eg: csv file
persistence:
enabled: false
# -- Annotations for persistent volume
annotations: {}
# -- Access mode for persistent volume
accessMode: ""
# -- Storage class for persistent volume
storageClass: ""
# -- Size for persistent volume
size: ""
aws:
# -- AWS secret access key
secret_access_key: ""
# -- AWS secret key id
access_key_id: ""
# -- A list of volume mounts to be added to the pod
extraVolumeMounts: []
# -- List of additional environment variables to set in the container
env: []
# -- Any extra environment variables you would like to pass on to the pod
extraEnv: {}
# FOO: BAR
# For example, if accessing mimir directly and getting 401 Unauthorized
# PROMETHEUS_HEADER_X_SCOPE_ORGID: anonymous
customPricing:
# -- Enables custom pricing configuration
enabled: false
# -- Customize the configmap name used for custom pricing
configmapName: custom-pricing-model
# -- Path for the pricing configuration.
configPath: /tmp/custom-config
# -- Configures the pricing model provided in the values file.
createConfigmap: true
# -- Sets the provider type for the custom pricing file.
provider: custom
# -- More information about these values here: https://www.opencost.io/docs/configuration/on-prem#custom-pricing-using-the-opencost-helm-chart
costModel:
description: Modified pricing configuration.
CPU: 1.25
spotCPU: 0.006655
RAM: 0.50
spotRAM: 0.000892
GPU: 0.95
storage: 0.25
zoneNetworkEgress: 0.01
regionNetworkEgress: 0.01
internetNetworkEgress: 0.12
dataRetention:
dailyResolutionDays: 15
carbonCost:
# -- Enable carbon cost exposed in the API
enabled: false
cloudCost:
# -- Enable cloud cost ingestion and querying, dependant on valid integration credentials
enabled: false
# -- Number of hours between each run of the Cloud Cost pipeline
refreshRateHours: 6
# -- Number of days into the past that a Cloud Cost standard run will query for
runWindowDays: 3
# -- The number of standard runs before a Month-to-Date run occurs
monthToDateInterval: 6
# -- The max number of days that any single query will be made to construct Cloud Costs
queryWindowDays: 7
metrics:
kubeStateMetrics:
# -- (bool) Enable emission of pod annotations
emitPodAnnotations: ~
# -- (bool) Enable emission of namespace annotations
emitNamespaceAnnotations: ~
# -- (bool) Enable emission of KSM v1 metrics
emitKsmV1Metrics: ~
# -- (bool) Enable only emission of KSM v1 metrics that do not exist in KSM 2 by default
emitKsmV1MetricsOnly: ~
serviceMonitor:
# -- Create ServiceMonitor resource for scraping metrics using PrometheusOperator
enabled: false
# -- Additional labels to add to the ServiceMonitor
additionalLabels: {}
# -- Specify if the ServiceMonitor will be deployed into a different namespace (blank deploys into same namespace as chart)
namespace: ""
# -- Interval at which metrics should be scraped
scrapeInterval: 30s
# -- Timeout after which the scrape is ended
scrapeTimeout: 10s
# -- HonorLabels chooses the metric's labels on collisions with target labels
honorLabels: true
# -- RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields
relabelings: []
# -- MetricRelabelConfigs to apply to samples before ingestion
metricRelabelings: []
# -- extra Endpoints to add to the ServiceMonitor. Useful for scraping sidecars
extraEndpoints: []
# - port: oauth-metrics
# path: /metrics
# -- HTTP scheme used for scraping. Defaults to `http`
scheme: http
# -- TLS configuration for scraping metrics
tlsConfig: {}
# caFile: /etc/prom-certs/root-cert.pem
# certFile: /etc/prom-certs/cert-chain.pem
# insecureSkipVerify: true
# keyFile: /etc/prom-certs/key.pem
config:
# -- Enables creating the metrics.json configuration as a ConfigMap
enabled: false
# -- Customize the configmap name used for metrics
configmapName: custom-metrics
# -- List of metrics to be disabled
disabledMetrics: []
# - <metric-to-be-disabled>
# - <metric-to-be-disabled>
prometheus:
# -- Secret name that contains credentials for Prometheus
secret_name: ~
# -- Existing secret name that contains credentials for Prometheus
existingSecretName: ~
# -- Prometheus Basic auth username
username: ""
# -- Key in the secret that references the username
username_key: DB_BASIC_AUTH_USERNAME
# -- Prometheus Basic auth password
password: ""
# -- Key in the secret that references the password
password_key: DB_BASIC_AUTH_PW
# -- Prometheus Bearer token
bearer_token: ""
bearer_token_key: DB_BEARER_TOKEN
external:
# -- Use external Prometheus (eg. Grafana Cloud)
enabled: false
# -- External Prometheus url
url: "https://prometheus.example.com/prometheus"
internal:
# -- Use in-cluster Prometheus
enabled: true
# -- Service name of in-cluster Prometheus
serviceName: prometheus-server
# -- Namespace of in-cluster Prometheus
namespaceName: prometheus-system
# -- Service port of in-cluster Prometheus
port: 80
amp:
# -- Use Amazon Managed Service for Prometheus (AMP)
enabled: false # If true, opencost will be configured to remote_write and query from Amazon Managed Service for Prometheus.
# -- Workspace ID for AMP
workspaceId: ""
thanos:
enabled: false
queryOffset: ''
maxSourceResolution: ''
internal:
enabled: true
serviceName: my-thanos-query
namespaceName: opencost
port: 10901
external:
enabled: false
url: 'https://thanos-query.example.com/thanos'
ui:
# -- Enable OpenCost UI
enabled: true
image:
# -- UI container image registry
registry: ghcr.io
# -- UI container image name
repository: opencost/opencost-ui
# -- UI container image tag
# @default -- `""` (use appVersion in Chart.yaml)
tag: "1.113.0@sha256:4f408cf765217f889f4cb5cfcc97356e09892045a6ec951b27817a42ecb6748d"
# -- UI container image pull policy
pullPolicy: IfNotPresent
# -- Override the full image name for development purposes
fullImageName: null
resources:
# -- CPU/Memory resource requests
requests:
cpu: '10m'
memory: '55Mi'
# -- CPU/Memory resource limits
limits:
cpu: '999m'
memory: '1Gi'
# used in the default.nginx.conf if you want to switch for using with Docker
# apiServer: 0.0.0.0
uiPort: 9090
# Liveness probe configuration
livenessProbe:
# -- Whether probe is enabled
enabled: true
# -- Probe path
path: /healthz
# -- Number of seconds before probe is initiated
initialDelaySeconds: 30
# -- Probe frequency in seconds
periodSeconds: 10
# -- Number of failures for probe to be considered failed
failureThreshold: 3
# Readiness probe configuration
readinessProbe:
# -- Whether probe is enabled
enabled: true
# -- Probe path
path: /healthz
# -- Number of seconds before probe is initiated
initialDelaySeconds: 30
# -- Probe frequency in seconds
periodSeconds: 10
# -- Number of failures for probe to be considered failed
failureThreshold: 3
# -- The security options the container should be run with
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
# -- A list of environment variables to be added to the pod
extraEnv: []
# -- A list of volume mounts to be added to the pod
extraVolumeMounts: []
ingress:
# -- Ingress for OpenCost UI
enabled: false
# -- Ingress controller which implements the resource
ingressClassName: ""
# -- Annotations for Ingress resource
annotations: {}
# kubernetes.io/tls-acme: "true"
# -- A list of host rules used to configure the Ingress
# @default -- See [values.yaml](values.yaml)
hosts:
- host: example.local
paths:
- /
# -- Redirect ingress to an extraPort defined on the service such as oauth-proxy
servicePort: http-ui
# servicePort: oauth-proxy
# -- Ingress TLS configuration
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
sigV4Proxy:
image: public.ecr.aws/aws-observability/aws-sigv4-proxy:latest
imagePullPolicy: IfNotPresent
name: aps
port: 8005
region: us-west-2 # The AWS region
host: aps-workspaces.us-west-2.amazonaws.com # The hostname for AMP service.
# role_arn: arn:aws:iam::<account>:role/role-name # The AWS IAM role to assume.
extraEnv: # Pass extra env variables to sigV4Proxy
# - name: AWS_ACCESS_KEY_ID
# value: <access_key>
# - name: AWS_SECRET_ACCESS_KEY
# value: <secret_key>
resources: {}
# limits:
# cpu: 200m
# memory: 500Mi
# requests:
# cpu: 20m
# memory: 32Mi
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 65534
# -- Toleration labels for pod assignment
tolerations: []
# -- Node labels for pod assignment
nodeSelector: {}
# -- Affinity settings for pod assignment
affinity: {}
# -- Assign custom TopologySpreadConstraints rules
topologySpreadConstraints: []
# -- extra sidecars to add to the pod. Useful for things like oauth-proxy for the UI
extraContainers: []
# - name: oauth-proxy
# image: quay.io/oauth2-proxy/oauth2-proxy:v7.5.1
# args:
# - --upstream=http://127.0.0.1:9090
# - --http-address=0.0.0.0:8081
# - --metrics-address=0.0.0.0:8082
# - ...
# ports:
# - name: oauth-proxy
# containerPort: 8081
# protocol: TCP
# - name: oauth-metrics
# containerPort: 8082
# protocol: TCP
# resources: {}
# -- A list of volumes to be added to the pod
extraVolumes: []

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