102 lines
2.1 KiB
Go
102 lines
2.1 KiB
Go
|
package models
|
||
|
|
||
|
import "strconv"
|
||
|
|
||
|
// apiVersion: networking.k8s.io/v1
|
||
|
// kind: Ingress
|
||
|
// metadata:
|
||
|
// name: example-ingress
|
||
|
// namespace: argo
|
||
|
// annotations:
|
||
|
// traefik.ingress.kubernetes.io/router.entrypoints: web # Utilisation de l'entrypoint HTTP standard
|
||
|
// spec:
|
||
|
// rules:
|
||
|
// - http:
|
||
|
// paths:
|
||
|
// - path: /dtf
|
||
|
// pathType: Prefix
|
||
|
// backend:
|
||
|
// service:
|
||
|
// name: workflow-service-qtjk2
|
||
|
// port:
|
||
|
// number: 80
|
||
|
|
||
|
var ingress_manifest = &Manifest{
|
||
|
ApiVersion: "networking.k8s.io/v1",
|
||
|
Kind: "Ingress",
|
||
|
Metadata: Metadata{
|
||
|
GenerateName: "ingress-argo-",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
type Ingress struct {
|
||
|
ApiVersion string `yaml:"apiVersion,omitempty"`
|
||
|
Kind string `yaml:"kind,omitempty"`
|
||
|
Metadata Metadata `yaml:"metadata,omitempty"`
|
||
|
Spec IngressSpec `yaml:"spec,omitempty"`
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
type IngressSpec struct {
|
||
|
Rules []Rule `yaml:"rules,omitempty"`
|
||
|
}
|
||
|
|
||
|
type Rule struct {
|
||
|
HTTP HTTP `yaml:"http,omitempty"`
|
||
|
}
|
||
|
|
||
|
type HTTP struct {
|
||
|
Paths []Path `yaml:"paths,omitempty"`
|
||
|
}
|
||
|
|
||
|
type Path struct {
|
||
|
Path string `yaml:"path,omitempty"`
|
||
|
PathType string `yaml:"pathType,omitempty"`
|
||
|
Backend Backend `yaml:"backend,omitempty"`
|
||
|
}
|
||
|
|
||
|
type Backend struct {
|
||
|
ServiceName string `yaml:"serviceName,omitempty"`
|
||
|
ServicePort int64 `yaml:"servicePort,omitempty"`
|
||
|
}
|
||
|
|
||
|
func NewIngress(contract map[string]map[string]string, serviceName string) Ingress {
|
||
|
new_ingr := Ingress{
|
||
|
ApiVersion: "networking.k8s.io/v1",
|
||
|
Kind: "Ingress",
|
||
|
Metadata: Metadata{
|
||
|
GenerateName: "ingress-argo-",
|
||
|
},
|
||
|
Spec: IngressSpec{
|
||
|
Rules: []Rule{
|
||
|
{
|
||
|
HTTP: HTTP{
|
||
|
Paths: []Path{},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for port_to_reverse_str, translations := range contract{
|
||
|
|
||
|
port, _ := strconv.ParseInt(port_to_reverse_str,10,64)
|
||
|
|
||
|
port_reverse := Path{
|
||
|
Path: translations["reverse"],
|
||
|
PathType: "Prefix",
|
||
|
Backend: Backend{
|
||
|
ServiceName: serviceName,
|
||
|
ServicePort:port,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
new_ingr.Spec.Rules[0].HTTP.Paths = append(new_ingr.Spec.Rules[0].HTTP.Paths, port_reverse)
|
||
|
|
||
|
}
|
||
|
|
||
|
return new_ingr
|
||
|
}
|
||
|
|