mirror of
https://github.com/rancher/rke.git
synced 2025-04-27 11:21:08 +00:00
Merge pull request #2346 from nickgerace/master-ingress
Set default http backend to be optional
This commit is contained in:
commit
b0ade73b59
@ -37,7 +37,6 @@ const (
|
||||
UserAddonJobName = "rke-user-addon-deploy-job"
|
||||
UserAddonIncludeJobName = "rke-user-includes-addons-deploy-job"
|
||||
MetricsServerAddonResourceName = "rke-metrics-addon"
|
||||
NginxIngressAddonAppName = "ingress-nginx"
|
||||
KubeDNSAddonAppName = "kube-dns"
|
||||
KubeDNSAutoscalerAppName = "kube-dns-autoscaler"
|
||||
CoreDNSAutoscalerAppName = "coredns-autoscaler"
|
||||
@ -47,6 +46,10 @@ const (
|
||||
CoreDNSProvider = "coredns"
|
||||
KubeDNSProvider = "kube-dns"
|
||||
Nodelocal = "nodelocal"
|
||||
|
||||
NginxIngressAddonAppName = "ingress-nginx"
|
||||
NginxIngressAddonDefaultBackendName = "default-http-backend"
|
||||
NginxIngressAddonDefaultBackendNamespace = "ingress-nginx"
|
||||
)
|
||||
|
||||
var DNSProviders = []string{KubeDNSProvider, CoreDNSProvider}
|
||||
@ -66,6 +69,7 @@ type ingressOptions struct {
|
||||
HTTPPort int
|
||||
HTTPSPort int
|
||||
NetworkMode string
|
||||
DefaultBackend bool
|
||||
UpdateStrategy *appsv1.DaemonSetUpdateStrategy
|
||||
Tolerations []v1.Toleration
|
||||
}
|
||||
@ -557,7 +561,6 @@ func (c *Cluster) deployIngress(ctx context.Context, data map[string]interface{}
|
||||
if err := c.doAddonDelete(ctx, IngressAddonResourceName, false); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Infof(ctx, "[ingress] ingress controller removed successfully")
|
||||
} else {
|
||||
log.Infof(ctx, "[ingress] ingress controller is disabled, skipping ingress controller")
|
||||
@ -579,6 +582,7 @@ func (c *Cluster) deployIngress(ctx context.Context, data map[string]interface{}
|
||||
HTTPPort: c.Ingress.HTTPPort,
|
||||
HTTPSPort: c.Ingress.HTTPSPort,
|
||||
NetworkMode: c.Ingress.NetworkMode,
|
||||
DefaultBackend: *c.Ingress.DefaultBackend,
|
||||
UpdateStrategy: &appsv1.DaemonSetUpdateStrategy{
|
||||
Type: c.Ingress.UpdateStrategy.Strategy,
|
||||
RollingUpdate: c.Ingress.UpdateStrategy.RollingUpdate,
|
||||
@ -612,9 +616,26 @@ func (c *Cluster) deployIngress(ctx context.Context, data map[string]interface{}
|
||||
return fmt.Errorf("Failed to apply default PodSecurityPolicy ClusterRole and ClusterRoleBinding: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// After deployment of the new ingress controller based on the update strategy, remove the default backend as requested.
|
||||
if !ingressConfig.DefaultBackend {
|
||||
log.Infof(ctx, "[ingress] removing default backend service and deployment if they exist")
|
||||
kubeClient, err := k8s.NewClient(c.LocalKubeConfigPath, c.K8sWrapTransport)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = k8s.DeleteServiceIfExists(ctx, kubeClient, NginxIngressAddonDefaultBackendName, NginxIngressAddonDefaultBackendNamespace); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = k8s.DeleteDeploymentIfExists(ctx, kubeClient, NginxIngressAddonDefaultBackendName, NginxIngressAddonDefaultBackendNamespace); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
log.Infof(ctx, "[ingress] ingress controller %s deployed successfully", c.Ingress.Provider)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cluster) removeDNSProvider(ctx context.Context, dnsprovider string) error {
|
||||
AddonJobExists, err := addons.AddonJobExists(getAddonResourceName(dnsprovider)+"-deploy-job", c.LocalKubeConfigPath, c.K8sWrapTransport)
|
||||
if err != nil {
|
||||
|
@ -141,6 +141,7 @@ var (
|
||||
}
|
||||
DefaultClusterProportionalAutoscalerLinearParams = v3.LinearAutoscalerParams{CoresPerReplica: 128, NodesPerReplica: 4, Min: 1, PreventSinglePointFailure: true}
|
||||
DefaultMonitoringAddonReplicas = int32(1)
|
||||
DefaultDefaultBackend = true
|
||||
)
|
||||
|
||||
type ExternalFlags struct {
|
||||
@ -808,6 +809,9 @@ func (c *Cluster) setAddonsDefaults() {
|
||||
c.Ingress.HTTPSPort = DefaultHTTPSPort
|
||||
}
|
||||
|
||||
if c.Ingress.DefaultBackend == nil {
|
||||
c.Ingress.DefaultBackend = &DefaultDefaultBackend
|
||||
}
|
||||
}
|
||||
|
||||
func setDaemonsetAddonDefaults(updateStrategy *v3.DaemonSetUpdateStrategy) *v3.DaemonSetUpdateStrategy {
|
||||
|
17
k8s/deployment.go
Normal file
17
k8s/deployment.go
Normal file
@ -0,0 +1,17 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
)
|
||||
|
||||
func DeleteDeploymentIfExists(ctx context.Context, k8sClient *kubernetes.Clientset, name, namespace string) error {
|
||||
err := k8sClient.AppsV1().Deployments(namespace).Delete(ctx, name, metav1.DeleteOptions{})
|
||||
if err != nil && !errors.IsNotFound(err) {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
17
k8s/service.go
Normal file
17
k8s/service.go
Normal file
@ -0,0 +1,17 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
)
|
||||
|
||||
func DeleteServiceIfExists(ctx context.Context, k8sClient *kubernetes.Clientset, name, namespace string) error {
|
||||
err := k8sClient.CoreV1().Services(namespace).Delete(ctx, name, metav1.DeleteOptions{})
|
||||
if err != nil && !errors.IsNotFound(err) {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
@ -443,6 +443,8 @@ type IngressConfig struct {
|
||||
NetworkMode string `yaml:"network_mode" json:"networkMode,omitempty"`
|
||||
// Tolerations for Deployments
|
||||
Tolerations []v1.Toleration `yaml:"tolerations" json:"tolerations,omitempty"`
|
||||
// Enable or disable nginx default-http-backend
|
||||
DefaultBackend *bool `yaml:"default_backend" json:"defaultBackend,omitempty" norman:"default=true"`
|
||||
}
|
||||
|
||||
type ExtraEnv struct {
|
||||
|
@ -858,6 +858,11 @@ func (in *IngressConfig) DeepCopyInto(out *IngressConfig) {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
if in.DefaultBackend != nil {
|
||||
in, out := &in.DefaultBackend, &out.DefaultBackend
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user