chore: archive OpenShift/ACM cluster content, hub-bootstrap, and applications
This commit is contained in:
@@ -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
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
resources:
|
||||
- namespace.yaml
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,8 +0,0 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
commonAnnotations:
|
||||
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
|
||||
|
||||
resources:
|
||||
- ../../base
|
||||
@@ -1,5 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: krb5.conf
|
||||
@@ -1,8 +0,0 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
commonAnnotations:
|
||||
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
|
||||
|
||||
resources:
|
||||
- ../../base
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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: []
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,8 +0,0 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
commonAnnotations:
|
||||
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
|
||||
|
||||
resources:
|
||||
- ../../base
|
||||
@@ -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
|
||||
@@ -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: ''
|
||||
@@ -1,9 +0,0 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
commonAnnotations:
|
||||
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
|
||||
|
||||
resources:
|
||||
- ../../base
|
||||
- ingresscontroller.yaml
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
apiVersion: operators.coreos.com/v1
|
||||
kind: OperatorGroup
|
||||
metadata:
|
||||
name: keycloak-operator
|
||||
namespace: keycloak-operator
|
||||
spec:
|
||||
targetNamespaces:
|
||||
- keycloak-operator
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: MetalLB
|
||||
metadata:
|
||||
name: metallb
|
||||
namespace: metallb-system
|
||||
spec: {}
|
||||
@@ -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
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
apiVersion: operators.coreos.com/v1
|
||||
kind: OperatorGroup
|
||||
metadata:
|
||||
name: metallb-operator
|
||||
namespace: metallb-system
|
||||
#spec:
|
||||
# targetNamespaces:
|
||||
# - metallb-system
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,7 +0,0 @@
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: synology-nfs
|
||||
provisioner: storage.io/nfs
|
||||
parameters:
|
||||
archiveOnDelete: "false"
|
||||
@@ -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
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- rbac.yaml
|
||||
- class.yaml
|
||||
- deployment.yaml
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,11 +0,0 @@
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: test-claim
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Mi
|
||||
storageClassName: synology-nfs
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- operatorgroup.yaml
|
||||
- subscription.yaml
|
||||
- nmstate.yaml
|
||||
- multinetwork-enable.yaml
|
||||
@@ -1,8 +0,0 @@
|
||||
apiVersion: operator.openshift.io/v1
|
||||
kind: Network
|
||||
metadata:
|
||||
name: cluster
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "4"
|
||||
spec:
|
||||
useMultiNetworkPolicy: true
|
||||
@@ -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
|
||||
@@ -1,7 +0,0 @@
|
||||
apiVersion: nmstate.io/v1
|
||||
kind: NMState
|
||||
metadata:
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "4"
|
||||
name: nmstate
|
||||
spec: {}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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"
|
||||
# }
|
||||
# }
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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"
|
||||
# }
|
||||
# }
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
Reference in New Issue
Block a user