in pkg/controller/ingress/ingress_controller.go [671:715]
func (r *ReconcileIngress) update(instance *extensionsv1beta1.Ingress) error {
network, err := r.fetchNetworkingInfo(instance)
if err != nil {
r.log.Error("unable to fetch networking info", zap.Error(err))
return err
}
r.log.Info("updating proxy")
svc, err := r.updateReverseProxy(instance)
if err != nil {
r.log.Error("error creating proxy resources", zap.Error(err))
return err
}
cfnTemplate := cfn.BuildApiGatewayTemplateFromIngressRule(&cfn.TemplateConfig{
Rule: instance.Spec.Rules[0],
Network: network,
Arns: getArns(instance),
StageName: getStageName(instance),
NodePort: int(svc.Spec.Ports[0].NodePort),
CustomDomainName: getCustomDomainName(instance),
CertificateArn: getCertificateArn(instance),
})
b, err := cfnTemplate.YAML()
if err != nil {
return err
}
if _, err := r.cfnSvc.UpdateStack(&cloudformation.UpdateStackInput{
TemplateBody: aws.String(string(b)),
StackName: aws.String(instance.GetObjectMeta().GetName()),
Capabilities: aws.StringSlice([]string{"CAPABILITY_IAM"}),
Tags: []*cloudformation.Tag{
{
Key: aws.String("managedBy"),
Value: aws.String("aws-apigateway-ingress-controller"),
},
},
}); err != nil {
r.log.Error("unable to fetch proxy service", zap.Error(err))
return err
}
return nil
}