diff --git a/argocd-apps/applications/studio/phpmyadmin.yaml b/argocd-apps/applications/studio/phpmyadmin.yaml new file mode 100644 index 0000000..191f178 --- /dev/null +++ b/argocd-apps/applications/studio/phpmyadmin.yaml @@ -0,0 +1,18 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: phpmyadmin + namespace: argocd +spec: + project: studio + source: + repoURL: http://forgejo.forgejo.svc.cluster.local:3000/symcrest/k8s-platform.git + targetRevision: main + path: rendered/phpmyadmin + destination: + server: https://kubernetes.default.svc + namespace: phpmyadmin + syncPolicy: + automated: + prune: false + selfHeal: true diff --git a/argocd-apps/studio-project.yaml b/argocd-apps/studio-project.yaml index 51be457..dd73d11 100644 --- a/argocd-apps/studio-project.yaml +++ b/argocd-apps/studio-project.yaml @@ -18,3 +18,5 @@ spec: - namespace: pgadmin server: https://kubernetes.default.svc + - namespace: phpmyadmin + server: https://kubernetes.default.svc diff --git a/charts/phpmyadmin/Chart.yaml b/charts/phpmyadmin/Chart.yaml new file mode 100644 index 0000000..2917d7d --- /dev/null +++ b/charts/phpmyadmin/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +name: phpmyadmin +description: Symcrest Studio phpMyAdmin deployment +type: application +version: 0.1.0 +appVersion: "5.2.3" diff --git a/charts/phpmyadmin/templates/deployment.yaml b/charts/phpmyadmin/templates/deployment.yaml new file mode 100644 index 0000000..d285370 --- /dev/null +++ b/charts/phpmyadmin/templates/deployment.yaml @@ -0,0 +1,43 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: phpmyadmin + namespace: {{ .Values.namespace }} +spec: + replicas: 1 + selector: + matchLabels: + app: phpmyadmin + template: + metadata: + labels: + app: phpmyadmin + spec: + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} + + containers: + - name: phpmyadmin + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: IfNotPresent + + ports: + - name: http + containerPort: 80 + + env: + - name: PMA_HOST + value: {{ .Values.mysql.host | quote }} + - name: PMA_PORT + value: {{ .Values.mysql.port | quote }} + - name: PMA_ABSOLUTE_URI + value: {{ .Values.app.absoluteUri | quote }} + + volumeMounts: + - name: sessions + mountPath: /sessions + + volumes: + - name: sessions + persistentVolumeClaim: + claimName: phpmyadmin-sessions diff --git a/charts/phpmyadmin/templates/pvc.yaml b/charts/phpmyadmin/templates/pvc.yaml new file mode 100644 index 0000000..9804e34 --- /dev/null +++ b/charts/phpmyadmin/templates/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: phpmyadmin-sessions + namespace: {{ .Values.namespace }} +spec: + accessModes: + - ReadWriteOnce + storageClassName: {{ .Values.storage.className }} + resources: + requests: + storage: {{ .Values.storage.size }} diff --git a/charts/phpmyadmin/templates/service.yaml b/charts/phpmyadmin/templates/service.yaml new file mode 100644 index 0000000..33af400 --- /dev/null +++ b/charts/phpmyadmin/templates/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: phpmyadmin + namespace: {{ .Values.namespace }} +spec: + selector: + app: phpmyadmin + ports: + - name: http + port: 80 + targetPort: http diff --git a/charts/phpmyadmin/values.yaml b/charts/phpmyadmin/values.yaml new file mode 100644 index 0000000..f204adc --- /dev/null +++ b/charts/phpmyadmin/values.yaml @@ -0,0 +1,19 @@ +namespace: phpmyadmin + +image: + repository: phpmyadmin + tag: "5.2.3" + +mysql: + host: platform-mysql.platform-services.svc.cluster.local + port: 3306 + +app: + absoluteUri: https://www.symcrest.com/services/studio/phpmyadmin/ + +storage: + className: longhorn + size: 1Gi + +nodeSelector: + workload: app diff --git a/infrastructure/gateway/envoy/routes/phpmyadmin.yaml b/infrastructure/gateway/envoy/routes/phpmyadmin.yaml new file mode 100644 index 0000000..a5ccae4 --- /dev/null +++ b/infrastructure/gateway/envoy/routes/phpmyadmin.yaml @@ -0,0 +1,32 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: phpmyadmin + namespace: phpmyadmin +spec: + parentRefs: + - name: public-gateway + namespace: apps + hostnames: + - "www.symcrest.com" + rules: + - matches: + - path: + type: Exact + value: /services/studio/phpmyadmin + filters: + - type: RequestRedirect + requestRedirect: + scheme: https + path: + type: ReplaceFullPath + replaceFullPath: /services/studio/phpmyadmin/ + statusCode: 301 + + - matches: + - path: + type: PathPrefix + value: /services/studio/phpmyadmin/ + backendRefs: + - name: phpmyadmin + port: 80 diff --git a/infrastructure/namespaces/data-namespaces.yaml b/infrastructure/namespaces/data-namespaces.yaml index f4cade0..7401af4 100644 --- a/infrastructure/namespaces/data-namespaces.yaml +++ b/infrastructure/namespaces/data-namespaces.yaml @@ -8,3 +8,8 @@ kind: Namespace metadata: name: pgadmin +--- +apiVersion: v1 +kind: Namespace +metadata: + name: phpmyadmin diff --git a/infrastructure/network-policies/platform-services/mysql-ingress.yaml b/infrastructure/network-policies/platform-services/mysql-ingress.yaml index 9671fa8..cf1b122 100644 --- a/infrastructure/network-policies/platform-services/mysql-ingress.yaml +++ b/infrastructure/network-policies/platform-services/mysql-ingress.yaml @@ -11,6 +11,8 @@ spec: - fromEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: leantime-poc + - matchLabels: + k8s:io.kubernetes.pod.namespace: phpmyadmin toPorts: - ports: - port: "3306" diff --git a/rendered/phpmyadmin/phpmyadmin.yaml b/rendered/phpmyadmin/phpmyadmin.yaml new file mode 100644 index 0000000..1fef53a --- /dev/null +++ b/rendered/phpmyadmin/phpmyadmin.yaml @@ -0,0 +1,73 @@ +--- +# Source: phpmyadmin/templates/pvc.yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: phpmyadmin-sessions + namespace: phpmyadmin +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 1Gi +--- +# Source: phpmyadmin/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: phpmyadmin + namespace: phpmyadmin +spec: + selector: + app: phpmyadmin + ports: + - name: http + port: 80 + targetPort: http +--- +# Source: phpmyadmin/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: phpmyadmin + namespace: phpmyadmin +spec: + replicas: 1 + selector: + matchLabels: + app: phpmyadmin + template: + metadata: + labels: + app: phpmyadmin + spec: + nodeSelector: + workload: app + + containers: + - name: phpmyadmin + image: "phpmyadmin:5.2.3" + imagePullPolicy: IfNotPresent + + ports: + - name: http + containerPort: 80 + + env: + - name: PMA_HOST + value: "platform-mysql.platform-services.svc.cluster.local" + - name: PMA_PORT + value: "3306" + - name: PMA_ABSOLUTE_URI + value: "https://www.symcrest.com/services/studio/phpmyadmin/" + + volumeMounts: + - name: sessions + mountPath: /sessions + + volumes: + - name: sessions + persistentVolumeClaim: + claimName: phpmyadmin-sessions