| // k1-specific version of hscloud.libsonnet |
| |
| local kube = import "hscloud.libsonnet"; |
| |
| kube { |
| local top = self, |
| |
| // fix api version (newer k8s) |
| StorageClass(name): kube.StorageClass(name) { |
| apiVersion: 'storage.k8s.io/v1', |
| }, |
| |
| PodDisruptionBudget(name): kube.PodDisruptionBudget(name) { |
| apiVersion: 'policy/v1', |
| }, |
| |
| CronJob(name): kube.CronJob(name) { |
| apiVersion: 'batch/v1', |
| }, |
| |
| CustomResourceDefinition(group, version, kind): kube.CustomResourceDefinition(group, version, kind) { |
| apiVersion: 'apiextensions.k8s.io/v1', |
| }, |
| |
| // fix name_port for newer Ingress compatibility |
| Service(name): kube.Service(name) { |
| local service = self, |
| name_port:: { |
| service: { |
| name: service.metadata.name, |
| port: { number: service.spec.ports[0].port }, |
| }, |
| }, |
| }, |
| |
| // fix api version, add ingressClassName, add pathType |
| Ingress(name): kube.Ingress(name) { |
| local ingress = self, |
| apiVersion: 'networking.k8s.io/v1', |
| spec+: { |
| ingressClassName: 'nginx', |
| rules: [ |
| { |
| host: host, |
| http: { |
| paths: [ |
| { path: '/', pathType: 'ImplementationSpecific', backend: ingress.target.name_port }, |
| ] + [ |
| { pathType: 'ImplementationSpecific' } + path |
| for path in ingress.extraPaths |
| ], |
| }, |
| } |
| for host in ingress.hosts |
| ], |
| }, |
| }, |
| } |