Updating an Application Load Balancer Ingress controller for Managed Service for Kubernetes
ALB Ingress Controller versions 0.2.0 and later are not compatible with versions 0.1.x. This causes limitations associated with backend groups.
One of the ways to create a backend group is to specify rules in the Ingress
resource. In ALB Ingress Controller versions prior to 0.2.0, each backend group corresponds to a bundle of host
, http.paths.path
, and http.paths.pathType
parameters. In versions 0.2.0 and later, the backend group corresponds to the backend.service
parameter in the Ingress
resource. This parameter specifies Kubernetes. For more information about parameter values and the Ingress
resource configuration, see the Kubernetes documentation
If upgrading the ALB Ingress Controller from version 0.1.x to version 0.2.0 or later, check whether the following cases apply to your Ingress
resource groups (groups are formed according to the ingress.alb.yc.io/group-name
annotation value in the Ingress
resources):
-
The configurations feature the same values for the
host
,http.paths.path
, andhttp.paths.pathType
parameters, while different Kubernetes services are specified in thebackend.service.name
parameters. In this case, recreate the backend groups using the HttpBackendGroup objects. -
There is one Kubernetes service per multiple bundles of the
host
,http.paths.path
, andhttp.paths.pathType
parameters. In this case, check if the backend settings in thebackend
parameter are different. For example, one group ofIngress
resources can establish connections using the gRPC protocol, while another group can establish connections using the HTTP protocol.If the backend settings do not differ, there is no need to change the configuration. If they differ, follow the steps below:
-
Create a separate
Service
object configuration file for eachIngress
resource group. In the object, specify the following:- Its name. Use a different name for each service.
Deployment
object name. This name must be the same for each service, since only one Kubernetes service was previously used.- Backend settings that are different for
Ingress
resource groups.
Sample configuration file
apiVersion: v1 kind: Service metadata: name: alb-demo-service-1 # Specify different names for each service. spec: selector: app: alb-demo-app # Specify one Deployment for each service. type: NodePort ports: ... # Specify the settings that are different for Ingress resource groups.
-
Apply the resulting configurations:
kubectl apply -f <configuration_file_names>
-
Change the names of the Kubernetes services in the
Ingress
resources. In thebackend.service.name
parameter, specify the name of the service according to the group in which theIngress
resource is located. -
Apply the changed
Ingress
resource configurations:kubectl apply -f <names_of_files_with_Ingress_resources>
-
Note
If you cannot change the configuration of the Ingress
resources, do not update the ALB Ingress Controller. Otherwise, there will be collisions.