86 lines
2.3 KiB
Go
86 lines
2.3 KiB
Go
package controllers
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/util/intstr"
|
|
ctrl "sigs.k8s.io/controller-runtime"
|
|
|
|
seaweedv1 "github.com/seaweedfs/seaweedfs-operator/api/v1"
|
|
)
|
|
|
|
func (r *SeaweedReconciler) createAllIngress(m *seaweedv1.Seaweed) *extensionsv1beta1.Ingress {
|
|
labels := labelsForIngress(m.Name)
|
|
|
|
dep := &extensionsv1beta1.Ingress{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: m.Name + "-ingress",
|
|
Namespace: m.Namespace,
|
|
Labels: labels,
|
|
},
|
|
Spec: extensionsv1beta1.IngressSpec{
|
|
// TLS: ingressSpec.TLS,
|
|
Rules: []extensionsv1beta1.IngressRule{
|
|
{
|
|
Host: "filer." + *m.Spec.HostSuffix,
|
|
IngressRuleValue: extensionsv1beta1.IngressRuleValue{
|
|
HTTP: &extensionsv1beta1.HTTPIngressRuleValue{
|
|
Paths: []extensionsv1beta1.HTTPIngressPath{
|
|
{
|
|
Path: "/",
|
|
Backend: extensionsv1beta1.IngressBackend{
|
|
ServiceName: m.Name + "-filer",
|
|
ServicePort: intstr.FromInt(seaweedv1.FilerHTTPPort),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
Host: "s3." + *m.Spec.HostSuffix,
|
|
IngressRuleValue: extensionsv1beta1.IngressRuleValue{
|
|
HTTP: &extensionsv1beta1.HTTPIngressRuleValue{
|
|
Paths: []extensionsv1beta1.HTTPIngressPath{
|
|
{
|
|
Path: "/",
|
|
Backend: extensionsv1beta1.IngressBackend{
|
|
ServiceName: m.Name + "-s3",
|
|
ServicePort: intstr.FromInt(seaweedv1.FilerS3Port),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
// add ingress for volume servers
|
|
for i := 0; i < int(m.Spec.Volume.Replicas); i++ {
|
|
dep.Spec.Rules = append(dep.Spec.Rules, extensionsv1beta1.IngressRule{
|
|
Host: fmt.Sprintf("%s-volume-%d.%s", m.Name, i, *m.Spec.HostSuffix),
|
|
IngressRuleValue: extensionsv1beta1.IngressRuleValue{
|
|
HTTP: &extensionsv1beta1.HTTPIngressRuleValue{
|
|
Paths: []extensionsv1beta1.HTTPIngressPath{
|
|
{
|
|
Path: "/",
|
|
Backend: extensionsv1beta1.IngressBackend{
|
|
ServiceName: fmt.Sprintf("%s-volume-%d", m.Name, i),
|
|
ServicePort: intstr.FromInt(seaweedv1.VolumeHTTPPort),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
// Set master instance as the owner and controller
|
|
ctrl.SetControllerReference(m, dep, r.Scheme)
|
|
return dep
|
|
}
|