apiVersion: v1 kind: Namespace metadata: name: tools labels: name: tools --- apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: namespace: tools name: letsencrypt-plantuml-server spec: acme: email: me@adrien.run server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-plantuml-server solvers: - http01: ingress: class: traefik --- apiVersion: apps/v1 kind: Deployment metadata: namespace: tools name: plantuml-server labels: app: plantuml-server spec: replicas: 1 selector: matchLabels: app: plantuml-server template: metadata: labels: app: plantuml-server spec: containers: - name: plantuml-server image: plantuml/plantuml-server:latest ports: - name: web containerPort: 8080 --- apiVersion: v1 kind: Service metadata: namespace: tools name: plantuml-server labels: app: plantuml-server spec: ports: - name: web port: 8080 targetPort: web selector: app: plantuml-server --- apiVersion: traefik.containo.us/v1alpha1 kind: Middleware metadata: namespace: tools name: websecure-redirect spec: redirectScheme: scheme: https permanent: true --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: tools name: plantuml-server-web-ingress annotations: traefik.ingress.kubernetes.io/router.entrypoints: web traefik.ingress.kubernetes.io/router.middlewares: default-websecure-redirect@kubernetescrd spec: rules: - host: plantuml.tools.adrien.run http: paths: - path: / pathType: Prefix backend: service: name: plantuml-server port: name: web --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: tools name: plantuml-server-websecure-ingress annotations: cert-manager.io/cluster-issuer: letsencrypt-plantuml-server traefik.ingress.kubernetes.io/router.entrypoints: websecure spec: tls: - hosts: - plantuml.tools.adrien.run secretName: tls-plantuml-server-ingress rules: - host: plantuml.tools.adrien.run http: paths: - path: / pathType: Prefix backend: service: name: plantuml-server port: name: web --- apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-dicebear-api-server namespace: tools spec: acme: email: me@adrien.run server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-dicebear-api-server solvers: - http01: ingress: class: traefik --- apiVersion: apps/v1 kind: Deployment metadata: namespace: tools name: dicebear-api labels: app: dicebear-api spec: replicas: 1 selector: matchLabels: app: dicebear-api template: metadata: labels: app: dicebear-api spec: containers: - name: dicebear-api image: dicebear/api:latest ports: - name: web containerPort: 3000 --- apiVersion: v1 kind: Service metadata: namespace: tools name: dicebear-api labels: app: dicebear-api spec: ports: - name: web port: 3000 targetPort: web selector: app: dicebear-api --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: tools name: dicebear-api-web-ingress annotations: traefik.ingress.kubernetes.io/router.entrypoints: web traefik.ingress.kubernetes.io/router.middlewares: default-websecure-redirect@kubernetescrd spec: rules: - host: dicebear.tools.adrien.run http: paths: - path: / pathType: Prefix backend: service: name: dicebear-api port: name: web --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: tools name: dicebear-api-websecure-ingress annotations: cert-manager.io/cluster-issuer: letsencrypt-dicebear-api-server traefik.ingress.kubernetes.io/router.entrypoints: websecure spec: tls: - hosts: - dicebear.tools.adrien.run secretName: tls-dicebear-api-server-ingress rules: - host: dicebear.tools.adrien.run http: paths: - path: / pathType: Prefix backend: service: name: dicebear-api port: name: web