feat(minikube): add minikube environment with garage S3 backend
Adds a self-contained minikube environment for local development and
testing alongside the existing production env.
env: minikube
- cluster.domain: minikube (browser DNS routes *.minikube → minikube ip)
- tls issuer: mkcert (CA-signed via cert-manager mkcert ClusterIssuer)
- storageClass: standard (minikube hostpath provisioner)
- backups disabled; storagebox disabled
- excludes argocd, forgejo, hcloud-csi (manual kubectl apply for testing)
prototypes/garage:
- hand-rolled S3-compatible object store (single Deployment + PVC)
- mittwald-generated rpc_secret + admin_token (hex)
- PostSync init Job: assigns cluster layout, ensures bucket and access
key, writes ocis-s3-credentials cross-namespace into ocis ns
- idempotent: skips if k8s secret already populated; otherwise rotates
the garage key (admin API only returns secretAccessKey on create)
- cross-ns RBAC re-pinned via zz-cross-ns-rbac-fix overlay (ns.ytt.yaml
clobbers explicit namespace fields)
ocis:
- new admin-user-id init Job ensures secret.user-id is a valid UUID v4
(mittwald can't generate UUIDs; ocis-settings rejects non-UUID ids)
- mittwald no longer manages user-id; existing prod UUIDs preserved
- insecure flag (oidcIdpInsecure / ocisHttpApiInsecure / ocmInsecure)
parameterized; defaults to false; minikube sets true for self-signed
OIDC issuer URL trust
other prototypes:
- victoria-metrics-single helm values ytt-ified (storageClassName)
- grafana admin secret now generated by mittwald (was hand-created in
prod; manifest is no-op there since mittwald only fills empty fields)
flake.nix: minikube + docker + postgresql added to dev shell.
This commit is contained in:
parent
279cd0d19f
commit
fe51c8c1bc
|
|
@ -22,6 +22,7 @@ backups:
|
|||
|
||||
#@overlay/match missing_ok=True
|
||||
ocis:
|
||||
insecure: false
|
||||
s3:
|
||||
external: false
|
||||
endpoint: ""
|
||||
|
|
|
|||
42
envs/minikube/env-data.ytt.yaml
Normal file
42
envs/minikube/env-data.ytt.yaml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
#@data/values
|
||||
---
|
||||
environment:
|
||||
id: minikube
|
||||
applications:
|
||||
- proto: cert-manager
|
||||
- proto: kubernetes-secret-generator
|
||||
- proto: traefik
|
||||
- proto: cloudnative-pg
|
||||
- proto: garage
|
||||
- proto: victoria-metrics-single
|
||||
- proto: kube-state-metrics
|
||||
- proto: node-exporter
|
||||
- proto: metrics-server
|
||||
- proto: grafana
|
||||
- proto: ocis
|
||||
|
||||
cluster:
|
||||
domain: minikube
|
||||
ingress:
|
||||
className: traefik
|
||||
tls:
|
||||
issuer: mkcert
|
||||
storageClass:
|
||||
block: standard
|
||||
local: standard
|
||||
|
||||
backups:
|
||||
enabled: false
|
||||
s3:
|
||||
endpoint: ""
|
||||
region: ""
|
||||
storagebox:
|
||||
enabled: false
|
||||
|
||||
ocis:
|
||||
insecure: true
|
||||
s3:
|
||||
external: false
|
||||
endpoint: http://garage.garage.svc:3900
|
||||
region: garage
|
||||
bucket: ocis-minikube
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
{
|
||||
devShells.default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
mkcert
|
||||
talosctl
|
||||
kubectl
|
||||
kubernetes-helm
|
||||
|
|
@ -21,6 +22,9 @@
|
|||
hcloud
|
||||
sops
|
||||
age
|
||||
minikube
|
||||
docker
|
||||
postgresql
|
||||
];
|
||||
};
|
||||
});
|
||||
|
|
|
|||
14
prototypes/garage/app-data.ytt.yaml
Normal file
14
prototypes/garage/app-data.ytt.yaml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#@data/values-schema
|
||||
---
|
||||
#@overlay/match-child-defaults missing_ok=True
|
||||
application:
|
||||
namespace: garage
|
||||
image: dxflrs/garage:v1.0.1
|
||||
storage:
|
||||
size: 5Gi
|
||||
bucket:
|
||||
name: ocis-minikube
|
||||
keyName: ocis
|
||||
ocis:
|
||||
namespace: ocis
|
||||
secretName: ocis-s3-credentials
|
||||
36
prototypes/garage/ytt/configmap.ytt.yaml
Normal file
36
prototypes/garage/ytt/configmap.ytt.yaml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
|
||||
#@ ns = data.values.application.namespace
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: garage-config
|
||||
namespace: #@ ns
|
||||
data:
|
||||
garage.toml: |
|
||||
metadata_dir = "/var/lib/garage/meta"
|
||||
data_dir = "/var/lib/garage/data"
|
||||
db_engine = "lmdb"
|
||||
|
||||
replication_factor = 1
|
||||
|
||||
rpc_bind_addr = "[::]:3901"
|
||||
rpc_public_addr = "127.0.0.1:3901"
|
||||
rpc_secret_file = "/etc/garage/rpc_secret"
|
||||
|
||||
[s3_api]
|
||||
s3_region = "garage"
|
||||
api_bind_addr = "[::]:3900"
|
||||
root_domain = ".s3.garage.local"
|
||||
|
||||
[s3_web]
|
||||
bind_addr = "[::]:3902"
|
||||
root_domain = ".web.garage.local"
|
||||
index = "index.html"
|
||||
|
||||
[admin]
|
||||
api_bind_addr = "[::]:3903"
|
||||
admin_token_file = "/etc/garage/admin_token"
|
||||
metrics_token_file = "/etc/garage/admin_token"
|
||||
167
prototypes/garage/ytt/init-job.ytt.yaml
Normal file
167
prototypes/garage/ytt/init-job.ytt.yaml
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
|
||||
#@ ns = data.values.application.namespace
|
||||
#@ app = data.values.application
|
||||
|
||||
#@ init_script = """\
|
||||
#@ set -eu
|
||||
#@
|
||||
#@ ADMIN_TOKEN=$(cat /etc/garage/admin_token)
|
||||
#@ AUTH="Authorization: Bearer ${ADMIN_TOKEN}"
|
||||
#@ ADMIN="http://garage.""" + ns + """.svc:3903"
|
||||
#@ OCIS_NS=\"""" + app.ocis.namespace + """\"
|
||||
#@ OCIS_SECRET=\"""" + app.ocis.secretName + """\"
|
||||
#@ BUCKET_NAME=\"""" + app.bucket.name + """\"
|
||||
#@ KEY_NAME=\"""" + app.bucket.keyName + """\"
|
||||
#@
|
||||
#@ echo "[garage-init] checking k8s secret ${OCIS_SECRET} in ${OCIS_NS}..."
|
||||
#@ EXISTING_AK=$(kubectl get secret "${OCIS_SECRET}" -n "${OCIS_NS}" -o jsonpath='{.data.accessKey}' 2>/dev/null || echo "")
|
||||
#@ EXISTING_SK=$(kubectl get secret "${OCIS_SECRET}" -n "${OCIS_NS}" -o jsonpath='{.data.secretKey}' 2>/dev/null || echo "")
|
||||
#@ if [ -n "${EXISTING_AK}" ] && [ -n "${EXISTING_SK}" ]; then
|
||||
#@ echo "[garage-init] ${OCIS_SECRET} already populated; skipping (idempotent exit)"
|
||||
#@ exit 0
|
||||
#@ fi
|
||||
#@
|
||||
#@ echo "[garage-init] waiting for admin API..."
|
||||
#@ until curl -fsS "${ADMIN}/health" >/dev/null 2>&1; do sleep 2; done
|
||||
#@
|
||||
#@ echo "[garage-init] checking cluster layout..."
|
||||
#@ STATUS=$(curl -fsS -H "${AUTH}" "${ADMIN}/v1/status")
|
||||
#@ NODE_ID=$(echo "${STATUS}" | jq -r '.nodes[0].id')
|
||||
#@ CUR_VERSION=$(echo "${STATUS}" | jq -r '.layoutVersion // 0')
|
||||
#@
|
||||
#@ if [ "${CUR_VERSION}" = "0" ] || [ "${CUR_VERSION}" = "null" ]; then
|
||||
#@ echo "[garage-init] applying initial layout for node ${NODE_ID}"
|
||||
#@ curl -fsS -X POST -H "${AUTH}" -H 'Content-Type: application/json' \\
|
||||
#@ -d "[{\\"id\\":\\"${NODE_ID}\\",\\"zone\\":\\"dc1\\",\\"capacity\\":1073741824,\\"tags\\":[]}]" \\
|
||||
#@ "${ADMIN}/v1/layout"
|
||||
#@ curl -fsS -X POST -H "${AUTH}" -H 'Content-Type: application/json' \\
|
||||
#@ -d '{"version":1}' \\
|
||||
#@ "${ADMIN}/v1/layout/apply"
|
||||
#@ echo "[garage-init] layout applied, waiting for cluster ready..."
|
||||
#@ for i in $(seq 1 30); do
|
||||
#@ READY=$(curl -fsS -H "${AUTH}" "${ADMIN}/v1/status" | jq -r '.layoutVersion')
|
||||
#@ if [ "${READY}" = "1" ]; then break; fi
|
||||
#@ sleep 2
|
||||
#@ done
|
||||
#@ else
|
||||
#@ echo "[garage-init] layout already at version ${CUR_VERSION}, skipping"
|
||||
#@ fi
|
||||
#@
|
||||
#@ echo "[garage-init] ensuring bucket ${BUCKET_NAME}..."
|
||||
#@ BUCKET_ID=$(curl -fsS -H "${AUTH}" "${ADMIN}/v1/bucket?globalAlias=${BUCKET_NAME}" 2>/dev/null | jq -r '.id // empty')
|
||||
#@ if [ -z "${BUCKET_ID}" ]; then
|
||||
#@ BUCKET_ID=$(curl -fsS -X POST -H "${AUTH}" -H 'Content-Type: application/json' \\
|
||||
#@ -d "{\\"globalAlias\\":\\"${BUCKET_NAME}\\"}" \\
|
||||
#@ "${ADMIN}/v1/bucket" | jq -r '.id')
|
||||
#@ echo "[garage-init] created bucket ${BUCKET_ID}"
|
||||
#@ else
|
||||
#@ echo "[garage-init] bucket exists: ${BUCKET_ID}"
|
||||
#@ fi
|
||||
#@
|
||||
#@ echo "[garage-init] resetting key ${KEY_NAME} (need fresh secret)..."
|
||||
#@ EXISTING_KEY_ID=$(curl -fsS -H "${AUTH}" "${ADMIN}/v1/key?search=${KEY_NAME}" 2>/dev/null | jq -r '.accessKeyId // empty')
|
||||
#@ if [ -n "${EXISTING_KEY_ID}" ]; then
|
||||
#@ echo "[garage-init] deleting stale key ${EXISTING_KEY_ID}"
|
||||
#@ curl -fsS -X DELETE -H "${AUTH}" "${ADMIN}/v1/key?id=${EXISTING_KEY_ID}" >/dev/null
|
||||
#@ fi
|
||||
#@ KEY_INFO=$(curl -fsS -X POST -H "${AUTH}" -H 'Content-Type: application/json' \\
|
||||
#@ -d "{\\"name\\":\\"${KEY_NAME}\\"}" \\
|
||||
#@ "${ADMIN}/v1/key")
|
||||
#@ ACCESS_KEY=$(echo "${KEY_INFO}" | jq -r '.accessKeyId')
|
||||
#@ SECRET_KEY=$(echo "${KEY_INFO}" | jq -r '.secretAccessKey')
|
||||
#@ if [ -z "${ACCESS_KEY}" ] || [ -z "${SECRET_KEY}" ] || [ "${SECRET_KEY}" = "null" ]; then
|
||||
#@ echo "[garage-init] failed to create key: ${KEY_INFO}"
|
||||
#@ exit 1
|
||||
#@ fi
|
||||
#@ echo "[garage-init] created key ${ACCESS_KEY}"
|
||||
#@
|
||||
#@ echo "[garage-init] granting bucket permissions..."
|
||||
#@ curl -fsS -X POST -H "${AUTH}" -H 'Content-Type: application/json' \\
|
||||
#@ -d "{\\"bucketId\\":\\"${BUCKET_ID}\\",\\"accessKeyId\\":\\"${ACCESS_KEY}\\",\\"permissions\\":{\\"read\\":true,\\"write\\":true,\\"owner\\":true}}" \\
|
||||
#@ "${ADMIN}/v1/bucket/allow" >/dev/null
|
||||
#@
|
||||
#@ echo "[garage-init] writing ${OCIS_SECRET} to ${OCIS_NS}..."
|
||||
#@ kubectl create secret generic "${OCIS_SECRET}" \\
|
||||
#@ -n "${OCIS_NS}" \\
|
||||
#@ --from-literal=accessKey="${ACCESS_KEY}" \\
|
||||
#@ --from-literal=secretKey="${SECRET_KEY}" \\
|
||||
#@ --dry-run=client -o yaml | kubectl apply -f -
|
||||
#@
|
||||
#@ echo "[garage-init] done."
|
||||
#@ """
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: garage-init
|
||||
namespace: #@ ns
|
||||
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: garage-init-ocis-secret
|
||||
namespace: #@ app.ocis.namespace
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get", "create", "patch", "update"]
|
||||
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: garage-init-ocis-secret
|
||||
namespace: #@ app.ocis.namespace
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: garage-init
|
||||
namespace: #@ ns
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: garage-init-ocis-secret
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: garage-init
|
||||
namespace: #@ ns
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-options: Replace=true,Force=true
|
||||
spec:
|
||||
ttlSecondsAfterFinished: 300
|
||||
backoffLimit: 30
|
||||
template:
|
||||
spec:
|
||||
serviceAccountName: garage-init
|
||||
restartPolicy: OnFailure
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65532
|
||||
runAsGroup: 65532
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
containers:
|
||||
- name: init
|
||||
image: alpine/k8s:1.32.3
|
||||
command: ["sh", "-c"]
|
||||
args:
|
||||
- #@ init_script
|
||||
volumeMounts:
|
||||
- name: garage-secrets
|
||||
mountPath: /etc/garage
|
||||
readOnly: true
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumes:
|
||||
- name: garage-secrets
|
||||
secret:
|
||||
secretName: garage-secrets
|
||||
18
prototypes/garage/ytt/ns.ytt.yaml
Normal file
18
prototypes/garage/ytt/ns.ytt.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
#@ load("@ytt:overlay", "overlay")
|
||||
|
||||
#@ ns = data.values.application.namespace
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: #@ ns
|
||||
labels:
|
||||
pod-security.kubernetes.io/enforce: restricted
|
||||
|
||||
#@overlay/match by=overlay.all, expects="1+"
|
||||
---
|
||||
metadata:
|
||||
#@overlay/match missing_ok=True
|
||||
namespace: #@ ns
|
||||
15
prototypes/garage/ytt/secrets.ytt.yaml
Normal file
15
prototypes/garage/ytt/secrets.ytt.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
|
||||
#@ ns = data.values.application.namespace
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: garage-secrets
|
||||
namespace: #@ ns
|
||||
annotations:
|
||||
secret-generator.v1.mittwald.de/autogenerate: rpc_secret,admin_token
|
||||
secret-generator.v1.mittwald.de/encoding: hex
|
||||
secret-generator.v1.mittwald.de/length: "64"
|
||||
type: Opaque
|
||||
118
prototypes/garage/ytt/statefulset.ytt.yaml
Normal file
118
prototypes/garage/ytt/statefulset.ytt.yaml
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
|
||||
#@ ns = data.values.application.namespace
|
||||
#@ app = data.values.application
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: garage
|
||||
namespace: #@ ns
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app: garage
|
||||
ports:
|
||||
- name: s3-api
|
||||
port: 3900
|
||||
targetPort: 3900
|
||||
- name: rpc
|
||||
port: 3901
|
||||
targetPort: 3901
|
||||
- name: s3-web
|
||||
port: 3902
|
||||
targetPort: 3902
|
||||
- name: admin
|
||||
port: 3903
|
||||
targetPort: 3903
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: garage
|
||||
namespace: #@ ns
|
||||
spec:
|
||||
replicas: 1
|
||||
serviceName: garage
|
||||
selector:
|
||||
matchLabels:
|
||||
app: garage
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: garage
|
||||
spec:
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
containers:
|
||||
- name: garage
|
||||
image: #@ app.image
|
||||
imagePullPolicy: IfNotPresent
|
||||
command: ["/garage"]
|
||||
args: ["server"]
|
||||
ports:
|
||||
- name: s3-api
|
||||
containerPort: 3900
|
||||
- name: rpc
|
||||
containerPort: 3901
|
||||
- name: s3-web
|
||||
containerPort: 3902
|
||||
- name: admin
|
||||
containerPort: 3903
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /var/lib/garage
|
||||
- name: config
|
||||
mountPath: /etc/garage.toml
|
||||
subPath: garage.toml
|
||||
readOnly: true
|
||||
- name: secrets
|
||||
mountPath: /etc/garage
|
||||
readOnly: true
|
||||
env:
|
||||
- name: GARAGE_CONFIG_FILE
|
||||
value: /etc/garage.toml
|
||||
- name: GARAGE_ALLOW_WORLD_READABLE_SECRETS
|
||||
value: "true"
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
memory: 512Mi
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 3903
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 5
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: garage-config
|
||||
- name: secrets
|
||||
secret:
|
||||
secretName: garage-secrets
|
||||
defaultMode: 0400
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data
|
||||
spec:
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
storageClassName: #@ data.values.cluster.storageClass.local
|
||||
resources:
|
||||
requests:
|
||||
storage: #@ app.storage.size
|
||||
20
prototypes/garage/ytt/zz-cross-ns-rbac-fix.ytt.yaml
Normal file
20
prototypes/garage/ytt/zz-cross-ns-rbac-fix.ytt.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
#@ load("@ytt:overlay", "overlay")
|
||||
|
||||
#! ns.ytt.yaml runs first (alphabetical) and rewrites every resource's
|
||||
#! namespace to data.values.application.namespace. The Role/RoleBinding
|
||||
#! created by init-job.ytt.yaml live in the ocis namespace (so the
|
||||
#! garage init Job can write ocis-s3-credentials there) — re-pin them
|
||||
#! after ns.ytt.yaml clobbered the namespace.
|
||||
|
||||
#@ ocis_ns = data.values.application.ocis.namespace
|
||||
|
||||
#@overlay/match by=overlay.subset({"kind": "Role", "metadata": {"name": "garage-init-ocis-secret"}}), expects="1+"
|
||||
---
|
||||
metadata:
|
||||
namespace: #@ ocis_ns
|
||||
|
||||
#@overlay/match by=overlay.subset({"kind": "RoleBinding", "metadata": {"name": "garage-init-ocis-secret"}}), expects="1+"
|
||||
---
|
||||
metadata:
|
||||
namespace: #@ ocis_ns
|
||||
14
prototypes/grafana/ytt/admin-secret.ytt.yaml
Normal file
14
prototypes/grafana/ytt/admin-secret.ytt.yaml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
|
||||
#@ ns = data.values.application.namespace
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: grafana-admin
|
||||
namespace: #@ ns
|
||||
annotations:
|
||||
secret-generator.v1.mittwald.de/autogenerate: admin-user,admin-password
|
||||
secret-generator.v1.mittwald.de/length: "32"
|
||||
type: Opaque
|
||||
|
|
@ -3,6 +3,11 @@
|
|||
---
|
||||
externalDomain: #@ host
|
||||
|
||||
insecure:
|
||||
oidcIdpInsecure: #@ data.values.ocis.insecure
|
||||
ocisHttpApiInsecure: #@ data.values.ocis.insecure
|
||||
ocmInsecure: #@ data.values.ocis.insecure
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: #@ data.values.cluster.ingress.className
|
||||
|
|
|
|||
121
prototypes/ocis/ytt/admin-user-id-init-job.ytt.yaml
Normal file
121
prototypes/ocis/ytt/admin-user-id-init-job.ytt.yaml
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
|
||||
#@ ns = data.values.application.namespace
|
||||
|
||||
#! mittwald can't generate UUIDs and ocis-settings rejects non-UUID user-ids
|
||||
#! with "must be in a valid format". This Job ensures the admin secret's
|
||||
#! user-id is a valid UUID v4, generating one if missing/invalid. Idempotent:
|
||||
#! a valid existing UUID is preserved (so production's pre-existing admin
|
||||
#! user-id is not rotated).
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: ocis-admin-user-id-init
|
||||
namespace: #@ ns
|
||||
annotations:
|
||||
argocd.argoproj.io/hook: PreSync
|
||||
argocd.argoproj.io/sync-wave: "-2"
|
||||
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: ocis-admin-user-id-init
|
||||
namespace: #@ ns
|
||||
annotations:
|
||||
argocd.argoproj.io/hook: PreSync
|
||||
argocd.argoproj.io/sync-wave: "-2"
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get", "patch"]
|
||||
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: ocis-admin-user-id-init
|
||||
namespace: #@ ns
|
||||
annotations:
|
||||
argocd.argoproj.io/hook: PreSync
|
||||
argocd.argoproj.io/sync-wave: "-2"
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: ocis-admin-user-id-init
|
||||
namespace: #@ ns
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: ocis-admin-user-id-init
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: ocis-admin-user-id-init
|
||||
namespace: #@ ns
|
||||
annotations:
|
||||
argocd.argoproj.io/hook: PreSync
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
argocd.argoproj.io/sync-options: Replace=true
|
||||
spec:
|
||||
ttlSecondsAfterFinished: 300
|
||||
backoffLimit: 10
|
||||
template:
|
||||
spec:
|
||||
serviceAccountName: ocis-admin-user-id-init
|
||||
restartPolicy: OnFailure
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65532
|
||||
runAsGroup: 65532
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
containers:
|
||||
- name: ensure-uuid
|
||||
image: alpine/k8s:1.32.3
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
set -eu
|
||||
UUID_RE='^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
|
||||
|
||||
for i in $(seq 1 30); do
|
||||
if kubectl -n "${NAMESPACE}" get secret ocis-admin-user >/dev/null 2>&1; then break; fi
|
||||
echo "[admin-user-id-init] waiting for ocis-admin-user secret..."
|
||||
sleep 2
|
||||
done
|
||||
|
||||
CUR_B64=$(kubectl -n "${NAMESPACE}" get secret ocis-admin-user -o jsonpath='{.data.user-id}' 2>/dev/null || echo "")
|
||||
if [ -n "${CUR_B64}" ]; then
|
||||
CUR=$(echo "${CUR_B64}" | base64 -d)
|
||||
if echo "${CUR}" | grep -Eq "${UUID_RE}"; then
|
||||
echo "[admin-user-id-init] user-id is a valid UUID, leaving alone"
|
||||
exit 0
|
||||
fi
|
||||
echo "[admin-user-id-init] user-id present but not a valid UUID; replacing"
|
||||
else
|
||||
echo "[admin-user-id-init] user-id missing; generating"
|
||||
fi
|
||||
|
||||
NEW_UUID=$(cat /proc/sys/kernel/random/uuid)
|
||||
NEW_B64=$(printf '%s' "${NEW_UUID}" | base64 -w0)
|
||||
kubectl -n "${NAMESPACE}" patch secret ocis-admin-user --type=json \
|
||||
-p "[{\"op\":\"replace\",\"path\":\"/data/user-id\",\"value\":\"${NEW_B64}\"}]" \
|
||||
|| kubectl -n "${NAMESPACE}" patch secret ocis-admin-user --type=json \
|
||||
-p "[{\"op\":\"add\",\"path\":\"/data/user-id\",\"value\":\"${NEW_B64}\"}]"
|
||||
echo "[admin-user-id-init] set user-id to ${NEW_UUID}"
|
||||
env:
|
||||
- name: NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
#@ ns = data.values.application.namespace
|
||||
|
||||
#@ secrets = [
|
||||
#@ ("ocis-admin-user", "password,user-id"),
|
||||
#@ ("ocis-admin-user", "password"),
|
||||
#@ ("ocis-jwt-secret", "jwt-secret"),
|
||||
#@ ("ocis-machine-auth-api-key", "machine-auth-api-key"),
|
||||
#@ ("ocis-storage-system-jwt-secret", "storage-system-jwt-secret"),
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#@ load("@ytt:data", "data")
|
||||
---
|
||||
server:
|
||||
resources:
|
||||
|
|
@ -9,7 +10,7 @@ server:
|
|||
persistentVolume:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
storageClassName: local-path
|
||||
storageClassName: #@ data.values.cluster.storageClass.local
|
||||
scrape:
|
||||
enabled: true
|
||||
config:
|
||||
25
rendered/argocd/minikube/app-cert-manager.yaml
Normal file
25
rendered/argocd/minikube/app-cert-manager.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-cert-manager
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: cert-manager
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/cert-manager
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-cloudnative-pg.yaml
Normal file
25
rendered/argocd/minikube/app-cloudnative-pg.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-cloudnative-pg
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: cloudnative-pg
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/cloudnative-pg
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-garage.yaml
Normal file
25
rendered/argocd/minikube/app-garage.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-garage
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: garage
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/garage
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-grafana.yaml
Normal file
25
rendered/argocd/minikube/app-grafana.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-grafana
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: grafana
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/grafana
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-kube-state-metrics.yaml
Normal file
25
rendered/argocd/minikube/app-kube-state-metrics.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-kube-state-metrics
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: kube-state-metrics
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/kube-state-metrics
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-kubernetes-secret-generator
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: kubernetes-secret-generator
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/kubernetes-secret-generator
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-metrics-server.yaml
Normal file
25
rendered/argocd/minikube/app-metrics-server.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-metrics-server
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: metrics-server
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/metrics-server
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-node-exporter.yaml
Normal file
25
rendered/argocd/minikube/app-node-exporter.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-node-exporter
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: node-exporter
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/node-exporter
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-ocis.yaml
Normal file
25
rendered/argocd/minikube/app-ocis.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-ocis
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: ocis
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/ocis
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-traefik.yaml
Normal file
25
rendered/argocd/minikube/app-traefik.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-traefik
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: traefik
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/traefik
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
25
rendered/argocd/minikube/app-victoria-metrics-single.yaml
Normal file
25
rendered/argocd/minikube/app-victoria-metrics-single.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
name: app-minikube-victoria-metrics-single
|
||||
namespace: argocd
|
||||
spec:
|
||||
destination:
|
||||
namespace: victoria-metrics-single
|
||||
server: https://kubernetes.default.svc
|
||||
project: env-minikube
|
||||
source:
|
||||
path: rendered/envs/minikube/victoria-metrics-single
|
||||
repoURL: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
targetRevision: main
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
22
rendered/argocd/minikube/env-minikube.yaml
Normal file
22
rendered/argocd/minikube/env-minikube.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: AppProject
|
||||
metadata:
|
||||
name: env-minikube
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
annotations:
|
||||
myks.dev/environment: minikube
|
||||
spec:
|
||||
description: Project for "minikube" environment
|
||||
clusterResourceWhitelist:
|
||||
- group: '*'
|
||||
kind: '*'
|
||||
destinations:
|
||||
- namespace: '*'
|
||||
server: https://kubernetes.default.svc
|
||||
namespaceResourceWhitelist:
|
||||
- group: '*'
|
||||
kind: '*'
|
||||
sourceRepos:
|
||||
- '*'
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
apiVersion: cert-manager.io/v1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
name: mkcert
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
ca:
|
||||
secretName: mkcert-ca
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
apiVersion: cert-manager.io/v1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
name: selfsigned
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
selfSigned: {}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cainjector
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cainjector
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-cainjector
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- get
|
||||
- create
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- admissionregistration.k8s.io
|
||||
resources:
|
||||
- validatingwebhookconfigurations
|
||||
- mutatingwebhookconfigurations
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- apiregistration.k8s.io
|
||||
resources:
|
||||
- apiservices
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- apiextensions.k8s.io
|
||||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- update
|
||||
- patch
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
rbac.authorization.k8s.io/aggregate-to-cluster-reader: "true"
|
||||
name: cert-manager-cluster-view
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- clusterissuers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: cert-manager
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-approve:cert-manager-io
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resourceNames:
|
||||
- issuers.cert-manager.io/*
|
||||
- clusterissuers.cert-manager.io/*
|
||||
resources:
|
||||
- signers
|
||||
verbs:
|
||||
- approve
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-certificates
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates
|
||||
- certificates/status
|
||||
- certificaterequests
|
||||
- certificaterequests/status
|
||||
verbs:
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates
|
||||
- certificaterequests
|
||||
- clusterissuers
|
||||
- issuers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates/finalizers
|
||||
- certificaterequests/finalizers
|
||||
verbs:
|
||||
- update
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- orders
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- create
|
||||
- update
|
||||
- delete
|
||||
- patch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: cert-manager
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-certificatesigningrequests
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- certificates.k8s.io
|
||||
resources:
|
||||
- certificatesigningrequests
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- update
|
||||
- apiGroups:
|
||||
- certificates.k8s.io
|
||||
resources:
|
||||
- certificatesigningrequests/status
|
||||
verbs:
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- certificates.k8s.io
|
||||
resourceNames:
|
||||
- issuers.cert-manager.io/*
|
||||
- clusterissuers.cert-manager.io/*
|
||||
resources:
|
||||
- signers
|
||||
verbs:
|
||||
- sign
|
||||
- apiGroups:
|
||||
- authorization.k8s.io
|
||||
resources:
|
||||
- subjectaccessreviews
|
||||
verbs:
|
||||
- create
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-challenges
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- challenges
|
||||
- challenges/status
|
||||
verbs:
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- challenges
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- issuers
|
||||
- clusterissuers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
- services
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- create
|
||||
- delete
|
||||
- apiGroups:
|
||||
- networking.k8s.io
|
||||
resources:
|
||||
- ingresses
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- create
|
||||
- delete
|
||||
- update
|
||||
- apiGroups:
|
||||
- gateway.networking.k8s.io
|
||||
resources:
|
||||
- httproutes
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- create
|
||||
- delete
|
||||
- update
|
||||
- apiGroups:
|
||||
- route.openshift.io
|
||||
resources:
|
||||
- routes/custom-host
|
||||
verbs:
|
||||
- create
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- challenges/finalizers
|
||||
verbs:
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-clusterissuers
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- clusterissuers
|
||||
- clusterissuers/status
|
||||
verbs:
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- clusterissuers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- create
|
||||
- update
|
||||
- delete
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-ingress-shim
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates
|
||||
- certificaterequests
|
||||
verbs:
|
||||
- create
|
||||
- update
|
||||
- delete
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates
|
||||
- certificaterequests
|
||||
- issuers
|
||||
- clusterissuers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- networking.k8s.io
|
||||
resources:
|
||||
- ingresses
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- networking.k8s.io
|
||||
resources:
|
||||
- ingresses/finalizers
|
||||
verbs:
|
||||
- update
|
||||
- apiGroups:
|
||||
- gateway.networking.k8s.io
|
||||
resources:
|
||||
- gateways
|
||||
- httproutes
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- gateway.networking.k8s.io
|
||||
resources:
|
||||
- gateways/finalizers
|
||||
- httproutes/finalizers
|
||||
verbs:
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-issuers
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- issuers
|
||||
- issuers/status
|
||||
verbs:
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- issuers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- create
|
||||
- update
|
||||
- delete
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-orders
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- orders
|
||||
- orders/status
|
||||
verbs:
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- orders
|
||||
- challenges
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- clusterissuers
|
||||
- issuers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- challenges
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- orders/finalizers
|
||||
verbs:
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
rbac.authorization.k8s.io/aggregate-to-admin: "true"
|
||||
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||
name: cert-manager-edit
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates
|
||||
- certificaterequests
|
||||
- issuers
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- deletecollection
|
||||
- patch
|
||||
- update
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates/status
|
||||
verbs:
|
||||
- update
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- challenges
|
||||
- orders
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- deletecollection
|
||||
- patch
|
||||
- update
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
rbac.authorization.k8s.io/aggregate-to-admin: "true"
|
||||
rbac.authorization.k8s.io/aggregate-to-cluster-reader: "true"
|
||||
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||
rbac.authorization.k8s.io/aggregate-to-view: "true"
|
||||
name: cert-manager-view
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificates
|
||||
- certificaterequests
|
||||
- issuers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- acme.cert-manager.io
|
||||
resources:
|
||||
- challenges
|
||||
- orders
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook:subjectaccessreviews
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- authorization.k8s.io
|
||||
resources:
|
||||
- subjectaccessreviews
|
||||
verbs:
|
||||
- create
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cainjector
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cainjector
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-cainjector
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-cainjector
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager-cainjector
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: cert-manager
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-approve:cert-manager-io
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-controller-approve:cert-manager-io
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-certificates
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-controller-certificates
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: cert-manager
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-certificatesigningrequests
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-controller-certificatesigningrequests
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-challenges
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-controller-challenges
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-clusterissuers
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-controller-clusterissuers
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-ingress-shim
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-controller-ingress-shim
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-issuers
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-controller-issuers
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-controller-orders
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-controller-orders
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook:subjectaccessreviews
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cert-manager-webhook:subjectaccessreviews
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,317 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
helm.sh/resource-policy: keep
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: certificaterequests.cert-manager.io
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
group: cert-manager.io
|
||||
names:
|
||||
categories:
|
||||
- cert-manager
|
||||
kind: CertificateRequest
|
||||
listKind: CertificateRequestList
|
||||
plural: certificaterequests
|
||||
shortNames:
|
||||
- cr
|
||||
- crs
|
||||
singular: certificaterequest
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=="Approved")].status
|
||||
name: Approved
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=="Denied")].status
|
||||
name: Denied
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=="Ready")].status
|
||||
name: Ready
|
||||
type: string
|
||||
- jsonPath: .spec.issuerRef.name
|
||||
name: Issuer
|
||||
type: string
|
||||
- jsonPath: .spec.username
|
||||
name: Requester
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=="Ready")].message
|
||||
name: Status
|
||||
priority: 1
|
||||
type: string
|
||||
- description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
|
||||
jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: |-
|
||||
A CertificateRequest is used to request a signed certificate from one of the
|
||||
configured issuers.
|
||||
|
||||
All fields within the CertificateRequest's `spec` are immutable after creation.
|
||||
A CertificateRequest will either succeed or fail, as denoted by its `Ready` status
|
||||
condition and its `status.failureTime` field.
|
||||
|
||||
A CertificateRequest is a one-shot resource, meaning it represents a single
|
||||
point in time request for a certificate and cannot be re-used.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: |-
|
||||
Specification of the desired state of the CertificateRequest resource.
|
||||
https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
duration:
|
||||
description: |-
|
||||
Requested 'duration' (i.e. lifetime) of the Certificate. Note that the
|
||||
issuer may choose to ignore the requested duration, just like any other
|
||||
requested attribute.
|
||||
type: string
|
||||
extra:
|
||||
additionalProperties:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
description: |-
|
||||
Extra contains extra attributes of the user that created the CertificateRequest.
|
||||
Populated by the cert-manager webhook on creation and immutable.
|
||||
type: object
|
||||
groups:
|
||||
description: |-
|
||||
Groups contains group membership of the user that created the CertificateRequest.
|
||||
Populated by the cert-manager webhook on creation and immutable.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
isCA:
|
||||
description: |-
|
||||
Requested basic constraints isCA value. Note that the issuer may choose
|
||||
to ignore the requested isCA value, just like any other requested attribute.
|
||||
|
||||
NOTE: If the CSR in the `Request` field has a BasicConstraints extension,
|
||||
it must have the same isCA value as specified here.
|
||||
|
||||
If true, this will automatically add the `cert sign` usage to the list
|
||||
of requested `usages`.
|
||||
type: boolean
|
||||
issuerRef:
|
||||
description: |-
|
||||
Reference to the issuer responsible for issuing the certificate.
|
||||
If the issuer is namespace-scoped, it must be in the same namespace
|
||||
as the Certificate. If the issuer is cluster-scoped, it can be used
|
||||
from any namespace.
|
||||
|
||||
The `name` field of the reference must always be specified.
|
||||
properties:
|
||||
group:
|
||||
description: Group of the resource being referred to.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the resource being referred to.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the resource being referred to.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
request:
|
||||
description: |-
|
||||
The PEM-encoded X.509 certificate signing request to be submitted to the
|
||||
issuer for signing.
|
||||
|
||||
If the CSR has a BasicConstraints extension, its isCA attribute must
|
||||
match the `isCA` value of this CertificateRequest.
|
||||
If the CSR has a KeyUsage extension, its key usages must match the
|
||||
key usages in the `usages` field of this CertificateRequest.
|
||||
If the CSR has a ExtKeyUsage extension, its extended key usages
|
||||
must match the extended key usages in the `usages` field of this
|
||||
CertificateRequest.
|
||||
format: byte
|
||||
type: string
|
||||
uid:
|
||||
description: |-
|
||||
UID contains the uid of the user that created the CertificateRequest.
|
||||
Populated by the cert-manager webhook on creation and immutable.
|
||||
type: string
|
||||
usages:
|
||||
description: |-
|
||||
Requested key usages and extended key usages.
|
||||
|
||||
NOTE: If the CSR in the `Request` field has uses the KeyUsage or
|
||||
ExtKeyUsage extension, these extensions must have the same values
|
||||
as specified here without any additional values.
|
||||
|
||||
If unset, defaults to `digital signature` and `key encipherment`.
|
||||
items:
|
||||
description: |-
|
||||
KeyUsage specifies valid usage contexts for keys.
|
||||
See:
|
||||
https://tools.ietf.org/html/rfc5280#section-4.2.1.3
|
||||
https://tools.ietf.org/html/rfc5280#section-4.2.1.12
|
||||
|
||||
Valid KeyUsage values are as follows:
|
||||
"signing",
|
||||
"digital signature",
|
||||
"content commitment",
|
||||
"key encipherment",
|
||||
"key agreement",
|
||||
"data encipherment",
|
||||
"cert sign",
|
||||
"crl sign",
|
||||
"encipher only",
|
||||
"decipher only",
|
||||
"any",
|
||||
"server auth",
|
||||
"client auth",
|
||||
"code signing",
|
||||
"email protection",
|
||||
"s/mime",
|
||||
"ipsec end system",
|
||||
"ipsec tunnel",
|
||||
"ipsec user",
|
||||
"timestamping",
|
||||
"ocsp signing",
|
||||
"microsoft sgc",
|
||||
"netscape sgc"
|
||||
enum:
|
||||
- signing
|
||||
- digital signature
|
||||
- content commitment
|
||||
- key encipherment
|
||||
- key agreement
|
||||
- data encipherment
|
||||
- cert sign
|
||||
- crl sign
|
||||
- encipher only
|
||||
- decipher only
|
||||
- any
|
||||
- server auth
|
||||
- client auth
|
||||
- code signing
|
||||
- email protection
|
||||
- s/mime
|
||||
- ipsec end system
|
||||
- ipsec tunnel
|
||||
- ipsec user
|
||||
- timestamping
|
||||
- ocsp signing
|
||||
- microsoft sgc
|
||||
- netscape sgc
|
||||
type: string
|
||||
type: array
|
||||
username:
|
||||
description: |-
|
||||
Username contains the name of the user that created the CertificateRequest.
|
||||
Populated by the cert-manager webhook on creation and immutable.
|
||||
type: string
|
||||
required:
|
||||
- issuerRef
|
||||
- request
|
||||
type: object
|
||||
status:
|
||||
description: |-
|
||||
Status of the CertificateRequest.
|
||||
This is set and managed automatically.
|
||||
Read-only.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
ca:
|
||||
description: |-
|
||||
The PEM encoded X.509 certificate of the signer, also known as the CA
|
||||
(Certificate Authority).
|
||||
This is set on a best-effort basis by different issuers.
|
||||
If not set, the CA is assumed to be unknown/not available.
|
||||
format: byte
|
||||
type: string
|
||||
certificate:
|
||||
description: |-
|
||||
The PEM encoded X.509 certificate resulting from the certificate
|
||||
signing request.
|
||||
If not set, the CertificateRequest has either not been completed or has
|
||||
failed. More information on failure can be found by checking the
|
||||
`conditions` field.
|
||||
format: byte
|
||||
type: string
|
||||
conditions:
|
||||
description: |-
|
||||
List of status conditions to indicate the status of a CertificateRequest.
|
||||
Known condition types are `Ready`, `InvalidRequest`, `Approved` and `Denied`.
|
||||
items:
|
||||
description: CertificateRequestCondition contains condition information for a CertificateRequest.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: |-
|
||||
LastTransitionTime is the timestamp corresponding to the last status
|
||||
change of this condition.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: |-
|
||||
Message is a human readable description of the details of the last
|
||||
transition, complementing reason.
|
||||
type: string
|
||||
reason:
|
||||
description: |-
|
||||
Reason is a brief machine readable explanation for the condition's last
|
||||
transition.
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of (`True`, `False`, `Unknown`).
|
||||
enum:
|
||||
- "True"
|
||||
- "False"
|
||||
- Unknown
|
||||
type: string
|
||||
type:
|
||||
description: |-
|
||||
Type of the condition, known values are (`Ready`, `InvalidRequest`,
|
||||
`Approved`, `Denied`).
|
||||
type: string
|
||||
required:
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
failureTime:
|
||||
description: |-
|
||||
FailureTime stores the time that this CertificateRequest failed. This is
|
||||
used to influence garbage collection and back-off.
|
||||
format: date-time
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
|
|
@ -0,0 +1,779 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
helm.sh/resource-policy: keep
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: certificates.cert-manager.io
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
group: cert-manager.io
|
||||
names:
|
||||
categories:
|
||||
- cert-manager
|
||||
kind: Certificate
|
||||
listKind: CertificateList
|
||||
plural: certificates
|
||||
shortNames:
|
||||
- cert
|
||||
- certs
|
||||
singular: certificate
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=="Ready")].status
|
||||
name: Ready
|
||||
type: string
|
||||
- jsonPath: .spec.secretName
|
||||
name: Secret
|
||||
type: string
|
||||
- jsonPath: .spec.issuerRef.name
|
||||
name: Issuer
|
||||
priority: 1
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=="Ready")].message
|
||||
name: Status
|
||||
priority: 1
|
||||
type: string
|
||||
- description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
|
||||
jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: |-
|
||||
A Certificate resource should be created to ensure an up to date and signed
|
||||
X.509 certificate is stored in the Kubernetes Secret resource named in `spec.secretName`.
|
||||
|
||||
The stored certificate will be renewed before it expires (as configured by `spec.renewBefore`).
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: |-
|
||||
Specification of the desired state of the Certificate resource.
|
||||
https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
additionalOutputFormats:
|
||||
description: |-
|
||||
Defines extra output formats of the private key and signed certificate chain
|
||||
to be written to this Certificate's target Secret.
|
||||
|
||||
This is a Beta Feature enabled by default. It can be disabled with the
|
||||
`--feature-gates=AdditionalCertificateOutputFormats=false` option set on both
|
||||
the controller and webhook components.
|
||||
items:
|
||||
description: |-
|
||||
CertificateAdditionalOutputFormat defines an additional output format of a
|
||||
Certificate resource. These contain supplementary data formats of the signed
|
||||
certificate chain and paired private key.
|
||||
properties:
|
||||
type:
|
||||
description: |-
|
||||
Type is the name of the format type that should be written to the
|
||||
Certificate's target Secret.
|
||||
enum:
|
||||
- DER
|
||||
- CombinedPEM
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
commonName:
|
||||
description: |-
|
||||
Requested common name X509 certificate subject attribute.
|
||||
More info: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
|
||||
NOTE: TLS clients will ignore this value when any subject alternative name is
|
||||
set (see https://tools.ietf.org/html/rfc6125#section-6.4.4).
|
||||
|
||||
Should have a length of 64 characters or fewer to avoid generating invalid CSRs.
|
||||
Cannot be set if the `literalSubject` field is set.
|
||||
type: string
|
||||
dnsNames:
|
||||
description: Requested DNS subject alternative names.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
duration:
|
||||
description: |-
|
||||
Requested 'duration' (i.e. lifetime) of the Certificate. Note that the
|
||||
issuer may choose to ignore the requested duration, just like any other
|
||||
requested attribute.
|
||||
|
||||
If unset, this defaults to 90 days.
|
||||
Minimum accepted duration is 1 hour.
|
||||
Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration.
|
||||
type: string
|
||||
emailAddresses:
|
||||
description: Requested email subject alternative names.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
encodeUsagesInRequest:
|
||||
description: |-
|
||||
Whether the KeyUsage and ExtKeyUsage extensions should be set in the encoded CSR.
|
||||
|
||||
This option defaults to true, and should only be disabled if the target
|
||||
issuer does not support CSRs with these X509 KeyUsage/ ExtKeyUsage extensions.
|
||||
type: boolean
|
||||
ipAddresses:
|
||||
description: Requested IP address subject alternative names.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
isCA:
|
||||
description: |-
|
||||
Requested basic constraints isCA value.
|
||||
The isCA value is used to set the `isCA` field on the created CertificateRequest
|
||||
resources. Note that the issuer may choose to ignore the requested isCA value, just
|
||||
like any other requested attribute.
|
||||
|
||||
If true, this will automatically add the `cert sign` usage to the list
|
||||
of requested `usages`.
|
||||
type: boolean
|
||||
issuerRef:
|
||||
description: |-
|
||||
Reference to the issuer responsible for issuing the certificate.
|
||||
If the issuer is namespace-scoped, it must be in the same namespace
|
||||
as the Certificate. If the issuer is cluster-scoped, it can be used
|
||||
from any namespace.
|
||||
|
||||
The `name` field of the reference must always be specified.
|
||||
properties:
|
||||
group:
|
||||
description: Group of the resource being referred to.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the resource being referred to.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the resource being referred to.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
keystores:
|
||||
description: Additional keystore output formats to be stored in the Certificate's Secret.
|
||||
properties:
|
||||
jks:
|
||||
description: |-
|
||||
JKS configures options for storing a JKS keystore in the
|
||||
`spec.secretName` Secret resource.
|
||||
properties:
|
||||
alias:
|
||||
description: |-
|
||||
Alias specifies the alias of the key in the keystore, required by the JKS format.
|
||||
If not provided, the default alias `certificate` will be used.
|
||||
type: string
|
||||
create:
|
||||
description: |-
|
||||
Create enables JKS keystore creation for the Certificate.
|
||||
If true, a file named `keystore.jks` will be created in the target
|
||||
Secret resource, encrypted using the password stored in
|
||||
`passwordSecretRef` or `password`.
|
||||
The keystore file will be updated immediately.
|
||||
If the issuer provided a CA certificate, a file named `truststore.jks`
|
||||
will also be created in the target Secret resource, encrypted using the
|
||||
password stored in `passwordSecretRef`
|
||||
containing the issuing Certificate Authority
|
||||
type: boolean
|
||||
password:
|
||||
description: |-
|
||||
Password provides a literal password used to encrypt the JKS keystore.
|
||||
Mutually exclusive with passwordSecretRef.
|
||||
One of password or passwordSecretRef must provide a password with a non-zero length.
|
||||
type: string
|
||||
passwordSecretRef:
|
||||
description: |-
|
||||
PasswordSecretRef is a reference to a non-empty key in a Secret resource
|
||||
containing the password used to encrypt the JKS keystore.
|
||||
Mutually exclusive with password.
|
||||
One of password or passwordSecretRef must provide a password with a non-zero length.
|
||||
properties:
|
||||
key:
|
||||
description: |-
|
||||
The key of the entry in the Secret resource's `data` field to be used.
|
||||
Some instances of this field may be defaulted, in others it may be
|
||||
required.
|
||||
type: string
|
||||
name:
|
||||
description: |-
|
||||
Name of the resource being referred to.
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
required:
|
||||
- create
|
||||
type: object
|
||||
pkcs12:
|
||||
description: |-
|
||||
PKCS12 configures options for storing a PKCS12 keystore in the
|
||||
`spec.secretName` Secret resource.
|
||||
properties:
|
||||
create:
|
||||
description: |-
|
||||
Create enables PKCS12 keystore creation for the Certificate.
|
||||
If true, a file named `keystore.p12` will be created in the target
|
||||
Secret resource, encrypted using the password stored in
|
||||
`passwordSecretRef` or in `password`.
|
||||
The keystore file will be updated immediately.
|
||||
If the issuer provided a CA certificate, a file named `truststore.p12` will
|
||||
also be created in the target Secret resource, encrypted using the
|
||||
password stored in `passwordSecretRef` containing the issuing Certificate
|
||||
Authority
|
||||
type: boolean
|
||||
password:
|
||||
description: |-
|
||||
Password provides a literal password used to encrypt the PKCS#12 keystore.
|
||||
Mutually exclusive with passwordSecretRef.
|
||||
One of password or passwordSecretRef must provide a password with a non-zero length.
|
||||
type: string
|
||||
passwordSecretRef:
|
||||
description: |-
|
||||
PasswordSecretRef is a reference to a non-empty key in a Secret resource
|
||||
containing the password used to encrypt the PKCS#12 keystore.
|
||||
Mutually exclusive with password.
|
||||
One of password or passwordSecretRef must provide a password with a non-zero length.
|
||||
properties:
|
||||
key:
|
||||
description: |-
|
||||
The key of the entry in the Secret resource's `data` field to be used.
|
||||
Some instances of this field may be defaulted, in others it may be
|
||||
required.
|
||||
type: string
|
||||
name:
|
||||
description: |-
|
||||
Name of the resource being referred to.
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
profile:
|
||||
description: |-
|
||||
Profile specifies the key and certificate encryption algorithms and the HMAC algorithm
|
||||
used to create the PKCS12 keystore. Default value is `LegacyRC2` for backward compatibility.
|
||||
|
||||
If provided, allowed values are:
|
||||
`LegacyRC2`: Deprecated. Not supported by default in OpenSSL 3 or Java 20.
|
||||
`LegacyDES`: Less secure algorithm. Use this option for maximal compatibility.
|
||||
`Modern2023`: Secure algorithm. Use this option in case you have to always use secure algorithms
|
||||
(eg. because of company policy). Please note that the security of the algorithm is not that important
|
||||
in reality, because the unencrypted certificate and private key are also stored in the Secret.
|
||||
enum:
|
||||
- LegacyRC2
|
||||
- LegacyDES
|
||||
- Modern2023
|
||||
type: string
|
||||
required:
|
||||
- create
|
||||
type: object
|
||||
type: object
|
||||
literalSubject:
|
||||
description: |-
|
||||
Requested X.509 certificate subject, represented using the LDAP "String
|
||||
Representation of a Distinguished Name" [1].
|
||||
Important: the LDAP string format also specifies the order of the attributes
|
||||
in the subject, this is important when issuing certs for LDAP authentication.
|
||||
Example: `CN=foo,DC=corp,DC=example,DC=com`
|
||||
More info [1]: https://datatracker.ietf.org/doc/html/rfc4514
|
||||
More info: https://github.com/cert-manager/cert-manager/issues/3203
|
||||
More info: https://github.com/cert-manager/cert-manager/issues/4424
|
||||
|
||||
Cannot be set if the `subject` or `commonName` field is set.
|
||||
type: string
|
||||
nameConstraints:
|
||||
description: |-
|
||||
x.509 certificate NameConstraint extension which MUST NOT be used in a non-CA certificate.
|
||||
More Info: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10
|
||||
|
||||
This is an Alpha Feature and is only enabled with the
|
||||
`--feature-gates=NameConstraints=true` option set on both
|
||||
the controller and webhook components.
|
||||
properties:
|
||||
critical:
|
||||
description: if true then the name constraints are marked critical.
|
||||
type: boolean
|
||||
excluded:
|
||||
description: |-
|
||||
Excluded contains the constraints which must be disallowed. Any name matching a
|
||||
restriction in the excluded field is invalid regardless
|
||||
of information appearing in the permitted
|
||||
properties:
|
||||
dnsDomains:
|
||||
description: DNSDomains is a list of DNS domains that are permitted or excluded.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
emailAddresses:
|
||||
description: EmailAddresses is a list of Email Addresses that are permitted or excluded.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
ipRanges:
|
||||
description: |-
|
||||
IPRanges is a list of IP Ranges that are permitted or excluded.
|
||||
This should be a valid CIDR notation.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
uriDomains:
|
||||
description: URIDomains is a list of URI domains that are permitted or excluded.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
permitted:
|
||||
description: Permitted contains the constraints in which the names must be located.
|
||||
properties:
|
||||
dnsDomains:
|
||||
description: DNSDomains is a list of DNS domains that are permitted or excluded.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
emailAddresses:
|
||||
description: EmailAddresses is a list of Email Addresses that are permitted or excluded.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
ipRanges:
|
||||
description: |-
|
||||
IPRanges is a list of IP Ranges that are permitted or excluded.
|
||||
This should be a valid CIDR notation.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
uriDomains:
|
||||
description: URIDomains is a list of URI domains that are permitted or excluded.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
otherNames:
|
||||
description: |-
|
||||
`otherNames` is an escape hatch for SAN that allows any type. We currently restrict the support to string like otherNames, cf RFC 5280 p 37
|
||||
Any UTF8 String valued otherName can be passed with by setting the keys oid: x.x.x.x and UTF8Value: somevalue for `otherName`.
|
||||
Most commonly this would be UPN set with oid: 1.3.6.1.4.1.311.20.2.3
|
||||
You should ensure that any OID passed is valid for the UTF8String type as we do not explicitly validate this.
|
||||
items:
|
||||
properties:
|
||||
oid:
|
||||
description: |-
|
||||
OID is the object identifier for the otherName SAN.
|
||||
The object identifier must be expressed as a dotted string, for
|
||||
example, "1.2.840.113556.1.4.221".
|
||||
type: string
|
||||
utf8Value:
|
||||
description: |-
|
||||
utf8Value is the string value of the otherName SAN.
|
||||
The utf8Value accepts any valid UTF8 string to set as value for the otherName SAN.
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
privateKey:
|
||||
description: |-
|
||||
Private key options. These include the key algorithm and size, the used
|
||||
encoding and the rotation policy.
|
||||
properties:
|
||||
algorithm:
|
||||
description: |-
|
||||
Algorithm is the private key algorithm of the corresponding private key
|
||||
for this certificate.
|
||||
|
||||
If provided, allowed values are either `RSA`, `ECDSA` or `Ed25519`.
|
||||
If `algorithm` is specified and `size` is not provided,
|
||||
key size of 2048 will be used for `RSA` key algorithm and
|
||||
key size of 256 will be used for `ECDSA` key algorithm.
|
||||
key size is ignored when using the `Ed25519` key algorithm.
|
||||
enum:
|
||||
- RSA
|
||||
- ECDSA
|
||||
- Ed25519
|
||||
type: string
|
||||
encoding:
|
||||
description: |-
|
||||
The private key cryptography standards (PKCS) encoding for this
|
||||
certificate's private key to be encoded in.
|
||||
|
||||
If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1
|
||||
and PKCS#8, respectively.
|
||||
Defaults to `PKCS1` if not specified.
|
||||
enum:
|
||||
- PKCS1
|
||||
- PKCS8
|
||||
type: string
|
||||
rotationPolicy:
|
||||
description: |-
|
||||
RotationPolicy controls how private keys should be regenerated when a
|
||||
re-issuance is being processed.
|
||||
|
||||
If set to `Never`, a private key will only be generated if one does not
|
||||
already exist in the target `spec.secretName`. If one does exist but it
|
||||
does not have the correct algorithm or size, a warning will be raised
|
||||
to await user intervention.
|
||||
If set to `Always`, a private key matching the specified requirements
|
||||
will be generated whenever a re-issuance occurs.
|
||||
Default is `Never` for backward compatibility.
|
||||
enum:
|
||||
- Never
|
||||
- Always
|
||||
type: string
|
||||
size:
|
||||
description: |-
|
||||
Size is the key bit size of the corresponding private key for this certificate.
|
||||
|
||||
If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`,
|
||||
and will default to `2048` if not specified.
|
||||
If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`,
|
||||
and will default to `256` if not specified.
|
||||
If `algorithm` is set to `Ed25519`, Size is ignored.
|
||||
No other values are allowed.
|
||||
type: integer
|
||||
type: object
|
||||
renewBefore:
|
||||
description: |-
|
||||
How long before the currently issued certificate's expiry cert-manager should
|
||||
renew the certificate. For example, if a certificate is valid for 60 minutes,
|
||||
and `renewBefore=10m`, cert-manager will begin to attempt to renew the certificate
|
||||
50 minutes after it was issued (i.e. when there are 10 minutes remaining until
|
||||
the certificate is no longer valid).
|
||||
|
||||
NOTE: The actual lifetime of the issued certificate is used to determine the
|
||||
renewal time. If an issuer returns a certificate with a different lifetime than
|
||||
the one requested, cert-manager will use the lifetime of the issued certificate.
|
||||
|
||||
If unset, this defaults to 1/3 of the issued certificate's lifetime.
|
||||
Minimum accepted value is 5 minutes.
|
||||
Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration.
|
||||
Cannot be set if the `renewBeforePercentage` field is set.
|
||||
type: string
|
||||
renewBeforePercentage:
|
||||
description: |-
|
||||
`renewBeforePercentage` is like `renewBefore`, except it is a relative percentage
|
||||
rather than an absolute duration. For example, if a certificate is valid for 60
|
||||
minutes, and `renewBeforePercentage=25`, cert-manager will begin to attempt to
|
||||
renew the certificate 45 minutes after it was issued (i.e. when there are 15
|
||||
minutes (25%) remaining until the certificate is no longer valid).
|
||||
|
||||
NOTE: The actual lifetime of the issued certificate is used to determine the
|
||||
renewal time. If an issuer returns a certificate with a different lifetime than
|
||||
the one requested, cert-manager will use the lifetime of the issued certificate.
|
||||
|
||||
Value must be an integer in the range (0,100). The minimum effective
|
||||
`renewBefore` derived from the `renewBeforePercentage` and `duration` fields is 5
|
||||
minutes.
|
||||
Cannot be set if the `renewBefore` field is set.
|
||||
format: int32
|
||||
type: integer
|
||||
revisionHistoryLimit:
|
||||
description: |-
|
||||
The maximum number of CertificateRequest revisions that are maintained in
|
||||
the Certificate's history. Each revision represents a single `CertificateRequest`
|
||||
created by this Certificate, either when it was created, renewed, or Spec
|
||||
was changed. Revisions will be removed by oldest first if the number of
|
||||
revisions exceeds this number.
|
||||
|
||||
If set, revisionHistoryLimit must be a value of `1` or greater.
|
||||
If unset (`nil`), revisions will not be garbage collected.
|
||||
Default value is `nil`.
|
||||
format: int32
|
||||
type: integer
|
||||
secretName:
|
||||
description: |-
|
||||
Name of the Secret resource that will be automatically created and
|
||||
managed by this Certificate resource. It will be populated with a
|
||||
private key and certificate, signed by the denoted issuer. The Secret
|
||||
resource lives in the same namespace as the Certificate resource.
|
||||
type: string
|
||||
secretTemplate:
|
||||
description: |-
|
||||
Defines annotations and labels to be copied to the Certificate's Secret.
|
||||
Labels and annotations on the Secret will be changed as they appear on the
|
||||
SecretTemplate when added or removed. SecretTemplate annotations are added
|
||||
in conjunction with, and cannot overwrite, the base set of annotations
|
||||
cert-manager sets on the Certificate's Secret.
|
||||
properties:
|
||||
annotations:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: Annotations is a key value map to be copied to the target Kubernetes Secret.
|
||||
type: object
|
||||
labels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: Labels is a key value map to be copied to the target Kubernetes Secret.
|
||||
type: object
|
||||
type: object
|
||||
subject:
|
||||
description: |-
|
||||
Requested set of X509 certificate subject attributes.
|
||||
More info: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
|
||||
|
||||
The common name attribute is specified separately in the `commonName` field.
|
||||
Cannot be set if the `literalSubject` field is set.
|
||||
properties:
|
||||
countries:
|
||||
description: Countries to be used on the Certificate.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
localities:
|
||||
description: Cities to be used on the Certificate.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
organizationalUnits:
|
||||
description: Organizational Units to be used on the Certificate.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
organizations:
|
||||
description: Organizations to be used on the Certificate.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
postalCodes:
|
||||
description: Postal codes to be used on the Certificate.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
provinces:
|
||||
description: State/Provinces to be used on the Certificate.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
serialNumber:
|
||||
description: Serial number to be used on the Certificate.
|
||||
type: string
|
||||
streetAddresses:
|
||||
description: Street addresses to be used on the Certificate.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
uris:
|
||||
description: Requested URI subject alternative names.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
usages:
|
||||
description: |-
|
||||
Requested key usages and extended key usages.
|
||||
These usages are used to set the `usages` field on the created CertificateRequest
|
||||
resources. If `encodeUsagesInRequest` is unset or set to `true`, the usages
|
||||
will additionally be encoded in the `request` field which contains the CSR blob.
|
||||
|
||||
If unset, defaults to `digital signature` and `key encipherment`.
|
||||
items:
|
||||
description: |-
|
||||
KeyUsage specifies valid usage contexts for keys.
|
||||
See:
|
||||
https://tools.ietf.org/html/rfc5280#section-4.2.1.3
|
||||
https://tools.ietf.org/html/rfc5280#section-4.2.1.12
|
||||
|
||||
Valid KeyUsage values are as follows:
|
||||
"signing",
|
||||
"digital signature",
|
||||
"content commitment",
|
||||
"key encipherment",
|
||||
"key agreement",
|
||||
"data encipherment",
|
||||
"cert sign",
|
||||
"crl sign",
|
||||
"encipher only",
|
||||
"decipher only",
|
||||
"any",
|
||||
"server auth",
|
||||
"client auth",
|
||||
"code signing",
|
||||
"email protection",
|
||||
"s/mime",
|
||||
"ipsec end system",
|
||||
"ipsec tunnel",
|
||||
"ipsec user",
|
||||
"timestamping",
|
||||
"ocsp signing",
|
||||
"microsoft sgc",
|
||||
"netscape sgc"
|
||||
enum:
|
||||
- signing
|
||||
- digital signature
|
||||
- content commitment
|
||||
- key encipherment
|
||||
- key agreement
|
||||
- data encipherment
|
||||
- cert sign
|
||||
- crl sign
|
||||
- encipher only
|
||||
- decipher only
|
||||
- any
|
||||
- server auth
|
||||
- client auth
|
||||
- code signing
|
||||
- email protection
|
||||
- s/mime
|
||||
- ipsec end system
|
||||
- ipsec tunnel
|
||||
- ipsec user
|
||||
- timestamping
|
||||
- ocsp signing
|
||||
- microsoft sgc
|
||||
- netscape sgc
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- issuerRef
|
||||
- secretName
|
||||
type: object
|
||||
status:
|
||||
description: |-
|
||||
Status of the Certificate.
|
||||
This is set and managed automatically.
|
||||
Read-only.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
conditions:
|
||||
description: |-
|
||||
List of status conditions to indicate the status of certificates.
|
||||
Known condition types are `Ready` and `Issuing`.
|
||||
items:
|
||||
description: CertificateCondition contains condition information for a Certificate.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: |-
|
||||
LastTransitionTime is the timestamp corresponding to the last status
|
||||
change of this condition.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: |-
|
||||
Message is a human readable description of the details of the last
|
||||
transition, complementing reason.
|
||||
type: string
|
||||
observedGeneration:
|
||||
description: |-
|
||||
If set, this represents the .metadata.generation that the condition was
|
||||
set based upon.
|
||||
For instance, if .metadata.generation is currently 12, but the
|
||||
.status.condition[x].observedGeneration is 9, the condition is out of date
|
||||
with respect to the current state of the Certificate.
|
||||
format: int64
|
||||
type: integer
|
||||
reason:
|
||||
description: |-
|
||||
Reason is a brief machine readable explanation for the condition's last
|
||||
transition.
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of (`True`, `False`, `Unknown`).
|
||||
enum:
|
||||
- "True"
|
||||
- "False"
|
||||
- Unknown
|
||||
type: string
|
||||
type:
|
||||
description: Type of the condition, known values are (`Ready`, `Issuing`).
|
||||
type: string
|
||||
required:
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
failedIssuanceAttempts:
|
||||
description: |-
|
||||
The number of continuous failed issuance attempts up till now. This
|
||||
field gets removed (if set) on a successful issuance and gets set to
|
||||
1 if unset and an issuance has failed. If an issuance has failed, the
|
||||
delay till the next issuance will be calculated using formula
|
||||
time.Hour * 2 ^ (failedIssuanceAttempts - 1).
|
||||
type: integer
|
||||
lastFailureTime:
|
||||
description: |-
|
||||
LastFailureTime is set only if the latest issuance for this
|
||||
Certificate failed and contains the time of the failure. If an
|
||||
issuance has failed, the delay till the next issuance will be
|
||||
calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts -
|
||||
1). If the latest issuance has succeeded this field will be unset.
|
||||
format: date-time
|
||||
type: string
|
||||
nextPrivateKeySecretName:
|
||||
description: |-
|
||||
The name of the Secret resource containing the private key to be used
|
||||
for the next certificate iteration.
|
||||
The keymanager controller will automatically set this field if the
|
||||
`Issuing` condition is set to `True`.
|
||||
It will automatically unset this field when the Issuing condition is
|
||||
not set or False.
|
||||
type: string
|
||||
notAfter:
|
||||
description: |-
|
||||
The expiration time of the certificate stored in the secret named
|
||||
by this resource in `spec.secretName`.
|
||||
format: date-time
|
||||
type: string
|
||||
notBefore:
|
||||
description: |-
|
||||
The time after which the certificate stored in the secret named
|
||||
by this resource in `spec.secretName` is valid.
|
||||
format: date-time
|
||||
type: string
|
||||
renewalTime:
|
||||
description: |-
|
||||
RenewalTime is the time at which the certificate will be next
|
||||
renewed.
|
||||
If not set, no upcoming renewal is scheduled.
|
||||
format: date-time
|
||||
type: string
|
||||
revision:
|
||||
description: |-
|
||||
The current 'revision' of the certificate as issued.
|
||||
|
||||
When a CertificateRequest resource is created, it will have the
|
||||
`cert-manager.io/certificate-revision` set to one greater than the
|
||||
current value of this field.
|
||||
|
||||
Upon issuance, this field will be set to the value of the annotation
|
||||
on the CertificateRequest resource used to issue the certificate.
|
||||
|
||||
Persisting the value on the CertificateRequest resource allows the
|
||||
certificates controller to know whether a request is part of an old
|
||||
issuance or if it is part of the ongoing revision's issuance by
|
||||
checking if the revision value in the annotation is greater than this
|
||||
field.
|
||||
type: integer
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,265 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
helm.sh/resource-policy: keep
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: crds
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: orders.acme.cert-manager.io
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
group: acme.cert-manager.io
|
||||
names:
|
||||
categories:
|
||||
- cert-manager
|
||||
- cert-manager-acme
|
||||
kind: Order
|
||||
listKind: OrderList
|
||||
plural: orders
|
||||
singular: order
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.state
|
||||
name: State
|
||||
type: string
|
||||
- jsonPath: .spec.issuerRef.name
|
||||
name: Issuer
|
||||
priority: 1
|
||||
type: string
|
||||
- jsonPath: .status.reason
|
||||
name: Reason
|
||||
priority: 1
|
||||
type: string
|
||||
- description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
|
||||
jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Order is a type to represent an Order with an ACME server
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
commonName:
|
||||
description: |-
|
||||
CommonName is the common name as specified on the DER encoded CSR.
|
||||
If specified, this value must also be present in `dnsNames` or `ipAddresses`.
|
||||
This field must match the corresponding field on the DER encoded CSR.
|
||||
type: string
|
||||
dnsNames:
|
||||
description: |-
|
||||
DNSNames is a list of DNS names that should be included as part of the Order
|
||||
validation process.
|
||||
This field must match the corresponding field on the DER encoded CSR.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
duration:
|
||||
description: |-
|
||||
Duration is the duration for the not after date for the requested certificate.
|
||||
this is set on order creation as pe the ACME spec.
|
||||
type: string
|
||||
ipAddresses:
|
||||
description: |-
|
||||
IPAddresses is a list of IP addresses that should be included as part of the Order
|
||||
validation process.
|
||||
This field must match the corresponding field on the DER encoded CSR.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
issuerRef:
|
||||
description: |-
|
||||
IssuerRef references a properly configured ACME-type Issuer which should
|
||||
be used to create this Order.
|
||||
If the Issuer does not exist, processing will be retried.
|
||||
If the Issuer is not an 'ACME' Issuer, an error will be returned and the
|
||||
Order will be marked as failed.
|
||||
properties:
|
||||
group:
|
||||
description: Group of the resource being referred to.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the resource being referred to.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the resource being referred to.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
request:
|
||||
description: |-
|
||||
Certificate signing request bytes in DER encoding.
|
||||
This will be used when finalizing the order.
|
||||
This field must be set on the order.
|
||||
format: byte
|
||||
type: string
|
||||
required:
|
||||
- issuerRef
|
||||
- request
|
||||
type: object
|
||||
status:
|
||||
properties:
|
||||
authorizations:
|
||||
description: |-
|
||||
Authorizations contains data returned from the ACME server on what
|
||||
authorizations must be completed in order to validate the DNS names
|
||||
specified on the Order.
|
||||
items:
|
||||
description: |-
|
||||
ACMEAuthorization contains data returned from the ACME server on an
|
||||
authorization that must be completed in order validate a DNS name on an ACME
|
||||
Order resource.
|
||||
properties:
|
||||
challenges:
|
||||
description: |-
|
||||
Challenges specifies the challenge types offered by the ACME server.
|
||||
One of these challenge types will be selected when validating the DNS
|
||||
name and an appropriate Challenge resource will be created to perform
|
||||
the ACME challenge process.
|
||||
items:
|
||||
description: |-
|
||||
Challenge specifies a challenge offered by the ACME server for an Order.
|
||||
An appropriate Challenge resource can be created to perform the ACME
|
||||
challenge process.
|
||||
properties:
|
||||
token:
|
||||
description: |-
|
||||
Token is the token that must be presented for this challenge.
|
||||
This is used to compute the 'key' that must also be presented.
|
||||
type: string
|
||||
type:
|
||||
description: |-
|
||||
Type is the type of challenge being offered, e.g. 'http-01', 'dns-01',
|
||||
'tls-sni-01', etc.
|
||||
This is the raw value retrieved from the ACME server.
|
||||
Only 'http-01' and 'dns-01' are supported by cert-manager, other values
|
||||
will be ignored.
|
||||
type: string
|
||||
url:
|
||||
description: |-
|
||||
URL is the URL of this challenge. It can be used to retrieve additional
|
||||
metadata about the Challenge from the ACME server.
|
||||
type: string
|
||||
required:
|
||||
- token
|
||||
- type
|
||||
- url
|
||||
type: object
|
||||
type: array
|
||||
identifier:
|
||||
description: Identifier is the DNS name to be validated as part of this authorization
|
||||
type: string
|
||||
initialState:
|
||||
description: |-
|
||||
InitialState is the initial state of the ACME authorization when first
|
||||
fetched from the ACME server.
|
||||
If an Authorization is already 'valid', the Order controller will not
|
||||
create a Challenge resource for the authorization. This will occur when
|
||||
working with an ACME server that enables 'authz reuse' (such as Let's
|
||||
Encrypt's production endpoint).
|
||||
If not set and 'identifier' is set, the state is assumed to be pending
|
||||
and a Challenge will be created.
|
||||
enum:
|
||||
- valid
|
||||
- ready
|
||||
- pending
|
||||
- processing
|
||||
- invalid
|
||||
- expired
|
||||
- errored
|
||||
type: string
|
||||
url:
|
||||
description: URL is the URL of the Authorization that must be completed
|
||||
type: string
|
||||
wildcard:
|
||||
description: |-
|
||||
Wildcard will be true if this authorization is for a wildcard DNS name.
|
||||
If this is true, the identifier will be the *non-wildcard* version of
|
||||
the DNS name.
|
||||
For example, if '*.example.com' is the DNS name being validated, this
|
||||
field will be 'true' and the 'identifier' field will be 'example.com'.
|
||||
type: boolean
|
||||
required:
|
||||
- url
|
||||
type: object
|
||||
type: array
|
||||
certificate:
|
||||
description: |-
|
||||
Certificate is a copy of the PEM encoded certificate for this Order.
|
||||
This field will be populated after the order has been successfully
|
||||
finalized with the ACME server, and the order has transitioned to the
|
||||
'valid' state.
|
||||
format: byte
|
||||
type: string
|
||||
failureTime:
|
||||
description: |-
|
||||
FailureTime stores the time that this order failed.
|
||||
This is used to influence garbage collection and back-off.
|
||||
format: date-time
|
||||
type: string
|
||||
finalizeURL:
|
||||
description: |-
|
||||
FinalizeURL of the Order.
|
||||
This is used to obtain certificates for this order once it has been completed.
|
||||
type: string
|
||||
reason:
|
||||
description: |-
|
||||
Reason optionally provides more information about a why the order is in
|
||||
the current state.
|
||||
type: string
|
||||
state:
|
||||
description: |-
|
||||
State contains the current state of this Order resource.
|
||||
States 'success' and 'expired' are 'final'
|
||||
enum:
|
||||
- valid
|
||||
- ready
|
||||
- pending
|
||||
- processing
|
||||
- invalid
|
||||
- expired
|
||||
- errored
|
||||
type: string
|
||||
url:
|
||||
description: |-
|
||||
URL of the Order.
|
||||
This will initially be empty when the resource is first created.
|
||||
The Order controller will populate this field when the Order is first processed.
|
||||
This field will be immutable after it is initially set.
|
||||
type: string
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cainjector
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cainjector
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-cainjector
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/name: cainjector
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
prometheus.io/path: /metrics
|
||||
prometheus.io/port: "9402"
|
||||
prometheus.io/scrape: "true"
|
||||
labels:
|
||||
app: cainjector
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cainjector
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- --v=2
|
||||
- --leader-election-namespace=cert-manager
|
||||
env:
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: quay.io/jetstack/cert-manager-cainjector:v1.17.2
|
||||
imagePullPolicy: IfNotPresent
|
||||
name: cert-manager-cainjector
|
||||
ports:
|
||||
- containerPort: 9402
|
||||
name: http-metrics
|
||||
protocol: TCP
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
enableServiceLinks: false
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
serviceAccountName: cert-manager-cainjector
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/name: webhook
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
prometheus.io/path: /metrics
|
||||
prometheus.io/port: "9402"
|
||||
prometheus.io/scrape: "true"
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- --v=2
|
||||
- --secure-port=10250
|
||||
- --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE)
|
||||
- --dynamic-serving-ca-secret-name=cert-manager-webhook-ca
|
||||
- --dynamic-serving-dns-names=cert-manager-webhook
|
||||
- --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE)
|
||||
- --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE).svc
|
||||
env:
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: quay.io/jetstack/cert-manager-webhook:v1.17.2
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
failureThreshold: 3
|
||||
httpGet:
|
||||
path: /livez
|
||||
port: 6080
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 1
|
||||
name: cert-manager-webhook
|
||||
ports:
|
||||
- containerPort: 10250
|
||||
name: https
|
||||
protocol: TCP
|
||||
- containerPort: 6080
|
||||
name: healthcheck
|
||||
protocol: TCP
|
||||
- containerPort: 9402
|
||||
name: http-metrics
|
||||
protocol: TCP
|
||||
readinessProbe:
|
||||
failureThreshold: 3
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: 6080
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 5
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 1
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
enableServiceLinks: false
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
serviceAccountName: cert-manager-webhook
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/name: cert-manager
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
prometheus.io/path: /metrics
|
||||
prometheus.io/port: "9402"
|
||||
prometheus.io/scrape: "true"
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- --v=2
|
||||
- --cluster-resource-namespace=$(POD_NAMESPACE)
|
||||
- --leader-election-namespace=cert-manager
|
||||
- --acme-http01-solver-image=quay.io/jetstack/cert-manager-acmesolver:v1.17.2
|
||||
- --max-concurrent-challenges=60
|
||||
env:
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: quay.io/jetstack/cert-manager-controller:v1.17.2
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
failureThreshold: 8
|
||||
httpGet:
|
||||
path: /livez
|
||||
port: http-healthz
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 15
|
||||
name: cert-manager-controller
|
||||
ports:
|
||||
- containerPort: 9402
|
||||
name: http-metrics
|
||||
protocol: TCP
|
||||
- containerPort: 9403
|
||||
name: http-healthz
|
||||
protocol: TCP
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
enableServiceLinks: false
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
serviceAccountName: cert-manager
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
helm.sh/hook: post-install
|
||||
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||
helm.sh/hook-weight: "1"
|
||||
labels:
|
||||
app: startupapicheck
|
||||
app.kubernetes.io/component: startupapicheck
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: startupapicheck
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-startupapicheck
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
backoffLimit: 4
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: startupapicheck
|
||||
app.kubernetes.io/component: startupapicheck
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: startupapicheck
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- check
|
||||
- api
|
||||
- --wait=1m
|
||||
- -v
|
||||
env:
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: quay.io/jetstack/cert-manager-startupapicheck:v1.17.2
|
||||
imagePullPolicy: IfNotPresent
|
||||
name: cert-manager-startupapicheck
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
enableServiceLinks: false
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
restartPolicy: OnFailure
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
serviceAccountName: cert-manager-startupapicheck
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
argocd.argoproj.io/sync-options: Replace=true
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
name: mkcert-ca-precheck
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
if ! kubectl get secret mkcert-ca -n "${NAMESPACE}" >/dev/null 2>&1; then
|
||||
echo "ERROR: External secret mkcert-ca must be created in ${NAMESPACE} before deploying cert-manager."
|
||||
echo "Run: mkcert -install && kubectl -n ${NAMESPACE} create secret tls mkcert-ca --cert=\"\$(mkcert -CAROOT)/rootCA.pem\" --key=\"\$(mkcert -CAROOT)/rootCA-key.pem\""
|
||||
exit 1
|
||||
fi
|
||||
echo "OK: mkcert-ca exists"
|
||||
env:
|
||||
- name: NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: alpine/k8s:1.32.3
|
||||
name: precheck
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
restartPolicy: OnFailure
|
||||
securityContext:
|
||||
runAsGroup: 65532
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65532
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
serviceAccountName: mkcert-ca-precheck
|
||||
ttlSecondsAfterFinished: 300
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
apiVersion: admissionregistration.k8s.io/v1
|
||||
kind: MutatingWebhookConfiguration
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
cert-manager.io/inject-ca-from-secret: cert-manager/cert-manager-webhook-ca
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
webhooks:
|
||||
- admissionReviewVersions:
|
||||
- v1
|
||||
clientConfig:
|
||||
service:
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
path: /mutate
|
||||
failurePolicy: Fail
|
||||
matchPolicy: Equivalent
|
||||
name: webhook.cert-manager.io
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
apiVersions:
|
||||
- v1
|
||||
operations:
|
||||
- CREATE
|
||||
resources:
|
||||
- certificaterequests
|
||||
sideEffects: None
|
||||
timeoutSeconds: 30
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
pod-security.kubernetes.io/enforce: restricted
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cainjector
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cainjector
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-cainjector:leaderelection
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- coordination.k8s.io
|
||||
resourceNames:
|
||||
- cert-manager-cainjector-leader-election
|
||||
- cert-manager-cainjector-leader-election-core
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- get
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- coordination.k8s.io
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- create
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
helm.sh/hook: post-install
|
||||
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||
helm.sh/hook-weight: "-5"
|
||||
labels:
|
||||
app: startupapicheck
|
||||
app.kubernetes.io/component: startupapicheck
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: startupapicheck
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-startupapicheck:create-cert
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
resources:
|
||||
- certificaterequests
|
||||
verbs:
|
||||
- create
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-tokenrequest
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resourceNames:
|
||||
- cert-manager
|
||||
resources:
|
||||
- serviceaccounts/token
|
||||
verbs:
|
||||
- create
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook:dynamic-serving
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resourceNames:
|
||||
- cert-manager-webhook-ca
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- create
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager:leaderelection
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- coordination.k8s.io
|
||||
resourceNames:
|
||||
- cert-manager-controller
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- get
|
||||
- update
|
||||
- patch
|
||||
- apiGroups:
|
||||
- coordination.k8s.io
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- create
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
name: mkcert-ca-precheck
|
||||
namespace: cert-manager
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cainjector
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cainjector
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-cainjector:leaderelection
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: cert-manager-cainjector:leaderelection
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager-cainjector
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-cert-manager-tokenrequest
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: cert-manager-tokenrequest
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
helm.sh/hook: post-install
|
||||
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||
helm.sh/hook-weight: "-5"
|
||||
labels:
|
||||
app: startupapicheck
|
||||
app.kubernetes.io/component: startupapicheck
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: startupapicheck
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-startupapicheck:create-cert
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: cert-manager-startupapicheck:create-cert
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager-startupapicheck
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook:dynamic-serving
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: cert-manager-webhook:dynamic-serving
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager:leaderelection
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: cert-manager:leaderelection
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
name: mkcert-ca-precheck
|
||||
namespace: cert-manager
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: mkcert-ca-precheck
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: mkcert-ca-precheck
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cainjector
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cainjector
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-cainjector
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
ports:
|
||||
- name: http-metrics
|
||||
port: 9402
|
||||
protocol: TCP
|
||||
selector:
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/name: cainjector
|
||||
type: ClusterIP
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
ports:
|
||||
- name: https
|
||||
port: 443
|
||||
protocol: TCP
|
||||
targetPort: https
|
||||
- name: metrics
|
||||
port: 9402
|
||||
protocol: TCP
|
||||
targetPort: http-metrics
|
||||
selector:
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/name: webhook
|
||||
type: ClusterIP
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
ports:
|
||||
- name: tcp-prometheus-servicemonitor
|
||||
port: 9402
|
||||
protocol: TCP
|
||||
targetPort: 9402
|
||||
selector:
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/name: cert-manager
|
||||
type: ClusterIP
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
apiVersion: v1
|
||||
automountServiceAccountToken: true
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cainjector
|
||||
app.kubernetes.io/component: cainjector
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cainjector
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-cainjector
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
apiVersion: v1
|
||||
automountServiceAccountToken: true
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
helm.sh/hook: post-install
|
||||
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||
helm.sh/hook-weight: "-5"
|
||||
labels:
|
||||
app: startupapicheck
|
||||
app.kubernetes.io/component: startupapicheck
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: startupapicheck
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-startupapicheck
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
apiVersion: v1
|
||||
automountServiceAccountToken: true
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
apiVersion: v1
|
||||
automountServiceAccountToken: true
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app: cert-manager
|
||||
app.kubernetes.io/component: controller
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cert-manager
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
name: mkcert-ca-precheck
|
||||
namespace: cert-manager
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
apiVersion: admissionregistration.k8s.io/v1
|
||||
kind: ValidatingWebhookConfiguration
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
cert-manager.io/inject-ca-from-secret: cert-manager/cert-manager-webhook-ca
|
||||
labels:
|
||||
app: webhook
|
||||
app.kubernetes.io/component: webhook
|
||||
app.kubernetes.io/instance: cert-manager
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: webhook
|
||||
app.kubernetes.io/version: v1.17.2
|
||||
helm.sh/chart: cert-manager-v1.17.2
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
webhooks:
|
||||
- admissionReviewVersions:
|
||||
- v1
|
||||
clientConfig:
|
||||
service:
|
||||
name: cert-manager-webhook
|
||||
namespace: cert-manager
|
||||
path: /validate
|
||||
failurePolicy: Fail
|
||||
matchPolicy: Equivalent
|
||||
name: webhook.cert-manager.io
|
||||
namespaceSelector:
|
||||
matchExpressions:
|
||||
- key: cert-manager.io/disable-validation
|
||||
operator: NotIn
|
||||
values:
|
||||
- "true"
|
||||
rules:
|
||||
- apiGroups:
|
||||
- cert-manager.io
|
||||
- acme.cert-manager.io
|
||||
apiVersions:
|
||||
- v1
|
||||
operations:
|
||||
- CREATE
|
||||
- UPDATE
|
||||
resources:
|
||||
- '*/*'
|
||||
sideEffects: None
|
||||
timeoutSeconds: 30
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app.kubernetes.io/instance: cloudnative-pg
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cloudnative-pg
|
||||
app.kubernetes.io/version: 1.25.0
|
||||
helm.sh/chart: cloudnative-pg-0.23.0
|
||||
name: cloudnative-pg-edit
|
||||
namespace: cnpg-system
|
||||
rules:
|
||||
- apiGroups:
|
||||
- postgresql.cnpg.io
|
||||
resources:
|
||||
- backups
|
||||
- clusters
|
||||
- databases
|
||||
- poolers
|
||||
- publications
|
||||
- scheduledbackups
|
||||
- subscriptions
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- deletecollection
|
||||
- patch
|
||||
- update
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app.kubernetes.io/instance: cloudnative-pg
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cloudnative-pg
|
||||
app.kubernetes.io/version: 1.25.0
|
||||
helm.sh/chart: cloudnative-pg-0.23.0
|
||||
name: cloudnative-pg-view
|
||||
namespace: cnpg-system
|
||||
rules:
|
||||
- apiGroups:
|
||||
- postgresql.cnpg.io
|
||||
resources:
|
||||
- backups
|
||||
- clusters
|
||||
- databases
|
||||
- poolers
|
||||
- publications
|
||||
- scheduledbackups
|
||||
- subscriptions
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
|
|
@ -0,0 +1,229 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app.kubernetes.io/instance: cloudnative-pg
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cloudnative-pg
|
||||
app.kubernetes.io/version: 1.25.0
|
||||
helm.sh/chart: cloudnative-pg-0.23.0
|
||||
name: cloudnative-pg
|
||||
namespace: cnpg-system
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- admissionregistration.k8s.io
|
||||
resources:
|
||||
- mutatingwebhookconfigurations
|
||||
- validatingwebhookconfigurations
|
||||
verbs:
|
||||
- get
|
||||
- patch
|
||||
- apiGroups:
|
||||
- postgresql.cnpg.io
|
||||
resources:
|
||||
- clusterimagecatalogs
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- configmaps
|
||||
- secrets
|
||||
- services
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- configmaps/status
|
||||
- secrets/status
|
||||
verbs:
|
||||
- get
|
||||
- patch
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- persistentvolumeclaims
|
||||
- pods
|
||||
- pods/exec
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods/status
|
||||
verbs:
|
||||
- get
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- serviceaccounts
|
||||
verbs:
|
||||
- create
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- deployments
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- batch
|
||||
resources:
|
||||
- jobs
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- watch
|
||||
- apiGroups:
|
||||
- coordination.k8s.io
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- create
|
||||
- get
|
||||
- update
|
||||
- apiGroups:
|
||||
- monitoring.coreos.com
|
||||
resources:
|
||||
- podmonitors
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- watch
|
||||
- apiGroups:
|
||||
- policy
|
||||
resources:
|
||||
- poddisruptionbudgets
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- postgresql.cnpg.io
|
||||
resources:
|
||||
- backups
|
||||
- clusters
|
||||
- databases
|
||||
- poolers
|
||||
- publications
|
||||
- scheduledbackups
|
||||
- subscriptions
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- postgresql.cnpg.io
|
||||
resources:
|
||||
- backups/status
|
||||
- databases/status
|
||||
- publications/status
|
||||
- scheduledbackups/status
|
||||
- subscriptions/status
|
||||
verbs:
|
||||
- get
|
||||
- patch
|
||||
- update
|
||||
- apiGroups:
|
||||
- postgresql.cnpg.io
|
||||
resources:
|
||||
- imagecatalogs
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- postgresql.cnpg.io
|
||||
resources:
|
||||
- clusters/finalizers
|
||||
- poolers/finalizers
|
||||
verbs:
|
||||
- update
|
||||
- apiGroups:
|
||||
- postgresql.cnpg.io
|
||||
resources:
|
||||
- clusters/status
|
||||
- poolers/status
|
||||
verbs:
|
||||
- get
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- rbac.authorization.k8s.io
|
||||
resources:
|
||||
- rolebindings
|
||||
- roles
|
||||
verbs:
|
||||
- create
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- snapshot.storage.k8s.io
|
||||
resources:
|
||||
- volumesnapshots
|
||||
verbs:
|
||||
- create
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- watch
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app.kubernetes.io/instance: cloudnative-pg
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cloudnative-pg
|
||||
app.kubernetes.io/version: 1.25.0
|
||||
helm.sh/chart: cloudnative-pg-0.23.0
|
||||
name: cloudnative-pg
|
||||
namespace: cnpg-system
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cloudnative-pg
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: cloudnative-pg
|
||||
namespace: cnpg-system
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: v1
|
||||
data: {}
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app.kubernetes.io/instance: cloudnative-pg
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cloudnative-pg
|
||||
app.kubernetes.io/version: 1.25.0
|
||||
helm.sh/chart: cloudnative-pg-0.23.0
|
||||
name: cnpg-controller-manager-config
|
||||
namespace: cnpg-system
|
||||
|
|
@ -0,0 +1,463 @@
|
|||
apiVersion: v1
|
||||
data:
|
||||
queries: |
|
||||
backends:
|
||||
query: |
|
||||
SELECT sa.datname
|
||||
, sa.usename
|
||||
, sa.application_name
|
||||
, states.state
|
||||
, COALESCE(sa.count, 0) AS total
|
||||
, COALESCE(sa.max_tx_secs, 0) AS max_tx_duration_seconds
|
||||
FROM ( VALUES ('active')
|
||||
, ('idle')
|
||||
, ('idle in transaction')
|
||||
, ('idle in transaction (aborted)')
|
||||
, ('fastpath function call')
|
||||
, ('disabled')
|
||||
) AS states(state)
|
||||
LEFT JOIN (
|
||||
SELECT datname
|
||||
, state
|
||||
, usename
|
||||
, COALESCE(application_name, '') AS application_name
|
||||
, COUNT(*)
|
||||
, COALESCE(EXTRACT (EPOCH FROM (max(now() - xact_start))), 0) AS max_tx_secs
|
||||
FROM pg_catalog.pg_stat_activity
|
||||
GROUP BY datname, state, usename, application_name
|
||||
) sa ON states.state = sa.state
|
||||
WHERE sa.usename IS NOT NULL
|
||||
metrics:
|
||||
- datname:
|
||||
usage: "LABEL"
|
||||
description: "Name of the database"
|
||||
- usename:
|
||||
usage: "LABEL"
|
||||
description: "Name of the user"
|
||||
- application_name:
|
||||
usage: "LABEL"
|
||||
description: "Name of the application"
|
||||
- state:
|
||||
usage: "LABEL"
|
||||
description: "State of the backend"
|
||||
- total:
|
||||
usage: "GAUGE"
|
||||
description: "Number of backends"
|
||||
- max_tx_duration_seconds:
|
||||
usage: "GAUGE"
|
||||
description: "Maximum duration of a transaction in seconds"
|
||||
|
||||
backends_waiting:
|
||||
query: |
|
||||
SELECT count(*) AS total
|
||||
FROM pg_catalog.pg_locks blocked_locks
|
||||
JOIN pg_catalog.pg_locks blocking_locks
|
||||
ON blocking_locks.locktype = blocked_locks.locktype
|
||||
AND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.database
|
||||
AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation
|
||||
AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page
|
||||
AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple
|
||||
AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid
|
||||
AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid
|
||||
AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid
|
||||
AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid
|
||||
AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid
|
||||
AND blocking_locks.pid != blocked_locks.pid
|
||||
JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
|
||||
WHERE NOT blocked_locks.granted
|
||||
metrics:
|
||||
- total:
|
||||
usage: "GAUGE"
|
||||
description: "Total number of backends that are currently waiting on other queries"
|
||||
|
||||
pg_database:
|
||||
query: |
|
||||
SELECT datname
|
||||
, pg_catalog.pg_database_size(datname) AS size_bytes
|
||||
, pg_catalog.age(datfrozenxid) AS xid_age
|
||||
, pg_catalog.mxid_age(datminmxid) AS mxid_age
|
||||
FROM pg_catalog.pg_database
|
||||
WHERE datallowconn
|
||||
metrics:
|
||||
- datname:
|
||||
usage: "LABEL"
|
||||
description: "Name of the database"
|
||||
- size_bytes:
|
||||
usage: "GAUGE"
|
||||
description: "Disk space used by the database"
|
||||
- xid_age:
|
||||
usage: "GAUGE"
|
||||
description: "Number of transactions from the frozen XID to the current one"
|
||||
- mxid_age:
|
||||
usage: "GAUGE"
|
||||
description: "Number of multiple transactions (Multixact) from the frozen XID to the current one"
|
||||
|
||||
pg_postmaster:
|
||||
query: |
|
||||
SELECT EXTRACT(EPOCH FROM pg_postmaster_start_time) AS start_time
|
||||
FROM pg_catalog.pg_postmaster_start_time()
|
||||
metrics:
|
||||
- start_time:
|
||||
usage: "GAUGE"
|
||||
description: "Time at which postgres started (based on epoch)"
|
||||
|
||||
pg_replication:
|
||||
query: "SELECT CASE WHEN (
|
||||
NOT pg_catalog.pg_is_in_recovery()
|
||||
OR pg_catalog.pg_last_wal_receive_lsn() = pg_catalog.pg_last_wal_replay_lsn())
|
||||
THEN 0
|
||||
ELSE GREATEST (0,
|
||||
EXTRACT(EPOCH FROM (now() - pg_catalog.pg_last_xact_replay_timestamp())))
|
||||
END AS lag,
|
||||
pg_catalog.pg_is_in_recovery() AS in_recovery,
|
||||
EXISTS (TABLE pg_stat_wal_receiver) AS is_wal_receiver_up,
|
||||
(SELECT count(*) FROM pg_catalog.pg_stat_replication) AS streaming_replicas"
|
||||
metrics:
|
||||
- lag:
|
||||
usage: "GAUGE"
|
||||
description: "Replication lag behind primary in seconds"
|
||||
- in_recovery:
|
||||
usage: "GAUGE"
|
||||
description: "Whether the instance is in recovery"
|
||||
- is_wal_receiver_up:
|
||||
usage: "GAUGE"
|
||||
description: "Whether the instance wal_receiver is up"
|
||||
- streaming_replicas:
|
||||
usage: "GAUGE"
|
||||
description: "Number of streaming replicas connected to the instance"
|
||||
|
||||
pg_replication_slots:
|
||||
query: |
|
||||
SELECT slot_name,
|
||||
slot_type,
|
||||
database,
|
||||
active,
|
||||
(CASE pg_catalog.pg_is_in_recovery()
|
||||
WHEN TRUE THEN pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_last_wal_receive_lsn(), restart_lsn)
|
||||
ELSE pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), restart_lsn)
|
||||
END) as pg_wal_lsn_diff
|
||||
FROM pg_catalog.pg_replication_slots
|
||||
WHERE NOT temporary
|
||||
metrics:
|
||||
- slot_name:
|
||||
usage: "LABEL"
|
||||
description: "Name of the replication slot"
|
||||
- slot_type:
|
||||
usage: "LABEL"
|
||||
description: "Type of the replication slot"
|
||||
- database:
|
||||
usage: "LABEL"
|
||||
description: "Name of the database"
|
||||
- active:
|
||||
usage: "GAUGE"
|
||||
description: "Flag indicating whether the slot is active"
|
||||
- pg_wal_lsn_diff:
|
||||
usage: "GAUGE"
|
||||
description: "Replication lag in bytes"
|
||||
|
||||
pg_stat_archiver:
|
||||
query: |
|
||||
SELECT archived_count
|
||||
, failed_count
|
||||
, COALESCE(EXTRACT(EPOCH FROM (now() - last_archived_time)), -1) AS seconds_since_last_archival
|
||||
, COALESCE(EXTRACT(EPOCH FROM (now() - last_failed_time)), -1) AS seconds_since_last_failure
|
||||
, COALESCE(EXTRACT(EPOCH FROM last_archived_time), -1) AS last_archived_time
|
||||
, COALESCE(EXTRACT(EPOCH FROM last_failed_time), -1) AS last_failed_time
|
||||
, COALESCE(CAST(CAST('x'||pg_catalog.right(pg_catalog.split_part(last_archived_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_archived_wal_start_lsn
|
||||
, COALESCE(CAST(CAST('x'||pg_catalog.right(pg_catalog.split_part(last_failed_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_failed_wal_start_lsn
|
||||
, EXTRACT(EPOCH FROM stats_reset) AS stats_reset_time
|
||||
FROM pg_catalog.pg_stat_archiver
|
||||
metrics:
|
||||
- archived_count:
|
||||
usage: "COUNTER"
|
||||
description: "Number of WAL files that have been successfully archived"
|
||||
- failed_count:
|
||||
usage: "COUNTER"
|
||||
description: "Number of failed attempts for archiving WAL files"
|
||||
- seconds_since_last_archival:
|
||||
usage: "GAUGE"
|
||||
description: "Seconds since the last successful archival operation"
|
||||
- seconds_since_last_failure:
|
||||
usage: "GAUGE"
|
||||
description: "Seconds since the last failed archival operation"
|
||||
- last_archived_time:
|
||||
usage: "GAUGE"
|
||||
description: "Epoch of the last time WAL archiving succeeded"
|
||||
- last_failed_time:
|
||||
usage: "GAUGE"
|
||||
description: "Epoch of the last time WAL archiving failed"
|
||||
- last_archived_wal_start_lsn:
|
||||
usage: "GAUGE"
|
||||
description: "Archived WAL start LSN"
|
||||
- last_failed_wal_start_lsn:
|
||||
usage: "GAUGE"
|
||||
description: "Last failed WAL LSN"
|
||||
- stats_reset_time:
|
||||
usage: "GAUGE"
|
||||
description: "Time at which these statistics were last reset"
|
||||
|
||||
pg_stat_bgwriter:
|
||||
runonserver: "<17.0.0"
|
||||
query: |
|
||||
SELECT checkpoints_timed
|
||||
, checkpoints_req
|
||||
, checkpoint_write_time
|
||||
, checkpoint_sync_time
|
||||
, buffers_checkpoint
|
||||
, buffers_clean
|
||||
, maxwritten_clean
|
||||
, buffers_backend
|
||||
, buffers_backend_fsync
|
||||
, buffers_alloc
|
||||
FROM pg_catalog.pg_stat_bgwriter
|
||||
metrics:
|
||||
- checkpoints_timed:
|
||||
usage: "COUNTER"
|
||||
description: "Number of scheduled checkpoints that have been performed"
|
||||
- checkpoints_req:
|
||||
usage: "COUNTER"
|
||||
description: "Number of requested checkpoints that have been performed"
|
||||
- checkpoint_write_time:
|
||||
usage: "COUNTER"
|
||||
description: "Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk, in milliseconds"
|
||||
- checkpoint_sync_time:
|
||||
usage: "COUNTER"
|
||||
description: "Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk, in milliseconds"
|
||||
- buffers_checkpoint:
|
||||
usage: "COUNTER"
|
||||
description: "Number of buffers written during checkpoints"
|
||||
- buffers_clean:
|
||||
usage: "COUNTER"
|
||||
description: "Number of buffers written by the background writer"
|
||||
- maxwritten_clean:
|
||||
usage: "COUNTER"
|
||||
description: "Number of times the background writer stopped a cleaning scan because it had written too many buffers"
|
||||
- buffers_backend:
|
||||
usage: "COUNTER"
|
||||
description: "Number of buffers written directly by a backend"
|
||||
- buffers_backend_fsync:
|
||||
usage: "COUNTER"
|
||||
description: "Number of times a backend had to execute its own fsync call (normally the background writer handles those even when the backend does its own write)"
|
||||
- buffers_alloc:
|
||||
usage: "COUNTER"
|
||||
description: "Number of buffers allocated"
|
||||
|
||||
pg_stat_bgwriter_17:
|
||||
runonserver: ">=17.0.0"
|
||||
name: pg_stat_bgwriter
|
||||
query: |
|
||||
SELECT buffers_clean
|
||||
, maxwritten_clean
|
||||
, buffers_alloc
|
||||
, EXTRACT(EPOCH FROM stats_reset) AS stats_reset_time
|
||||
FROM pg_catalog.pg_stat_bgwriter
|
||||
metrics:
|
||||
- buffers_clean:
|
||||
usage: "COUNTER"
|
||||
description: "Number of buffers written by the background writer"
|
||||
- maxwritten_clean:
|
||||
usage: "COUNTER"
|
||||
description: "Number of times the background writer stopped a cleaning scan because it had written too many buffers"
|
||||
- buffers_alloc:
|
||||
usage: "COUNTER"
|
||||
description: "Number of buffers allocated"
|
||||
- stats_reset_time:
|
||||
usage: "GAUGE"
|
||||
description: "Time at which these statistics were last reset"
|
||||
|
||||
pg_stat_checkpointer:
|
||||
runonserver: ">=17.0.0"
|
||||
query: |
|
||||
SELECT num_timed AS checkpoints_timed
|
||||
, num_requested AS checkpoints_req
|
||||
, restartpoints_timed
|
||||
, restartpoints_req
|
||||
, restartpoints_done
|
||||
, write_time
|
||||
, sync_time
|
||||
, buffers_written
|
||||
, EXTRACT(EPOCH FROM stats_reset) AS stats_reset_time
|
||||
FROM pg_catalog.pg_stat_checkpointer
|
||||
metrics:
|
||||
- checkpoints_timed:
|
||||
usage: "COUNTER"
|
||||
description: "Number of scheduled checkpoints that have been performed"
|
||||
- checkpoints_req:
|
||||
usage: "COUNTER"
|
||||
description: "Number of requested checkpoints that have been performed"
|
||||
- restartpoints_timed:
|
||||
usage: "COUNTER"
|
||||
description: "Number of scheduled restartpoints due to timeout or after a failed attempt to perform it"
|
||||
- restartpoints_req:
|
||||
usage: "COUNTER"
|
||||
description: "Number of requested restartpoints that have been performed"
|
||||
- restartpoints_done:
|
||||
usage: "COUNTER"
|
||||
description: "Number of restartpoints that have been performed"
|
||||
- write_time:
|
||||
usage: "COUNTER"
|
||||
description: "Total amount of time that has been spent in the portion of processing checkpoints and restartpoints where files are written to disk, in milliseconds"
|
||||
- sync_time:
|
||||
usage: "COUNTER"
|
||||
description: "Total amount of time that has been spent in the portion of processing checkpoints and restartpoints where files are synchronized to disk, in milliseconds"
|
||||
- buffers_written:
|
||||
usage: "COUNTER"
|
||||
description: "Number of buffers written during checkpoints and restartpoints"
|
||||
- stats_reset_time:
|
||||
usage: "GAUGE"
|
||||
description: "Time at which these statistics were last reset"
|
||||
|
||||
pg_stat_database:
|
||||
query: |
|
||||
SELECT datname
|
||||
, xact_commit
|
||||
, xact_rollback
|
||||
, blks_read
|
||||
, blks_hit
|
||||
, tup_returned
|
||||
, tup_fetched
|
||||
, tup_inserted
|
||||
, tup_updated
|
||||
, tup_deleted
|
||||
, conflicts
|
||||
, temp_files
|
||||
, temp_bytes
|
||||
, deadlocks
|
||||
, blk_read_time
|
||||
, blk_write_time
|
||||
FROM pg_catalog.pg_stat_database
|
||||
metrics:
|
||||
- datname:
|
||||
usage: "LABEL"
|
||||
description: "Name of this database"
|
||||
- xact_commit:
|
||||
usage: "COUNTER"
|
||||
description: "Number of transactions in this database that have been committed"
|
||||
- xact_rollback:
|
||||
usage: "COUNTER"
|
||||
description: "Number of transactions in this database that have been rolled back"
|
||||
- blks_read:
|
||||
usage: "COUNTER"
|
||||
description: "Number of disk blocks read in this database"
|
||||
- blks_hit:
|
||||
usage: "COUNTER"
|
||||
description: "Number of times disk blocks were found already in the buffer cache, so that a read was not necessary (this only includes hits in the PostgreSQL buffer cache, not the operating system's file system cache)"
|
||||
- tup_returned:
|
||||
usage: "COUNTER"
|
||||
description: "Number of rows returned by queries in this database"
|
||||
- tup_fetched:
|
||||
usage: "COUNTER"
|
||||
description: "Number of rows fetched by queries in this database"
|
||||
- tup_inserted:
|
||||
usage: "COUNTER"
|
||||
description: "Number of rows inserted by queries in this database"
|
||||
- tup_updated:
|
||||
usage: "COUNTER"
|
||||
description: "Number of rows updated by queries in this database"
|
||||
- tup_deleted:
|
||||
usage: "COUNTER"
|
||||
description: "Number of rows deleted by queries in this database"
|
||||
- conflicts:
|
||||
usage: "COUNTER"
|
||||
description: "Number of queries canceled due to conflicts with recovery in this database"
|
||||
- temp_files:
|
||||
usage: "COUNTER"
|
||||
description: "Number of temporary files created by queries in this database"
|
||||
- temp_bytes:
|
||||
usage: "COUNTER"
|
||||
description: "Total amount of data written to temporary files by queries in this database"
|
||||
- deadlocks:
|
||||
usage: "COUNTER"
|
||||
description: "Number of deadlocks detected in this database"
|
||||
- blk_read_time:
|
||||
usage: "COUNTER"
|
||||
description: "Time spent reading data file blocks by backends in this database, in milliseconds"
|
||||
- blk_write_time:
|
||||
usage: "COUNTER"
|
||||
description: "Time spent writing data file blocks by backends in this database, in milliseconds"
|
||||
|
||||
pg_stat_replication:
|
||||
primary: true
|
||||
query: |
|
||||
SELECT usename
|
||||
, COALESCE(application_name, '') AS application_name
|
||||
, COALESCE(client_addr::text, '') AS client_addr
|
||||
, COALESCE(client_port::text, '') AS client_port
|
||||
, EXTRACT(EPOCH FROM backend_start) AS backend_start
|
||||
, COALESCE(pg_catalog.age(backend_xmin), 0) AS backend_xmin_age
|
||||
, pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), sent_lsn) AS sent_diff_bytes
|
||||
, pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), write_lsn) AS write_diff_bytes
|
||||
, pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), flush_lsn) AS flush_diff_bytes
|
||||
, COALESCE(pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), replay_lsn),0) AS replay_diff_bytes
|
||||
, COALESCE((EXTRACT(EPOCH FROM write_lag)),0)::float AS write_lag_seconds
|
||||
, COALESCE((EXTRACT(EPOCH FROM flush_lag)),0)::float AS flush_lag_seconds
|
||||
, COALESCE((EXTRACT(EPOCH FROM replay_lag)),0)::float AS replay_lag_seconds
|
||||
FROM pg_catalog.pg_stat_replication
|
||||
metrics:
|
||||
- usename:
|
||||
usage: "LABEL"
|
||||
description: "Name of the replication user"
|
||||
- application_name:
|
||||
usage: "LABEL"
|
||||
description: "Name of the application"
|
||||
- client_addr:
|
||||
usage: "LABEL"
|
||||
description: "Client IP address"
|
||||
- client_port:
|
||||
usage: "LABEL"
|
||||
description: "Client TCP port"
|
||||
- backend_start:
|
||||
usage: "COUNTER"
|
||||
description: "Time when this process was started"
|
||||
- backend_xmin_age:
|
||||
usage: "COUNTER"
|
||||
description: "The age of this standby's xmin horizon"
|
||||
- sent_diff_bytes:
|
||||
usage: "GAUGE"
|
||||
description: "Difference in bytes from the last write-ahead log location sent on this connection"
|
||||
- write_diff_bytes:
|
||||
usage: "GAUGE"
|
||||
description: "Difference in bytes from the last write-ahead log location written to disk by this standby server"
|
||||
- flush_diff_bytes:
|
||||
usage: "GAUGE"
|
||||
description: "Difference in bytes from the last write-ahead log location flushed to disk by this standby server"
|
||||
- replay_diff_bytes:
|
||||
usage: "GAUGE"
|
||||
description: "Difference in bytes from the last write-ahead log location replayed into the database on this standby server"
|
||||
- write_lag_seconds:
|
||||
usage: "GAUGE"
|
||||
description: "Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written it"
|
||||
- flush_lag_seconds:
|
||||
usage: "GAUGE"
|
||||
description: "Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written and flushed it"
|
||||
- replay_lag_seconds:
|
||||
usage: "GAUGE"
|
||||
description: "Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written, flushed and applied it"
|
||||
|
||||
pg_settings:
|
||||
query: |
|
||||
SELECT name,
|
||||
CASE setting WHEN 'on' THEN '1' WHEN 'off' THEN '0' ELSE setting END AS setting
|
||||
FROM pg_catalog.pg_settings
|
||||
WHERE vartype IN ('integer', 'real', 'bool')
|
||||
ORDER BY 1
|
||||
metrics:
|
||||
- name:
|
||||
usage: "LABEL"
|
||||
description: "Name of the setting"
|
||||
- setting:
|
||||
usage: "GAUGE"
|
||||
description: "Setting value"
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
labels:
|
||||
app.kubernetes.io/instance: cloudnative-pg
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: cloudnative-pg
|
||||
app.kubernetes.io/version: 1.25.0
|
||||
cnpg.io/reload: ""
|
||||
helm.sh/chart: cloudnative-pg-0.23.0
|
||||
name: cnpg-default-monitoring
|
||||
namespace: cnpg-system
|
||||
|
|
@ -0,0 +1,430 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
controller-gen.kubebuilder.io/version: v0.16.5
|
||||
helm.sh/resource-policy: keep
|
||||
name: backups.postgresql.cnpg.io
|
||||
namespace: cnpg-system
|
||||
spec:
|
||||
group: postgresql.cnpg.io
|
||||
names:
|
||||
kind: Backup
|
||||
listKind: BackupList
|
||||
plural: backups
|
||||
singular: backup
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
- jsonPath: .spec.cluster.name
|
||||
name: Cluster
|
||||
type: string
|
||||
- jsonPath: .spec.method
|
||||
name: Method
|
||||
type: string
|
||||
- jsonPath: .status.phase
|
||||
name: Phase
|
||||
type: string
|
||||
- jsonPath: .status.error
|
||||
name: Error
|
||||
type: string
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Backup is the Schema for the backups API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: |-
|
||||
Specification of the desired behavior of the backup.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
cluster:
|
||||
description: The cluster to backup
|
||||
properties:
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
method:
|
||||
default: barmanObjectStore
|
||||
description: |-
|
||||
The backup method to be used, possible options are `barmanObjectStore`,
|
||||
`volumeSnapshot` or `plugin`. Defaults to: `barmanObjectStore`.
|
||||
enum:
|
||||
- barmanObjectStore
|
||||
- volumeSnapshot
|
||||
- plugin
|
||||
type: string
|
||||
online:
|
||||
description: |-
|
||||
Whether the default type of backup with volume snapshots is
|
||||
online/hot (`true`, default) or offline/cold (`false`)
|
||||
Overrides the default setting specified in the cluster field '.spec.backup.volumeSnapshot.online'
|
||||
type: boolean
|
||||
onlineConfiguration:
|
||||
description: |-
|
||||
Configuration parameters to control the online/hot backup with volume snapshots
|
||||
Overrides the default settings specified in the cluster '.backup.volumeSnapshot.onlineConfiguration' stanza
|
||||
properties:
|
||||
immediateCheckpoint:
|
||||
description: |-
|
||||
Control whether the I/O workload for the backup initial checkpoint will
|
||||
be limited, according to the `checkpoint_completion_target` setting on
|
||||
the PostgreSQL server. If set to true, an immediate checkpoint will be
|
||||
used, meaning PostgreSQL will complete the checkpoint as soon as
|
||||
possible. `false` by default.
|
||||
type: boolean
|
||||
waitForArchive:
|
||||
default: true
|
||||
description: |-
|
||||
If false, the function will return immediately after the backup is completed,
|
||||
without waiting for WAL to be archived.
|
||||
This behavior is only useful with backup software that independently monitors WAL archiving.
|
||||
Otherwise, WAL required to make the backup consistent might be missing and make the backup useless.
|
||||
By default, or when this parameter is true, pg_backup_stop will wait for WAL to be archived when archiving is
|
||||
enabled.
|
||||
On a standby, this means that it will wait only when archive_mode = always.
|
||||
If write activity on the primary is low, it may be useful to run pg_switch_wal on the primary in order to trigger
|
||||
an immediate segment switch.
|
||||
type: boolean
|
||||
type: object
|
||||
pluginConfiguration:
|
||||
description: Configuration parameters passed to the plugin managing this backup
|
||||
properties:
|
||||
name:
|
||||
description: Name is the name of the plugin managing this backup
|
||||
type: string
|
||||
parameters:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: |-
|
||||
Parameters are the configuration parameters passed to the backup
|
||||
plugin for this backup
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
target:
|
||||
description: |-
|
||||
The policy to decide which instance should perform this backup. If empty,
|
||||
it defaults to `cluster.spec.backup.target`.
|
||||
Available options are empty string, `primary` and `prefer-standby`.
|
||||
`primary` to have backups run always on primary instances,
|
||||
`prefer-standby` to have backups run preferably on the most updated
|
||||
standby, if available.
|
||||
enum:
|
||||
- primary
|
||||
- prefer-standby
|
||||
type: string
|
||||
required:
|
||||
- cluster
|
||||
type: object
|
||||
status:
|
||||
description: |-
|
||||
Most recently observed status of the backup. This data may not be up to
|
||||
date. Populated by the system. Read-only.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
azureCredentials:
|
||||
description: The credentials to use to upload data to Azure Blob Storage
|
||||
properties:
|
||||
connectionString:
|
||||
description: The connection string to be used
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
inheritFromAzureAD:
|
||||
description: Use the Azure AD based authentication without providing explicitly the keys.
|
||||
type: boolean
|
||||
storageAccount:
|
||||
description: The storage account where to upload data
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
storageKey:
|
||||
description: |-
|
||||
The storage account key to be used in conjunction
|
||||
with the storage account name
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
storageSasToken:
|
||||
description: |-
|
||||
A shared-access-signature to be used in conjunction with
|
||||
the storage account name
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
type: object
|
||||
backupId:
|
||||
description: The ID of the Barman backup
|
||||
type: string
|
||||
backupLabelFile:
|
||||
description: Backup label file content as returned by Postgres in case of online (hot) backups
|
||||
format: byte
|
||||
type: string
|
||||
backupName:
|
||||
description: The Name of the Barman backup
|
||||
type: string
|
||||
beginLSN:
|
||||
description: The starting xlog
|
||||
type: string
|
||||
beginWal:
|
||||
description: The starting WAL
|
||||
type: string
|
||||
commandError:
|
||||
description: The backup command output in case of error
|
||||
type: string
|
||||
commandOutput:
|
||||
description: Unused. Retained for compatibility with old versions.
|
||||
type: string
|
||||
destinationPath:
|
||||
description: |-
|
||||
The path where to store the backup (i.e. s3://bucket/path/to/folder)
|
||||
this path, with different destination folders, will be used for WALs
|
||||
and for data. This may not be populated in case of errors.
|
||||
type: string
|
||||
encryption:
|
||||
description: Encryption method required to S3 API
|
||||
type: string
|
||||
endLSN:
|
||||
description: The ending xlog
|
||||
type: string
|
||||
endWal:
|
||||
description: The ending WAL
|
||||
type: string
|
||||
endpointCA:
|
||||
description: |-
|
||||
EndpointCA store the CA bundle of the barman endpoint.
|
||||
Useful when using self-signed certificates to avoid
|
||||
errors with certificate issuer and barman-cloud-wal-archive.
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
endpointURL:
|
||||
description: |-
|
||||
Endpoint to be used to upload data to the cloud,
|
||||
overriding the automatic endpoint discovery
|
||||
type: string
|
||||
error:
|
||||
description: The detected error
|
||||
type: string
|
||||
googleCredentials:
|
||||
description: The credentials to use to upload data to Google Cloud Storage
|
||||
properties:
|
||||
applicationCredentials:
|
||||
description: The secret containing the Google Cloud Storage JSON file with the credentials
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
gkeEnvironment:
|
||||
description: |-
|
||||
If set to true, will presume that it's running inside a GKE environment,
|
||||
default to false.
|
||||
type: boolean
|
||||
type: object
|
||||
instanceID:
|
||||
description: Information to identify the instance where the backup has been taken from
|
||||
properties:
|
||||
ContainerID:
|
||||
description: The container ID
|
||||
type: string
|
||||
podName:
|
||||
description: The pod name
|
||||
type: string
|
||||
type: object
|
||||
method:
|
||||
description: The backup method being used
|
||||
type: string
|
||||
online:
|
||||
description: Whether the backup was online/hot (`true`) or offline/cold (`false`)
|
||||
type: boolean
|
||||
phase:
|
||||
description: The last backup status
|
||||
type: string
|
||||
pluginMetadata:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: A map containing the plugin metadata
|
||||
type: object
|
||||
s3Credentials:
|
||||
description: The credentials to use to upload data to S3
|
||||
properties:
|
||||
accessKeyId:
|
||||
description: The reference to the access key id
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
inheritFromIAMRole:
|
||||
description: Use the role based authentication without providing explicitly the keys.
|
||||
type: boolean
|
||||
region:
|
||||
description: The reference to the secret containing the region name
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
secretAccessKey:
|
||||
description: The reference to the secret access key
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
sessionToken:
|
||||
description: The references to the session key
|
||||
properties:
|
||||
key:
|
||||
description: The key to select
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
type: object
|
||||
type: object
|
||||
serverName:
|
||||
description: |-
|
||||
The server name on S3, the cluster name is used if this
|
||||
parameter is omitted
|
||||
type: string
|
||||
snapshotBackupStatus:
|
||||
description: Status of the volumeSnapshot backup
|
||||
properties:
|
||||
elements:
|
||||
description: The elements list, populated with the gathered volume snapshots
|
||||
items:
|
||||
description: BackupSnapshotElementStatus is a volume snapshot that is part of a volume snapshot method backup
|
||||
properties:
|
||||
name:
|
||||
description: Name is the snapshot resource name
|
||||
type: string
|
||||
tablespaceName:
|
||||
description: |-
|
||||
TablespaceName is the name of the snapshotted tablespace. Only set
|
||||
when type is PG_TABLESPACE
|
||||
type: string
|
||||
type:
|
||||
description: Type is tho role of the snapshot in the cluster, such as PG_DATA, PG_WAL and PG_TABLESPACE
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
startedAt:
|
||||
description: When the backup was started
|
||||
format: date-time
|
||||
type: string
|
||||
stoppedAt:
|
||||
description: When the backup was terminated
|
||||
format: date-time
|
||||
type: string
|
||||
tablespaceMapFile:
|
||||
description: Tablespace map file content as returned by Postgres in case of online (hot) backups
|
||||
format: byte
|
||||
type: string
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
controller-gen.kubebuilder.io/version: v0.16.5
|
||||
helm.sh/resource-policy: keep
|
||||
name: clusterimagecatalogs.postgresql.cnpg.io
|
||||
namespace: cnpg-system
|
||||
spec:
|
||||
group: postgresql.cnpg.io
|
||||
names:
|
||||
kind: ClusterImageCatalog
|
||||
listKind: ClusterImageCatalogList
|
||||
plural: clusterimagecatalogs
|
||||
singular: clusterimagecatalog
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: ClusterImageCatalog is the Schema for the clusterimagecatalogs API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: |-
|
||||
Specification of the desired behavior of the ClusterImageCatalog.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
images:
|
||||
description: List of CatalogImages available in the catalog
|
||||
items:
|
||||
description: CatalogImage defines the image and major version
|
||||
properties:
|
||||
image:
|
||||
description: The image reference
|
||||
type: string
|
||||
major:
|
||||
description: The PostgreSQL major version of the image. Must be unique within the catalog.
|
||||
minimum: 10
|
||||
type: integer
|
||||
required:
|
||||
- image
|
||||
- major
|
||||
type: object
|
||||
maxItems: 8
|
||||
minItems: 1
|
||||
type: array
|
||||
x-kubernetes-validations:
|
||||
- message: Images must have unique major versions
|
||||
rule: self.all(e, self.filter(f, f.major==e.major).size() == 1)
|
||||
required:
|
||||
- images
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources: {}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,261 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
controller-gen.kubebuilder.io/version: v0.16.5
|
||||
helm.sh/resource-policy: keep
|
||||
name: databases.postgresql.cnpg.io
|
||||
namespace: cnpg-system
|
||||
spec:
|
||||
group: postgresql.cnpg.io
|
||||
names:
|
||||
kind: Database
|
||||
listKind: DatabaseList
|
||||
plural: databases
|
||||
singular: database
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
- jsonPath: .spec.cluster.name
|
||||
name: Cluster
|
||||
type: string
|
||||
- jsonPath: .spec.name
|
||||
name: PG Name
|
||||
type: string
|
||||
- jsonPath: .status.applied
|
||||
name: Applied
|
||||
type: boolean
|
||||
- description: Latest reconciliation message
|
||||
jsonPath: .status.message
|
||||
name: Message
|
||||
type: string
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Database is the Schema for the databases API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: |-
|
||||
Specification of the desired Database.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
allowConnections:
|
||||
description: |-
|
||||
Maps to the `ALLOW_CONNECTIONS` parameter of `CREATE DATABASE` and
|
||||
`ALTER DATABASE`. If false then no one can connect to this database.
|
||||
type: boolean
|
||||
builtinLocale:
|
||||
description: |-
|
||||
Maps to the `BUILTIN_LOCALE` parameter of `CREATE DATABASE`. This
|
||||
setting cannot be changed. Specifies the locale name when the
|
||||
builtin provider is used. This option requires `localeProvider` to
|
||||
be set to `builtin`. Available from PostgreSQL 17.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: builtinLocale is immutable
|
||||
rule: self == oldSelf
|
||||
cluster:
|
||||
description: The name of the PostgreSQL cluster hosting the database.
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
description: |-
|
||||
Name of the referent.
|
||||
This field is effectively required, but due to backwards compatibility is
|
||||
allowed to be empty. Instances of this type with an empty value here are
|
||||
almost certainly wrong.
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
collationVersion:
|
||||
description: |-
|
||||
Maps to the `COLLATION_VERSION` parameter of `CREATE DATABASE`. This
|
||||
setting cannot be changed.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: collationVersion is immutable
|
||||
rule: self == oldSelf
|
||||
connectionLimit:
|
||||
description: |-
|
||||
Maps to the `CONNECTION LIMIT` clause of `CREATE DATABASE` and
|
||||
`ALTER DATABASE`. How many concurrent connections can be made to
|
||||
this database. -1 (the default) means no limit.
|
||||
type: integer
|
||||
databaseReclaimPolicy:
|
||||
default: retain
|
||||
description: The policy for end-of-life maintenance of this database.
|
||||
enum:
|
||||
- delete
|
||||
- retain
|
||||
type: string
|
||||
encoding:
|
||||
description: |-
|
||||
Maps to the `ENCODING` parameter of `CREATE DATABASE`. This setting
|
||||
cannot be changed. Character set encoding to use in the database.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: encoding is immutable
|
||||
rule: self == oldSelf
|
||||
ensure:
|
||||
default: present
|
||||
description: Ensure the PostgreSQL database is `present` or `absent` - defaults to "present".
|
||||
enum:
|
||||
- present
|
||||
- absent
|
||||
type: string
|
||||
icuLocale:
|
||||
description: |-
|
||||
Maps to the `ICU_LOCALE` parameter of `CREATE DATABASE`. This
|
||||
setting cannot be changed. Specifies the ICU locale when the ICU
|
||||
provider is used. This option requires `localeProvider` to be set to
|
||||
`icu`. Available from PostgreSQL 15.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: icuLocale is immutable
|
||||
rule: self == oldSelf
|
||||
icuRules:
|
||||
description: |-
|
||||
Maps to the `ICU_RULES` parameter of `CREATE DATABASE`. This setting
|
||||
cannot be changed. Specifies additional collation rules to customize
|
||||
the behavior of the default collation. This option requires
|
||||
`localeProvider` to be set to `icu`. Available from PostgreSQL 16.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: icuRules is immutable
|
||||
rule: self == oldSelf
|
||||
isTemplate:
|
||||
description: |-
|
||||
Maps to the `IS_TEMPLATE` parameter of `CREATE DATABASE` and `ALTER
|
||||
DATABASE`. If true, this database is considered a template and can
|
||||
be cloned by any user with `CREATEDB` privileges.
|
||||
type: boolean
|
||||
locale:
|
||||
description: |-
|
||||
Maps to the `LOCALE` parameter of `CREATE DATABASE`. This setting
|
||||
cannot be changed. Sets the default collation order and character
|
||||
classification in the new database.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: locale is immutable
|
||||
rule: self == oldSelf
|
||||
localeCType:
|
||||
description: |-
|
||||
Maps to the `LC_CTYPE` parameter of `CREATE DATABASE`. This setting
|
||||
cannot be changed.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: localeCType is immutable
|
||||
rule: self == oldSelf
|
||||
localeCollate:
|
||||
description: |-
|
||||
Maps to the `LC_COLLATE` parameter of `CREATE DATABASE`. This
|
||||
setting cannot be changed.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: localeCollate is immutable
|
||||
rule: self == oldSelf
|
||||
localeProvider:
|
||||
description: |-
|
||||
Maps to the `LOCALE_PROVIDER` parameter of `CREATE DATABASE`. This
|
||||
setting cannot be changed. This option sets the locale provider for
|
||||
databases created in the new cluster. Available from PostgreSQL 16.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: localeProvider is immutable
|
||||
rule: self == oldSelf
|
||||
name:
|
||||
description: The name of the database to create inside PostgreSQL. This setting cannot be changed.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: name is immutable
|
||||
rule: self == oldSelf
|
||||
- message: the name postgres is reserved
|
||||
rule: self != 'postgres'
|
||||
- message: the name template0 is reserved
|
||||
rule: self != 'template0'
|
||||
- message: the name template1 is reserved
|
||||
rule: self != 'template1'
|
||||
owner:
|
||||
description: |-
|
||||
Maps to the `OWNER` parameter of `CREATE DATABASE`.
|
||||
Maps to the `OWNER TO` command of `ALTER DATABASE`.
|
||||
The role name of the user who owns the database inside PostgreSQL.
|
||||
type: string
|
||||
tablespace:
|
||||
description: |-
|
||||
Maps to the `TABLESPACE` parameter of `CREATE DATABASE`.
|
||||
Maps to the `SET TABLESPACE` command of `ALTER DATABASE`.
|
||||
The name of the tablespace (in PostgreSQL) that will be associated
|
||||
with the new database. This tablespace will be the default
|
||||
tablespace used for objects created in this database.
|
||||
type: string
|
||||
template:
|
||||
description: |-
|
||||
Maps to the `TEMPLATE` parameter of `CREATE DATABASE`. This setting
|
||||
cannot be changed. The name of the template from which to create
|
||||
this database.
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: template is immutable
|
||||
rule: self == oldSelf
|
||||
required:
|
||||
- cluster
|
||||
- name
|
||||
- owner
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: builtinLocale is only available when localeProvider is set to `builtin`
|
||||
rule: '!has(self.builtinLocale) || self.localeProvider == ''builtin'''
|
||||
- message: icuLocale is only available when localeProvider is set to `icu`
|
||||
rule: '!has(self.icuLocale) || self.localeProvider == ''icu'''
|
||||
- message: icuRules is only available when localeProvider is set to `icu`
|
||||
rule: '!has(self.icuRules) || self.localeProvider == ''icu'''
|
||||
status:
|
||||
description: |-
|
||||
Most recently observed status of the Database. This data may not be up to
|
||||
date. Populated by the system. Read-only.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
applied:
|
||||
description: Applied is true if the database was reconciled correctly
|
||||
type: boolean
|
||||
message:
|
||||
description: Message is the reconciliation output message
|
||||
type: string
|
||||
observedGeneration:
|
||||
description: |-
|
||||
A sequence number representing the latest
|
||||
desired state that was synchronized
|
||||
format: int64
|
||||
type: integer
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
controller-gen.kubebuilder.io/version: v0.16.5
|
||||
helm.sh/resource-policy: keep
|
||||
name: imagecatalogs.postgresql.cnpg.io
|
||||
namespace: cnpg-system
|
||||
spec:
|
||||
group: postgresql.cnpg.io
|
||||
names:
|
||||
kind: ImageCatalog
|
||||
listKind: ImageCatalogList
|
||||
plural: imagecatalogs
|
||||
singular: imagecatalog
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: ImageCatalog is the Schema for the imagecatalogs API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: |-
|
||||
Specification of the desired behavior of the ImageCatalog.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
images:
|
||||
description: List of CatalogImages available in the catalog
|
||||
items:
|
||||
description: CatalogImage defines the image and major version
|
||||
properties:
|
||||
image:
|
||||
description: The image reference
|
||||
type: string
|
||||
major:
|
||||
description: The PostgreSQL major version of the image. Must be unique within the catalog.
|
||||
minimum: 10
|
||||
type: integer
|
||||
required:
|
||||
- image
|
||||
- major
|
||||
type: object
|
||||
maxItems: 8
|
||||
minItems: 1
|
||||
type: array
|
||||
x-kubernetes-validations:
|
||||
- message: Images must have unique major versions
|
||||
rule: self.all(e, self.filter(f, f.major==e.major).size() == 1)
|
||||
required:
|
||||
- images
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources: {}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,190 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
controller-gen.kubebuilder.io/version: v0.16.5
|
||||
helm.sh/resource-policy: keep
|
||||
name: publications.postgresql.cnpg.io
|
||||
namespace: cnpg-system
|
||||
spec:
|
||||
group: postgresql.cnpg.io
|
||||
names:
|
||||
kind: Publication
|
||||
listKind: PublicationList
|
||||
plural: publications
|
||||
singular: publication
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
- jsonPath: .spec.cluster.name
|
||||
name: Cluster
|
||||
type: string
|
||||
- jsonPath: .spec.name
|
||||
name: PG Name
|
||||
type: string
|
||||
- jsonPath: .status.applied
|
||||
name: Applied
|
||||
type: boolean
|
||||
- description: Latest reconciliation message
|
||||
jsonPath: .status.message
|
||||
name: Message
|
||||
type: string
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Publication is the Schema for the publications API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: PublicationSpec defines the desired state of Publication
|
||||
properties:
|
||||
cluster:
|
||||
description: The name of the PostgreSQL cluster that identifies the "publisher"
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
description: |-
|
||||
Name of the referent.
|
||||
This field is effectively required, but due to backwards compatibility is
|
||||
allowed to be empty. Instances of this type with an empty value here are
|
||||
almost certainly wrong.
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
dbname:
|
||||
description: |-
|
||||
The name of the database where the publication will be installed in
|
||||
the "publisher" cluster
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: dbname is immutable
|
||||
rule: self == oldSelf
|
||||
name:
|
||||
description: The name of the publication inside PostgreSQL
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: name is immutable
|
||||
rule: self == oldSelf
|
||||
parameters:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: |-
|
||||
Publication parameters part of the `WITH` clause as expected by
|
||||
PostgreSQL `CREATE PUBLICATION` command
|
||||
type: object
|
||||
publicationReclaimPolicy:
|
||||
default: retain
|
||||
description: The policy for end-of-life maintenance of this publication
|
||||
enum:
|
||||
- delete
|
||||
- retain
|
||||
type: string
|
||||
target:
|
||||
description: Target of the publication as expected by PostgreSQL `CREATE PUBLICATION` command
|
||||
properties:
|
||||
allTables:
|
||||
description: |-
|
||||
Marks the publication as one that replicates changes for all tables
|
||||
in the database, including tables created in the future.
|
||||
Corresponding to `FOR ALL TABLES` in PostgreSQL.
|
||||
type: boolean
|
||||
x-kubernetes-validations:
|
||||
- message: allTables is immutable
|
||||
rule: self == oldSelf
|
||||
objects:
|
||||
description: Just the following schema objects
|
||||
items:
|
||||
description: PublicationTargetObject is an object to publish
|
||||
properties:
|
||||
table:
|
||||
description: |-
|
||||
Specifies a list of tables to add to the publication. Corresponding
|
||||
to `FOR TABLE` in PostgreSQL.
|
||||
properties:
|
||||
columns:
|
||||
description: The columns to publish
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
name:
|
||||
description: The table name
|
||||
type: string
|
||||
only:
|
||||
description: Whether to limit to the table only or include all its descendants
|
||||
type: boolean
|
||||
schema:
|
||||
description: The schema name
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
tablesInSchema:
|
||||
description: |-
|
||||
Marks the publication as one that replicates changes for all tables
|
||||
in the specified list of schemas, including tables created in the
|
||||
future. Corresponding to `FOR TABLES IN SCHEMA` in PostgreSQL.
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: tablesInSchema and table are mutually exclusive
|
||||
rule: (has(self.tablesInSchema) && !has(self.table)) || (!has(self.tablesInSchema) && has(self.table))
|
||||
maxItems: 100000
|
||||
type: array
|
||||
x-kubernetes-validations:
|
||||
- message: specifying a column list when the publication also publishes tablesInSchema is not supported
|
||||
rule: '!(self.exists(o, has(o.table) && has(o.table.columns)) && self.exists(o, has(o.tablesInSchema)))'
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: allTables and objects are mutually exclusive
|
||||
rule: (has(self.allTables) && !has(self.objects)) || (!has(self.allTables) && has(self.objects))
|
||||
required:
|
||||
- cluster
|
||||
- dbname
|
||||
- name
|
||||
- target
|
||||
type: object
|
||||
status:
|
||||
description: PublicationStatus defines the observed state of Publication
|
||||
properties:
|
||||
applied:
|
||||
description: Applied is true if the publication was reconciled correctly
|
||||
type: boolean
|
||||
message:
|
||||
description: Message is the reconciliation output message
|
||||
type: string
|
||||
observedGeneration:
|
||||
description: |-
|
||||
A sequence number representing the latest
|
||||
desired state that was synchronized
|
||||
format: int64
|
||||
type: integer
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
|
|
@ -0,0 +1,190 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
|
||||
controller-gen.kubebuilder.io/version: v0.16.5
|
||||
helm.sh/resource-policy: keep
|
||||
name: scheduledbackups.postgresql.cnpg.io
|
||||
namespace: cnpg-system
|
||||
spec:
|
||||
group: postgresql.cnpg.io
|
||||
names:
|
||||
kind: ScheduledBackup
|
||||
listKind: ScheduledBackupList
|
||||
plural: scheduledbackups
|
||||
singular: scheduledbackup
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
- jsonPath: .spec.cluster.name
|
||||
name: Cluster
|
||||
type: string
|
||||
- jsonPath: .status.lastScheduleTime
|
||||
name: Last Backup
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: ScheduledBackup is the Schema for the scheduledbackups API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: |-
|
||||
Specification of the desired behavior of the ScheduledBackup.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
backupOwnerReference:
|
||||
default: none
|
||||
description: |-
|
||||
Indicates which ownerReference should be put inside the created backup resources.<br />
|
||||
- none: no owner reference for created backup objects (same behavior as before the field was introduced)<br />
|
||||
- self: sets the Scheduled backup object as owner of the backup<br />
|
||||
- cluster: set the cluster as owner of the backup<br />
|
||||
enum:
|
||||
- none
|
||||
- self
|
||||
- cluster
|
||||
type: string
|
||||
cluster:
|
||||
description: The cluster to backup
|
||||
properties:
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
immediate:
|
||||
description: If the first backup has to be immediately start after creation or not
|
||||
type: boolean
|
||||
method:
|
||||
default: barmanObjectStore
|
||||
description: |-
|
||||
The backup method to be used, possible options are `barmanObjectStore`,
|
||||
`volumeSnapshot` or `plugin`. Defaults to: `barmanObjectStore`.
|
||||
enum:
|
||||
- barmanObjectStore
|
||||
- volumeSnapshot
|
||||
- plugin
|
||||
type: string
|
||||
online:
|
||||
description: |-
|
||||
Whether the default type of backup with volume snapshots is
|
||||
online/hot (`true`, default) or offline/cold (`false`)
|
||||
Overrides the default setting specified in the cluster field '.spec.backup.volumeSnapshot.online'
|
||||
type: boolean
|
||||
onlineConfiguration:
|
||||
description: |-
|
||||
Configuration parameters to control the online/hot backup with volume snapshots
|
||||
Overrides the default settings specified in the cluster '.backup.volumeSnapshot.onlineConfiguration' stanza
|
||||
properties:
|
||||
immediateCheckpoint:
|
||||
description: |-
|
||||
Control whether the I/O workload for the backup initial checkpoint will
|
||||
be limited, according to the `checkpoint_completion_target` setting on
|
||||
the PostgreSQL server. If set to true, an immediate checkpoint will be
|
||||
used, meaning PostgreSQL will complete the checkpoint as soon as
|
||||
possible. `false` by default.
|
||||
type: boolean
|
||||
waitForArchive:
|
||||
default: true
|
||||
description: |-
|
||||
If false, the function will return immediately after the backup is completed,
|
||||
without waiting for WAL to be archived.
|
||||
This behavior is only useful with backup software that independently monitors WAL archiving.
|
||||
Otherwise, WAL required to make the backup consistent might be missing and make the backup useless.
|
||||
By default, or when this parameter is true, pg_backup_stop will wait for WAL to be archived when archiving is
|
||||
enabled.
|
||||
On a standby, this means that it will wait only when archive_mode = always.
|
||||
If write activity on the primary is low, it may be useful to run pg_switch_wal on the primary in order to trigger
|
||||
an immediate segment switch.
|
||||
type: boolean
|
||||
type: object
|
||||
pluginConfiguration:
|
||||
description: Configuration parameters passed to the plugin managing this backup
|
||||
properties:
|
||||
name:
|
||||
description: Name is the name of the plugin managing this backup
|
||||
type: string
|
||||
parameters:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: |-
|
||||
Parameters are the configuration parameters passed to the backup
|
||||
plugin for this backup
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
schedule:
|
||||
description: |-
|
||||
The schedule does not follow the same format used in Kubernetes CronJobs
|
||||
as it includes an additional seconds specifier,
|
||||
see https://pkg.go.dev/github.com/robfig/cron#hdr-CRON_Expression_Format
|
||||
type: string
|
||||
suspend:
|
||||
description: If this backup is suspended or not
|
||||
type: boolean
|
||||
target:
|
||||
description: |-
|
||||
The policy to decide which instance should perform this backup. If empty,
|
||||
it defaults to `cluster.spec.backup.target`.
|
||||
Available options are empty string, `primary` and `prefer-standby`.
|
||||
`primary` to have backups run always on primary instances,
|
||||
`prefer-standby` to have backups run preferably on the most updated
|
||||
standby, if available.
|
||||
enum:
|
||||
- primary
|
||||
- prefer-standby
|
||||
type: string
|
||||
required:
|
||||
- cluster
|
||||
- schedule
|
||||
type: object
|
||||
status:
|
||||
description: |-
|
||||
Most recently observed status of the ScheduledBackup. This data may not be up
|
||||
to date. Populated by the system. Read-only.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||
properties:
|
||||
lastCheckTime:
|
||||
description: The latest time the schedule
|
||||
format: date-time
|
||||
type: string
|
||||
lastScheduleTime:
|
||||
description: Information when was the last time that backup was successfully scheduled.
|
||||
format: date-time
|
||||
type: string
|
||||
nextScheduleTime:
|
||||
description: Next time we will run a backup
|
||||
format: date-time
|
||||
type: string
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue