varie
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
apiVersion: v2
|
||||
name: mysql-database-operator
|
||||
description: Declarative MySQL database/user controller for Kubernetes
|
||||
version: 0.1.0
|
||||
appVersion: "0.1.0"
|
||||
type: application
|
||||
@@ -0,0 +1,2 @@
|
||||
{{- define "mysql-database-operator.name" -}}mysql-database-operator{{- end }}
|
||||
{{- define "mysql-database-operator.fullname" -}}{{ include "mysql-database-operator.name" . }}{{- end }}
|
||||
@@ -0,0 +1,93 @@
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: mysqldatabases.platform.example.com
|
||||
spec:
|
||||
group: platform.example.com
|
||||
scope: Namespaced
|
||||
names:
|
||||
plural: mysqldatabases
|
||||
singular: mysqldatabase
|
||||
kind: MySQLDatabase
|
||||
shortNames: [mysqldb]
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
additionalPrinterColumns:
|
||||
- name: Database
|
||||
type: string
|
||||
jsonPath: .status.databaseName
|
||||
- name: User
|
||||
type: string
|
||||
jsonPath: .status.userName
|
||||
- name: Phase
|
||||
type: string
|
||||
jsonPath: .status.phase
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
required: [spec]
|
||||
properties:
|
||||
spec:
|
||||
type: object
|
||||
required: [clusterRef,databaseName,adminSecretRef]
|
||||
properties:
|
||||
clusterRef:
|
||||
type: object
|
||||
required: [name]
|
||||
properties: {name: {type: string}}
|
||||
databaseName:
|
||||
type: string
|
||||
minLength: 1
|
||||
maxLength: 64
|
||||
pattern: '^[A-Za-z0-9_$-]+$'
|
||||
adminSecretRef:
|
||||
type: object
|
||||
required: [name]
|
||||
properties: {name: {type: string}}
|
||||
connection:
|
||||
type: object
|
||||
properties:
|
||||
host: {type: string}
|
||||
port: {type: integer, minimum: 1, maximum: 65535}
|
||||
user:
|
||||
type: object
|
||||
properties:
|
||||
name: {type: string, maxLength: 32}
|
||||
create: {type: boolean}
|
||||
credentials:
|
||||
type: object
|
||||
properties:
|
||||
secretName: {type: string}
|
||||
privileges:
|
||||
type: array
|
||||
items: {type: string}
|
||||
charset: {type: string}
|
||||
collation: {type: string}
|
||||
deletionPolicy:
|
||||
type: string
|
||||
enum: [Retain, Delete]
|
||||
default: Retain
|
||||
status:
|
||||
type: object
|
||||
properties:
|
||||
phase: {type: string}
|
||||
message: {type: string}
|
||||
databaseName: {type: string}
|
||||
userName: {type: string}
|
||||
secretName: {type: string}
|
||||
observedGeneration: {type: integer, format: int64}
|
||||
conditions:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
required: [type,status,reason,message,lastTransitionTime]
|
||||
properties:
|
||||
type: {type: string}
|
||||
status: {type: string}
|
||||
reason: {type: string}
|
||||
message: {type: string}
|
||||
lastTransitionTime: {type: string, format: date-time}
|
||||
@@ -0,0 +1,28 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: mysql-database-operator
|
||||
namespace: mysql-database-operator-system
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector: {matchLabels: {app: mysql-database-operator}}
|
||||
template:
|
||||
metadata: {labels: {app: mysql-database-operator}}
|
||||
spec:
|
||||
serviceAccountName: {{ .Values.serviceAccount.name }}
|
||||
securityContext: {runAsNonRoot: true}
|
||||
containers:
|
||||
- name: manager
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args: ["--leader-elect={{ .Values.leaderElect }}"]
|
||||
ports:
|
||||
- {name: metrics, containerPort: 8080}
|
||||
- {name: health, containerPort: 8081}
|
||||
resources: {{- toYaml .Values.resources | nindent 10 }}
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities: {drop: [ALL]}
|
||||
seccompProfile: {type: RuntimeDefault}
|
||||
readinessProbe: {httpGet: {path: /readyz, port: health}}
|
||||
livenessProbe: {httpGet: {path: /healthz, port: health}}
|
||||
@@ -0,0 +1,6 @@
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: mysql-database-operator-system
|
||||
{{- end }}
|
||||
@@ -0,0 +1,33 @@
|
||||
{{- if .Values.rbac.create }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata: {name: mysql-database-operator}
|
||||
rules:
|
||||
- apiGroups: [platform.example.com]
|
||||
resources: [mysqldatabases]
|
||||
verbs: [get,list,watch,create,update,patch,delete]
|
||||
- apiGroups: [platform.example.com]
|
||||
resources: [mysqldatabases/status]
|
||||
verbs: [get,update,patch]
|
||||
- apiGroups: [platform.example.com]
|
||||
resources: [mysqldatabases/finalizers]
|
||||
verbs: [update]
|
||||
- apiGroups: [""]
|
||||
resources: [secrets]
|
||||
verbs: [get,list,watch,create,update,patch,delete]
|
||||
- apiGroups: [""]
|
||||
resources: [events]
|
||||
verbs: [create,patch]
|
||||
- apiGroups: [coordination.k8s.io]
|
||||
resources: [leases]
|
||||
verbs: [get,list,watch,create,update,patch,delete]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata: {name: mysql-database-operator}
|
||||
roleRef: {apiGroup: rbac.authorization.k8s.io, kind: ClusterRole, name: mysql-database-operator}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.serviceAccount.name }}
|
||||
namespace: mysql-database-operator-system
|
||||
{{- end }}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.name }}
|
||||
namespace: mysql-database-operator-system
|
||||
@@ -0,0 +1,16 @@
|
||||
image:
|
||||
repository: ghcr.io/example/mysql-database-operator
|
||||
tag: 0.1.0
|
||||
pullPolicy: IfNotPresent
|
||||
replicaCount: 1
|
||||
leaderElect: true
|
||||
resources:
|
||||
requests: {cpu: 50m, memory: 64Mi}
|
||||
limits: {cpu: 500m, memory: 256Mi}
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: mysql-database-operator
|
||||
rbac:
|
||||
create: true
|
||||
crd:
|
||||
install: true
|
||||
Reference in New Issue
Block a user