--- # ConfigMaps - name: ConfigMap | uyuni-config kubernetes.core.k8s: api_version: v1 kind: ConfigMap name: uyuni-config namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "labels": { "app.kubernetes.io/part-of": "uyuni" }, "name": "uyuni-config", "namespace": "{{ uyuni_namespace }}" }, "data": { "fqdn": "{{ uyuni_helm_values.global.fqdn }}", "email": "{{ uyuni_helm_values.server.email }}", "db_host": "db", "db_port": "5432", "db_name": "{{ uyuni_helm_values.db.internal.name }}", "reportdb_host": "reportdb", "reportdb_port": "5432", "reportdb_name": "reportdb" } } state: present # PersistentVolumeClaims - name: PersistentVolumeClaim | ca-certs kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: ca-certs namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "ca-certs", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Mi" } } } } state: present - name: PersistentVolumeClaim | etc-apache2 kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-apache2 namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-apache2", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | etc-cobbler kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-cobbler namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-cobbler", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | etc-postfix kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-postfix namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-postfix", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | etc-rhn kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-rhn namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-rhn", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | etc-salt kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-salt namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-salt", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | etc-sssd kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-sssd namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-sssd", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | etc-sysconfig kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-sysconfig namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-sysconfig", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "20Mi" } } } } state: present - name: PersistentVolumeClaim | etc-systemd-multi kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-systemd-multi namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-systemd-multi", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | etc-systemd-sockets kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-systemd-sockets namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-systemd-sockets", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | etc-tomcat kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: etc-tomcat namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "etc-tomcat", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | run-salt-master kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: run-salt-master namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "run-salt-master", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Mi" } } } } state: present - name: PersistentVolumeClaim | srv-formulametadata kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: srv-formulametadata namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "srv-formulametadata", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Mi" } } } } state: present - name: PersistentVolumeClaim | srv-pillar kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: srv-pillar namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "srv-pillar", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Mi" } } } } state: present - name: PersistentVolumeClaim | srv-salt kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: srv-salt namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "srv-salt", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Mi" } } } } state: present - name: PersistentVolumeClaim | srv-spacewalk kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: srv-spacewalk namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "srv-spacewalk", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Mi" } } } } state: present - name: PersistentVolumeClaim | srv-susemanager kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: srv-susemanager namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "srv-susemanager", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "1Mi" } } } } state: present - name: PersistentVolumeClaim | srv-tftpboot kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: srv-tftpboot namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "srv-tftpboot", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "300Mi" } } } } state: present - name: PersistentVolumeClaim | srv-www kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: srv-www namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "srv-www", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "100Gi" } } } } state: present - name: PersistentVolumeClaim | var-cache kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: var-cache namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "var-cache", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Gi" } } } } state: present - name: PersistentVolumeClaim | var-cobbler kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: var-cobbler namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "var-cobbler", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Mi" } } } } state: present - name: PersistentVolumeClaim | var-log kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: var-log namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "var-log", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "2Gi" } } } } state: present - name: PersistentVolumeClaim | var-pgsql18 kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: var-pgsql18 namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "var-pgsql18", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "50Gi" } } } } state: present - name: PersistentVolumeClaim | var-salt kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: var-salt namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "var-salt", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Mi" } } } } state: present - name: PersistentVolumeClaim | var-search kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: var-search namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "var-search", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "10Gi" } } } } state: present - name: PersistentVolumeClaim | var-spacewalk kubernetes.core.k8s: api_version: v1 kind: PersistentVolumeClaim name: var-spacewalk namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "name": "var-spacewalk", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "100Gi" } } } } state: present # Services - name: Service | cobbler kubernetes.core.k8s: api_version: v1 kind: Service name: cobbler namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "Service", "metadata": { "labels": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "name": "cobbler", "namespace": "{{ uyuni_namespace }}" }, "spec": { "ports": [ { "name": "cobbler", "port": 25151 } ], "selector": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "type": "ClusterIP" } } state: present - name: Service | db kubernetes.core.k8s: api_version: v1 kind: Service name: db namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "Service", "metadata": { "labels": { "app.kubernetes.io/component": "db", "app.kubernetes.io/part-of": "uyuni" }, "name": "db", "namespace": "{{ uyuni_namespace }}" }, "spec": { "ports": [ { "name": "pgsql", "port": 5432 } ], "selector": { "app.kubernetes.io/component": "db", "app.kubernetes.io/part-of": "uyuni" }, "type": "ClusterIP" } } state: present - name: Service | reportdb kubernetes.core.k8s: api_version: v1 kind: Service name: reportdb namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "Service", "metadata": { "labels": { "app.kubernetes.io/component": "db", "app.kubernetes.io/part-of": "uyuni" }, "name": "reportdb", "namespace": "{{ uyuni_namespace }}" }, "spec": { "ports": [ { "name": "pgsql", "port": 5432 } ], "selector": { "app.kubernetes.io/component": "db", "app.kubernetes.io/part-of": "uyuni" }, "type": "ClusterIP" } } state: present - name: Service | salt kubernetes.core.k8s: api_version: v1 kind: Service name: salt namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "Service", "metadata": { "labels": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "name": "salt", "namespace": "{{ uyuni_namespace }}" }, "spec": { "ports": [ { "name": "publish", "port": 4505 }, { "name": "request", "port": 4506 } ], "selector": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "type": "ClusterIP" } } state: present - name: Service | taskomatic-internal kubernetes.core.k8s: api_version: v1 kind: Service name: taskomatic-internal namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "Service", "metadata": { "labels": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "name": "taskomatic-internal", "namespace": "{{ uyuni_namespace }}" }, "spec": { "ports": [ { "name": "jmx", "port": 5557 }, { "name": "mtrx", "port": 9800 } ], "selector": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "type": "ClusterIP" } } state: present - name: Service | tomcat-internal kubernetes.core.k8s: api_version: v1 kind: Service name: tomcat-internal namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "Service", "metadata": { "labels": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "name": "tomcat-internal", "namespace": "{{ uyuni_namespace }}" }, "spec": { "ports": [ { "name": "node-exporter", "port": 9100 }, { "name": "jmx", "port": 5556 }, { "name": "pgsql-exporter", "port": 9187 } ], "selector": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "type": "ClusterIP" } } state: present - name: Service | web kubernetes.core.k8s: api_version: v1 kind: Service name: web namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "v1", "kind": "Service", "metadata": { "labels": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "name": "web", "namespace": "{{ uyuni_namespace }}" }, "spec": { "ports": [ { "name": "http", "port": 80, "protocol": "TCP", "targetPort": 80 } ], "selector": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "type": "ClusterIP" } } state: present # Deployments - name: Deployment | db kubernetes.core.k8s: api_version: apps/v1 kind: Deployment name: db namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "creationTimestamp": null, "labels": { "app.kubernetes.io/component": "db", "app.kubernetes.io/part-of": "uyuni" }, "name": "db", "namespace": "{{ uyuni_namespace }}" }, "spec": { "replicas": 1, "selector": { "matchLabels": { "app.kubernetes.io/component": "db", "app.kubernetes.io/part-of": "uyuni" } }, "strategy": { "type": "Recreate" }, "template": { "metadata": { "labels": { "app.kubernetes.io/component": "db", "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "containers": [ { "env": [ { "name": "TZ", "value": "Etc/UTC" }, { "name": "POSTGRES_USER", "valueFrom": { "secretKeyRef": { "key": "username", "name": "db-admin-credentials" } } }, { "name": "POSTGRES_PASSWORD", "valueFrom": { "secretKeyRef": { "key": "password", "name": "db-admin-credentials" } } }, { "name": "MANAGER_USER", "valueFrom": { "secretKeyRef": { "key": "username", "name": "db-credentials" } } }, { "name": "MANAGER_PASS", "valueFrom": { "secretKeyRef": { "key": "password", "name": "db-credentials" } } }, { "name": "REPORT_DB_USER", "valueFrom": { "secretKeyRef": { "key": "username", "name": "reportdb-credentials" } } }, { "name": "REPORT_DB_PASS", "valueFrom": { "secretKeyRef": { "key": "password", "name": "reportdb-credentials" } } } ], "image": "registry.opensuse.org/uyuni/server-postgresql:latest", "imagePullPolicy": "IfNotPresent", "name": "db", "volumeMounts": [ { "mountPath": "/var/lib/pgsql/data", "name": "var-pgsql" }, { "mountPath": "/etc/pki", "name": "tls-secret" } ] } ], "securityContext": { "fsGroup": 999 }, "volumes": [ { "name": "var-pgsql", "persistentVolumeClaim": { "claimName": "var-pgsql18" } }, { "name": "tls-secret", "secret": { "items": [ { "key": "tls.crt", "path": "tls/certs/spacewalk.crt" }, { "key": "tls.key", "mode": 256, "path": "tls/private/pg-spacewalk.key" }, { "key": "ca.crt", "path": "trust/anchors/LOCAL-RHN-ORG-TRUSTED-SSL-CERT" } ], "secretName": "db-cert" } } ] } } } } state: present - name: Deployment | uyuni kubernetes.core.k8s: api_version: apps/v1 kind: Deployment name: uyuni namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "labels": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" }, "name": "uyuni", "namespace": "{{ uyuni_namespace }}" }, "spec": { "replicas": 1, "selector": { "matchLabels": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" } }, "strategy": { "type": "Recreate" }, "template": { "metadata": { "labels": { "app.kubernetes.io/component": "server", "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "containers": [ { "env": [ { "name": "container", "value": "oci" }, { "name": "TZ", "value": "Etc/UTC" }, { "name": "ADMIN_USER", "valueFrom": { "secretKeyRef": { "key": "username", "name": "admin-credentials", "optional": false } } }, { "name": "ADMIN_PASS", "valueFrom": { "secretKeyRef": { "key": "password", "name": "admin-credentials", "optional": false } } }, { "name": "MANAGER_USER", "valueFrom": { "secretKeyRef": { "key": "username", "name": "db-credentials", "optional": false } } }, { "name": "MANAGER_PASS", "valueFrom": { "secretKeyRef": { "key": "password", "name": "db-credentials", "optional": false } } }, { "name": "REPORT_DB_USER", "valueFrom": { "secretKeyRef": { "key": "username", "name": "reportdb-credentials", "optional": false } } }, { "name": "REPORT_DB_PASS", "valueFrom": { "secretKeyRef": { "key": "password", "name": "reportdb-credentials", "optional": false } } }, { "name": "MANAGER_DB_NAME", "value": "{{ uyuni_helm_values.db.internal.name }}" }, { "name": "MANAGER_DB_HOST", "value": "db" }, { "name": "MANAGER_DB_CA_CERT", "value": "/etc/pki/trust/anchors/DB-RHN-ORG-TRUSTED-SSL-CERT" }, { "name": "MANAGER_DB_PORT", "value": "5432" }, { "name": "EXTERNALDB_PROVIDER" }, { "name": "ISS_PARENT" }, { "name": "REPORT_DB_NAME", "value": "reportdb" }, { "name": "REPORT_DB_HOST", "value": "reportdb" }, { "name": "REPORT_DB_CA_CERT", "value": "/etc/pki/trust/anchors/DB-RHN-ORG-TRUSTED-SSL-CERT" }, { "name": "REPORT_DB_PORT", "value": "5432" }, { "name": "MANAGER_ADMIN_EMAIL", "valueFrom": { "configMapKeyRef": { "key": "email", "name": "uyuni-config", "optional": false } } }, { "name": "MANAGER_MAIL_FROM", "valueFrom": { "configMapKeyRef": { "key": "email", "name": "uyuni-config", "optional": false } } }, { "name": "UYUNI_HOSTNAME", "valueFrom": { "configMapKeyRef": { "key": "fqdn", "name": "uyuni-config", "optional": false } } } ], "image": "registry.opensuse.org/uyuni/server:latest", "imagePullPolicy": "IfNotPresent", "lifecycle": { "preStop": { "exec": { "command": [ "/bin/sh", "-c", "spacewalk-service stop" ] } } }, "name": "uyuni", "securityContext": { "capabilities": { "add": [ "SYS_ADMIN" ] }, "seLinuxOptions": { "level": "s0" } }, "ports": [ { "containerPort": 80 }, { "containerPort": 4505 }, { "containerPort": 4506 }, { "containerPort": 25151 }, { "containerPort": 9100 }, { "containerPort": 5556 }, { "containerPort": 5557 }, { "containerPort": 9187 }, { "containerPort": 9800 } ], "startupProbe": { "exec": { "command": [ "/usr/bin/startup-check.sh" ] }, "periodSeconds": 10, "timeoutSeconds": 5, "failureThreshold": 3600 }, "livenessProbe": { "exec": { "command": [ "/usr/bin/liveness-check.sh" ] }, "timeoutSeconds": 5, "failureThreshold": 5, "periodSeconds": 60 }, "readinessProbe": { "httpGet": { "path": "/rhn/manager/api/api/getVersion", "port": 80, "scheme": "HTTP" }, "periodSeconds": 10, "successThreshold": 1, "initialDelaySeconds": 120 }, "volumeMounts": [ { "mountPath": "/var/lib/cobbler", "name": "var-cobbler" }, { "mountPath": "/var/lib/rhn/search", "name": "var-search" }, { "mountPath": "/var/lib/salt", "name": "var-salt" }, { "mountPath": "/var/cache", "name": "var-cache" }, { "mountPath": "/var/spacewalk", "name": "var-spacewalk" }, { "mountPath": "/var/log", "name": "var-log" }, { "mountPath": "/srv/salt", "name": "srv-salt" }, { "mountPath": "/srv/www/", "name": "srv-www" }, { "mountPath": "/srv/tftpboot", "name": "srv-tftpboot" }, { "mountPath": "/srv/formula_metadata", "name": "srv-formulametadata" }, { "mountPath": "/srv/pillar", "name": "srv-pillar" }, { "mountPath": "/srv/susemanager", "name": "srv-susemanager" }, { "mountPath": "/srv/spacewalk", "name": "srv-spacewalk" }, { "mountPath": "/etc/pki/trust/anchors/", "name": "ca-certs" }, { "mountPath": "/run/salt/master", "name": "run-salt-master" }, { "mountPath": "/etc/apache2", "name": "etc-apache2" }, { "mountPath": "/etc/systemd/system/multi-user.target.wants", "name": "etc-systemd-multi" }, { "mountPath": "/etc/systemd/system/sockets.target.wants", "name": "etc-systemd-sockets" }, { "mountPath": "/etc/salt", "name": "etc-salt" }, { "mountPath": "/etc/tomcat", "name": "etc-tomcat" }, { "mountPath": "/etc/cobbler", "name": "etc-cobbler" }, { "mountPath": "/etc/sysconfig", "name": "etc-sysconfig" }, { "mountPath": "/etc/postfix", "name": "etc-postfix" }, { "mountPath": "/etc/sssd", "name": "etc-sssd" }, { "mountPath": "/etc/rhn", "name": "etc-rhn" }, { "mountPath": "/etc/pki/trust/anchors/LOCAL-RHN-ORG-TRUSTED-SSL-CERT", "name": "ca-cert", "readOnly": true, "subPath": "ca.crt" }, { "mountPath": "/usr/share/susemanager/salt/certs/RHN-ORG-TRUSTED-SSL-CERT", "name": "ca-cert", "readOnly": true, "subPath": "ca.crt" }, { "mountPath": "/srv/www/htdocs/pub/RHN-ORG-TRUSTED-SSL-CERT", "name": "ca-cert", "readOnly": true, "subPath": "ca.crt" }, { "mountPath": "/etc/pki/trust/anchors/DB-RHN-ORG-TRUSTED-SSL-CERT", "name": "db-ca-cert", "readOnly": true, "subPath": "ca.crt" }, { "mountPath": "/etc/pki/", "name": "tls" }, { "mountPath": "/run", "name": "run" }, { "mountPath": "/sys/fs/cgroup", "name": "sys-fs-cgroup" } ] } ], "initContainers": [ { "command": [ "sh", "-x", "-c", "# Fill the empty volumes\nfor vol in /var/lib/cobbler \\\n /var/lib/rhn/search \\\n /var/lib/salt \\\n /var/cache \\\n /var/log \\\n /srv/salt \\\n /srv/www \\\n /srv/tftpboot \\\n /srv/formula_metadata \\\n /srv/pillar \\\n /srv/susemanager \\\n /srv/spacewalk \\\n /etc/apache2 \\\n /etc/rhn \\\n /etc/systemd/system/multi-user.target.wants \\\n /etc/systemd/system/sockets.target.wants \\\n /etc/salt \\\n /etc/tomcat \\\n /etc/cobbler \\\n /etc/sysconfig \\\n /etc/postfix \\\n /etc/sssd\ndo\n chown --reference=$vol /mnt$vol;\n chmod --reference=$vol /mnt$vol;\n if [ -z \"$(ls -A /mnt$vol)\" ]; then\n cp -a $vol/. /mnt$vol;\n fi\ndone\n" ], "image": "registry.opensuse.org/uyuni/server:latest", "imagePullPolicy": "IfNotPresent", "name": "init-volumes", "securityContext": { "seLinuxOptions": { "level": "s0" } }, "volumeMounts": [ { "mountPath": "/mnt/var/lib/cobbler", "name": "var-cobbler" }, { "mountPath": "/mnt/var/lib/rhn/search", "name": "var-search" }, { "mountPath": "/mnt/var/lib/salt", "name": "var-salt" }, { "mountPath": "/mnt/var/cache", "name": "var-cache" }, { "mountPath": "/mnt/var/spacewalk", "name": "var-spacewalk" }, { "mountPath": "/mnt/var/log", "name": "var-log" }, { "mountPath": "/mnt/srv/salt", "name": "srv-salt" }, { "mountPath": "/mnt/srv/www/", "name": "srv-www" }, { "mountPath": "/mnt/srv/tftpboot", "name": "srv-tftpboot" }, { "mountPath": "/mnt/srv/formula_metadata", "name": "srv-formulametadata" }, { "mountPath": "/mnt/srv/pillar", "name": "srv-pillar" }, { "mountPath": "/mnt/srv/susemanager", "name": "srv-susemanager" }, { "mountPath": "/mnt/srv/spacewalk", "name": "srv-spacewalk" }, { "mountPath": "/mnt/etc/pki/trust/anchors/", "name": "ca-certs" }, { "mountPath": "/mnt/run/salt/master", "name": "run-salt-master" }, { "mountPath": "/mnt/etc/apache2", "name": "etc-apache2" }, { "mountPath": "/mnt/etc/systemd/system/multi-user.target.wants", "name": "etc-systemd-multi" }, { "mountPath": "/mnt/etc/systemd/system/sockets.target.wants", "name": "etc-systemd-sockets" }, { "mountPath": "/mnt/etc/salt", "name": "etc-salt" }, { "mountPath": "/mnt/etc/tomcat", "name": "etc-tomcat" }, { "mountPath": "/mnt/etc/cobbler", "name": "etc-cobbler" }, { "mountPath": "/mnt/etc/sysconfig", "name": "etc-sysconfig" }, { "mountPath": "/mnt/etc/postfix", "name": "etc-postfix" }, { "mountPath": "/mnt/etc/sssd", "name": "etc-sssd" }, { "mountPath": "/mnt/etc/rhn", "name": "etc-rhn" } ] }, { "command": [ "sh", "-c", "until pg_isready -U $MANAGER_USER -h $MANAGER_DB_HOST -p $MANAGER_DB_PORT -d $MANAGER_DB_NAME; do\n sleep 60\ndone\n\nuntil pg_isready -U $REPORT_DB_USER -h $REPORT_DB_HOST -p $REPORT_DB_PORT -d $REPORT_DB_NAME; do\n sleep 60\ndone\n" ], "env": [ { "name": "MANAGER_DB_HOST", "valueFrom": { "configMapKeyRef": { "key": "db_host", "name": "uyuni-config", "optional": false } } }, { "name": "MANAGER_DB_PORT", "valueFrom": { "configMapKeyRef": { "key": "db_port", "name": "uyuni-config", "optional": false } } }, { "name": "MANAGER_DB_NAME", "valueFrom": { "configMapKeyRef": { "key": "db_name", "name": "uyuni-config", "optional": false } } }, { "name": "MANAGER_USER", "valueFrom": { "secretKeyRef": { "key": "username", "name": "db-credentials", "optional": false } } }, { "name": "REPORT_DB_HOST", "valueFrom": { "configMapKeyRef": { "key": "reportdb_host", "name": "uyuni-config", "optional": false } } }, { "name": "REPORT_DB_PORT", "valueFrom": { "configMapKeyRef": { "key": "reportdb_port", "name": "uyuni-config", "optional": false } } }, { "name": "REPORT_DB_NAME", "valueFrom": { "configMapKeyRef": { "key": "reportdb_name", "name": "uyuni-config", "optional": false } } }, { "name": "REPORT_DB_USER", "valueFrom": { "secretKeyRef": { "key": "username", "name": "reportdb-credentials", "optional": false } } } ], "image": "registry.opensuse.org/uyuni/server:latest", "imagePullPolicy": "IfNotPresent", "name": "db-waiter" } ], "volumes": [ { "name": "var-cobbler", "persistentVolumeClaim": { "claimName": "var-cobbler" } }, { "name": "var-search", "persistentVolumeClaim": { "claimName": "var-search" } }, { "name": "var-salt", "persistentVolumeClaim": { "claimName": "var-salt" } }, { "name": "var-cache", "persistentVolumeClaim": { "claimName": "var-cache" } }, { "name": "var-spacewalk", "persistentVolumeClaim": { "claimName": "var-spacewalk" } }, { "name": "var-log", "persistentVolumeClaim": { "claimName": "var-log" } }, { "name": "srv-salt", "persistentVolumeClaim": { "claimName": "srv-salt" } }, { "name": "srv-www", "persistentVolumeClaim": { "claimName": "srv-www" } }, { "name": "srv-tftpboot", "persistentVolumeClaim": { "claimName": "srv-tftpboot" } }, { "name": "srv-formulametadata", "persistentVolumeClaim": { "claimName": "srv-formulametadata" } }, { "name": "srv-pillar", "persistentVolumeClaim": { "claimName": "srv-pillar" } }, { "name": "srv-susemanager", "persistentVolumeClaim": { "claimName": "srv-susemanager" } }, { "name": "srv-spacewalk", "persistentVolumeClaim": { "claimName": "srv-spacewalk" } }, { "name": "ca-certs", "persistentVolumeClaim": { "claimName": "ca-certs" } }, { "name": "run-salt-master", "persistentVolumeClaim": { "claimName": "run-salt-master" } }, { "name": "etc-apache2", "persistentVolumeClaim": { "claimName": "etc-apache2" } }, { "name": "etc-systemd-multi", "persistentVolumeClaim": { "claimName": "etc-systemd-multi" } }, { "name": "etc-systemd-sockets", "persistentVolumeClaim": { "claimName": "etc-systemd-sockets" } }, { "name": "etc-salt", "persistentVolumeClaim": { "claimName": "etc-salt" } }, { "name": "etc-tomcat", "persistentVolumeClaim": { "claimName": "etc-tomcat" } }, { "name": "etc-cobbler", "persistentVolumeClaim": { "claimName": "etc-cobbler" } }, { "name": "etc-sysconfig", "persistentVolumeClaim": { "claimName": "etc-sysconfig" } }, { "name": "etc-postfix", "persistentVolumeClaim": { "claimName": "etc-postfix" } }, { "name": "etc-sssd", "persistentVolumeClaim": { "claimName": "etc-sssd" } }, { "name": "etc-rhn", "persistentVolumeClaim": { "claimName": "etc-rhn" } }, { "configMap": { "defaultMode": 420, "name": "uyuni-ca" }, "name": "ca-cert" }, { "configMap": { "defaultMode": 420, "name": "db-ca" }, "name": "db-ca-cert" }, { "name": "tls", "secret": { "defaultMode": 420, "items": [ { "key": "tls.crt", "path": "tls/certs/spacewalk.crt" }, { "key": "tls.key", "mode": 256, "path": "tls/private/spacewalk.key" } ], "secretName": "uyuni-cert" } }, { "emptyDir": { "medium": "Memory", "sizeLimit": "256Mi" }, "name": "run" }, { "name": "sys-fs-cgroup", "emptyDir": null } ] } } } } state: present # Ingresses - name: Ingress | uyuni-ingress-ssl kubernetes.core.k8s: api_version: networking.k8s.io/v1 kind: Ingress name: uyuni-ingress-ssl namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "networking.k8s.io/v1", "kind": "Ingress", "metadata": { "creationTimestamp": null, "name": "uyuni-ingress-ssl", "namespace": "{{ uyuni_namespace }}", "annotations": { "traefik.ingress.kubernetes.io/router.tls": "true", "traefik.ingress.kubernetes.io/router.tls.domains.n.main": "{{ uyuni_helm_values.global.fqdn }}", "traefik.ingress.kubernetes.io/router.entrypoints": "websecure", "traefik.ingress.kubernetes.io/router.priority": "100", "traefik.ingress.kubernetes.io/router.middlewares": "uyuni-server-uyuni-strip-prefixes@kubernetescrd" }, "labels": { "app.kubernetes.io/part-of": "uyuni", "app.kubernetes.io/component": "server" } }, "spec": { "ingressClassName": "traefik", "tls": [ { "hosts": [ "{{ uyuni_helm_values.global.fqdn }}" ], "secretName": "uyuni-cert" } ], "rules": [ { "host": "{{ uyuni_helm_values.global.fqdn }}", "http": { "paths": [ { "path": "/postgresql-exporter", "backend": { "service": { "name": "tomcat-internal", "port": { "number": 9187 } } }, "pathType": "Prefix" }, { "path": "/node-exporter", "backend": { "service": { "name": "tomcat-internal", "port": { "number": 9100 } } }, "pathType": "Prefix" }, { "path": "/tasko-exporter", "backend": { "service": { "name": "taskomatic-internal", "port": { "number": 9800 } } }, "pathType": "Prefix" }, { "path": "/tasko-jmx", "backend": { "service": { "name": "taskomatic-internal", "port": { "number": 5557 } } }, "pathType": "Prefix" }, { "path": "/tomcat-jmx", "backend": { "service": { "name": "tomcat-internal", "port": { "number": 5556 } } }, "pathType": "Prefix" } ] } } ] } } state: present - name: Ingress | uyuni-ingress-ssl-redirect kubernetes.core.k8s: api_version: networking.k8s.io/v1 kind: Ingress name: uyuni-ingress-ssl-redirect namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "networking.k8s.io/v1", "kind": "Ingress", "metadata": { "creationTimestamp": null, "name": "uyuni-ingress-ssl-redirect", "namespace": "{{ uyuni_namespace }}", "annotations": { "traefik.ingress.kubernetes.io/router.middlewares": "uyuni-server-uyuni-https-redirect@kubernetescrd", "traefik.ingress.kubernetes.io/router.entrypoints": "web", "traefik.ingress.kubernetes.io/router.priority": "1" }, "labels": { "app.kubernetes.io/part-of": "uyuni", "app.kubernetes.io/component": "server" } }, "spec": { "ingressClassName": "traefik", "rules": [ { "host": "{{ uyuni_helm_values.global.fqdn }}", "http": { "paths": [ { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/", "pathType": "Prefix" } ] } } ] } } state: present - name: Ingress | uyuni-ingress-nossl kubernetes.core.k8s: api_version: networking.k8s.io/v1 kind: Ingress name: uyuni-ingress-nossl namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "networking.k8s.io/v1", "kind": "Ingress", "metadata": { "creationTimestamp": null, "name": "uyuni-ingress-nossl", "namespace": "{{ uyuni_namespace }}", "annotations": { "traefik.ingress.kubernetes.io/router.tls": "false", "traefik.ingress.kubernetes.io/router.entrypoints": "web", "traefik.ingress.kubernetes.io/router.priority": "100", "traefik.ingress.kubernetes.io/router.middlewares": "uyuni-server-uyuni-strip-prefixes@kubernetescrd" }, "labels": { "app.kubernetes.io/part-of": "uyuni", "app.kubernetes.io/component": "server" } }, "spec": { "ingressClassName": "traefik", "rules": [ { "host": "{{ uyuni_helm_values.global.fqdn }}", "http": { "paths": [ { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/pub", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/rhn/kickstart/DownloadFile", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/rhn/common/DownloadFile", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/rhn/rpc/api", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/rpc/api", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/rhn/errors", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/rhn/ty/TinyUrl", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/rhn/websocket", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/rhn/metrics", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/cobbler_api", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/cblr", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/httpboot", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/images", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/cobbler", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/os-images", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/tftp", "pathType": "Prefix" }, { "backend": { "service": { "name": "web", "port": { "number": 80 } } }, "path": "/docs", "pathType": "Prefix" }, { "path": "/postgresql-exporter", "backend": { "service": { "name": "tomcat-internal", "port": { "number": 9187 } } }, "pathType": "Prefix" }, { "path": "/node-exporter", "backend": { "service": { "name": "tomcat-internal", "port": { "number": 9100 } } }, "pathType": "Prefix" }, { "path": "/tasko-exporter", "backend": { "service": { "name": "taskomatic-internal", "port": { "number": 9800 } } }, "pathType": "Prefix" }, { "path": "/tasko-jmx", "backend": { "service": { "name": "taskomatic-internal", "port": { "number": 5557 } } }, "pathType": "Prefix" }, { "path": "/tomcat-jmx", "backend": { "service": { "name": "tomcat-internal", "port": { "number": 5556 } } }, "pathType": "Prefix" } ] } } ] } } state: present # Traefik IngressRouteTCP - name: IngressRouteTCP | reportdb-pgsql-route kubernetes.core.k8s: api_version: traefik.io/v1alpha1 kind: IngressRouteTCP name: reportdb-pgsql-route namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "traefik.io/v1alpha1", "kind": "IngressRouteTCP", "metadata": { "name": "reportdb-pgsql-route", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" }, "annotations": { "kubernetes.io/ingress.class": "traefik" } }, "spec": { "entryPoints": [ "reportdb-pgsql" ], "routes": [ { "match": "HostSNI(`*`)", "services": [ { "name": "reportdb", "port": 5432 } ] } ] } } state: present - name: IngressRouteTCP | salt-publish-route kubernetes.core.k8s: api_version: traefik.io/v1alpha1 kind: IngressRouteTCP name: salt-publish-route namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "traefik.io/v1alpha1", "kind": "IngressRouteTCP", "metadata": { "name": "salt-publish-route", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" }, "annotations": { "kubernetes.io/ingress.class": "traefik" } }, "spec": { "entryPoints": [ "salt-publish" ], "routes": [ { "match": "HostSNI(`*`)", "services": [ { "name": "salt", "port": 4505 } ] } ] } } state: present - name: IngressRouteTCP | salt-request-route kubernetes.core.k8s: api_version: traefik.io/v1alpha1 kind: IngressRouteTCP name: salt-request-route namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "traefik.io/v1alpha1", "kind": "IngressRouteTCP", "metadata": { "name": "salt-request-route", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" }, "annotations": { "kubernetes.io/ingress.class": "traefik" } }, "spec": { "entryPoints": [ "salt-request" ], "routes": [ { "match": "HostSNI(`*`)", "services": [ { "name": "salt", "port": 4506 } ] } ] } } state: present # Traefik Middleware - name: Middleware | uyuni-https-redirect kubernetes.core.k8s: api_version: traefik.io/v1alpha1 kind: Middleware name: uyuni-https-redirect namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "traefik.io/v1alpha1", "kind": "Middleware", "metadata": { "name": "uyuni-https-redirect", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "redirectScheme": { "scheme": "https", "permanent": true } } } state: present - name: Middleware | uyuni-strip-prefixes kubernetes.core.k8s: api_version: traefik.io/v1alpha1 kind: Middleware name: uyuni-strip-prefixes namespace: "{{ uyuni_namespace }}" kubeconfig: "{{ uyuni_kubeconfig }}" definition: { "apiVersion": "traefik.io/v1alpha1", "kind": "Middleware", "metadata": { "name": "uyuni-strip-prefixes", "namespace": "{{ uyuni_namespace }}", "labels": { "app.kubernetes.io/part-of": "uyuni" } }, "spec": { "stripPrefix": { "prefixes": [ "/postgresql-exporter", "/node-exporter", "/tasko-exporter", "/tasko-jmx", "/tomcat-jmx", "/saline" ] } } } state: present