Created
February 2, 2025 15:10
-
-
Save janakiramm/61a0d5c17731b887113459958782ab71 to your computer and use it in GitHub Desktop.
Kro RGD for WordPress
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: kro.run/v1alpha1 | |
kind: ResourceGraphDefinition | |
metadata: | |
name: wp-app | |
spec: | |
schema: | |
apiVersion: v1alpha1 | |
kind: Application | |
spec: | |
name: string | default="wordpress" | |
mysqlPassword: string | |
storageClass: string | default="standard" | |
ingress: | |
enabled: boolean | default=false | |
resources: | |
- id: mysqlSecret | |
template: | |
apiVersion: v1 | |
kind: Secret | |
metadata: | |
name: ${schema.spec.name}-mysql-pass | |
type: Opaque | |
data: | |
password: ${schema.spec.mysqlPassword} | |
- id: mysqlPvc | |
template: | |
apiVersion: v1 | |
kind: PersistentVolumeClaim | |
metadata: | |
name: ${schema.spec.name}-mysql-pv-claim | |
labels: | |
app: ${schema.spec.name} | |
spec: | |
storageClassName: ${schema.spec.storageClass} | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 1Gi | |
- id: mysqlDeployment | |
template: | |
apiVersion: apps/v1 | |
kind: Deployment | |
metadata: | |
name: ${schema.spec.name}-wordpress-mysql | |
labels: | |
app: ${schema.spec.name} | |
spec: | |
replicas: 1 | |
selector: | |
matchLabels: | |
app: ${schema.spec.name} | |
tier: mysql | |
strategy: | |
type: Recreate | |
template: | |
metadata: | |
labels: | |
app: ${schema.spec.name} | |
tier: mysql | |
spec: | |
containers: | |
- image: mysql:8.0 | |
name: mysql | |
env: | |
- name: MYSQL_ROOT_PASSWORD | |
valueFrom: | |
secretKeyRef: | |
name: ${schema.spec.name}-mysql-pass | |
key: password | |
- name: MYSQL_DATABASE | |
value: wordpress | |
- name: MYSQL_USER | |
value: wordpress | |
- name: MYSQL_PASSWORD | |
valueFrom: | |
secretKeyRef: | |
name: ${schema.spec.name}-mysql-pass | |
key: password | |
ports: | |
- containerPort: 3306 | |
name: mysql | |
volumeMounts: | |
- name: mysql-persistent-storage | |
mountPath: /var/lib/mysql | |
volumes: | |
- name: mysql-persistent-storage | |
persistentVolumeClaim: | |
claimName: ${schema.spec.name}-mysql-pv-claim | |
- id: mysqlService | |
template: | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: ${schema.spec.name}-wordpress-mysql | |
labels: | |
app: ${schema.spec.name} | |
spec: | |
ports: | |
- port: 3306 | |
selector: | |
app: ${schema.spec.name} | |
tier: mysql | |
clusterIP: None | |
- id: wordpressPvc | |
template: | |
apiVersion: v1 | |
kind: PersistentVolumeClaim | |
metadata: | |
name: ${schema.spec.name}-wp-pv-claim | |
labels: | |
app: ${schema.spec.name} | |
spec: | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 1Gi | |
storageClassName: ${schema.spec.storageClass} | |
- id: wordpressDeployment | |
template: | |
apiVersion: apps/v1 | |
kind: Deployment | |
metadata: | |
name: ${schema.spec.name}-wordpress | |
labels: | |
app: ${schema.spec.name} | |
spec: | |
replicas: 1 | |
selector: | |
matchLabels: | |
app: ${schema.spec.name} | |
tier: frontend | |
strategy: | |
type: Recreate | |
template: | |
metadata: | |
labels: | |
app: ${schema.spec.name} | |
tier: frontend | |
spec: | |
containers: | |
- image: wordpress:6.2.1-apache | |
name: wordpress | |
env: | |
- name: WORDPRESS_DB_HOST | |
value: ${schema.spec.name}-wordpress-mysql | |
- name: WORDPRESS_DB_PASSWORD | |
valueFrom: | |
secretKeyRef: | |
name: ${schema.spec.name}-mysql-pass | |
key: password | |
- name: WORDPRESS_DB_USER | |
value: wordpress | |
ports: | |
- containerPort: 80 | |
name: wordpress | |
volumeMounts: | |
- name: wordpress-persistent-storage | |
mountPath: /var/www/html | |
volumes: | |
- name: wordpress-persistent-storage | |
persistentVolumeClaim: | |
claimName: ${schema.spec.name}-wp-pv-claim | |
- id: wordpressService | |
template: | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: ${schema.spec.name}-wordpress | |
labels: | |
app: ${schema.spec.name} | |
spec: | |
ports: | |
- port: 80 | |
selector: | |
app: ${schema.spec.name} | |
tier: frontend | |
type: NodePort | |
- id: wordpressIngress | |
includeWhen: | |
- ${schema.spec.ingress.enabled} | |
template: | |
apiVersion: networking.k8s.io/v1 | |
kind: Ingress | |
metadata: | |
name: ${schema.spec.name}-ingress | |
annotations: | |
kubernetes.io/ingress.class: nginx | |
spec: | |
rules: | |
- host: ${schema.spec.name}.example.com | |
http: | |
paths: | |
- path: / | |
pathType: Prefix | |
backend: | |
service: | |
name: ${schema.spec.name}-wordpress | |
port: | |
number: 80 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment