in pkg/controller/ingress/ingress_controller.go [586:618]
func (r *ReconcileIngress) updateReverseProxy(instance *extensionsv1beta1.Ingress) (*corev1.Service, error) {
objects := r.buildReverseProxyResources(instance)
for _, object := range objects {
if err := controllerutil.SetControllerReference(instance, object, r.scheme); err != nil {
return nil, err
}
runtimeObject := object.(runtime.Object)
err := r.Get(context.TODO(), k8stypes.NamespacedName{Name: object.GetName(), Namespace: object.GetNamespace()}, runtimeObject)
switch errors.IsNotFound(err) {
case true:
r.log.Info("creating reverse proxy resource", zap.String("gvk", runtimeObject.GetObjectKind().GroupVersionKind().String()), zap.String("name", object.GetName()))
if err := r.Create(context.TODO(), runtimeObject); err != nil {
return nil, err
}
case false:
r.log.Info("reverse proxy resource already exists, updating", zap.String("gvk", runtimeObject.GetObjectKind().GroupVersionKind().String()), zap.String("name", object.GetName()))
if err := r.Update(context.TODO(), runtimeObject); err != nil {
return nil, err
}
}
}
r.log.Info("fetching proxy service details")
svc := &corev1.Service{}
if err := r.Get(context.TODO(), k8stypes.NamespacedName{Name: createReverseProxyResourceName(instance.Name), Namespace: instance.Namespace}, svc); err != nil {
r.log.Error("unable to fetch proxy service", zap.Error(err))
return nil, err
}
return svc, nil
}