All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
- SNI naming. Requires full deletion of the SNI VS names in beta-1.
- Retry for status updates for ingress.
- Log levels. Transitioned some logs from INFO —> DEBUG.
- Logging mechanism. Uses Uber-zap now.
- Removed SDK logging.
- Caching improvements. Fixes in race conditions.
- Reduction of controller API calls during full sync.
- Full sync fixes.
- Enchanced Retry logic.
- Removal of regular object cache syncs - only periodic refresh of cloud config parameters.
- Dynamic logging on the fly by editing the ConfigMap.
- AKO API server - for liveness probe and basic controller debugging.
- SNI VS sharing on the basis of hostnames. Same hostname will create only 1 VS across namespaces.
- Option to disable full sync. Change fullSyncFrequency to 0.
- Unused shared VS deletion on reboot of AKO.
- Multiple sub-domain support with a specification of default sub-domain in
values.yaml
for service of type LB.
- VRF context is now removed from
values.yaml
and instead is read from the network subnet.
- HostRule/HTTPRule support for Kubernetes
- Liveness probe enhancements.
- Stability fixes around pod restarts.
- Retry layer improvements.
- Cleanup fixes.
- SDK bug fixes.
- Logging improvements.
- Full OpenShift 4.x support for NodePort and ClusterIP
- Per Cluster SE group support. Label based routing support.
- NodePort Support for Kubernetes.
- HostRule/HTTPRule support for Openshift.
- Minimal public cloud support.
- VRF context support deprecated.
- AKO support for IPAM without specification of networkName.
- AKO support for controller credential change.
- AKO tenancy support.
- AKO operator feature.
- AKO public cloud with ClusterIP support for GCP/Azure.
- AKO support for GKE/AKS/EKS.
- AKO selective namespace sync for Ingress/Route.
- AKO support for static IP using LoadbalancerIP for L4.
- OpenShift wildcard certificate support.
- Global RHI support.
- AKO support for avi controller object deletion updates via statefulset conditions.
- AKO support for multiple new fields in HTTPRule/HostRule CRD.
- Tolerance support for networking/v1 Ingress in k8s 1.19
- DNS IPAM configuration not required for L4.
- Ingress class related fixes.
- RHI knob related changes.
- Added auto-fqdn support
- Option to use AKO as pure L7 ingress controller without L4 functionalities.
- Option to enable/disable hostname addition for Services of type LB.
- AviInfraSetting CRD for selecting specific Avi controller infra attributes.
- Support for shared L4 VIP across multiple service of type loadbalancer.
- Selective namespace sync for L4 objects including GatewayAPI and Services of type LB.
- Option to add global fqdn for a hostname via Host Rule.
- Temporary support for HTTP Caching for secure ingresses/routes via Pool objects.
- Option to use dedicated Virtual Service per Ingress hostname.
- Support for Node Port Local with Antrea CNI.(Supported from Antrea 0.13 onwards)
- Persistence profile in HTTPRule CRD.
- Option to use a default secret for Ingresses via annotation.
- AWS mult-vip support.
- Enhanced Virtual Hosting support for Avi Enterprise License. (Tech preview)
networkName
field in values.yaml is changed tovipNetworkList
.- AKO qualification for Kubernetes 1.19, 1.20, 1.21.
- namespace sharding is deprecated starting from this release.
- Fix: AKO removes LB status if annotations removal hits a snag
- Fix: Failure in lb-service obtaining ip after expanding ipam range which is previously exhausted
- Fix: EVH broken with SSL certs specified in HostRule
- Fix: Multi-vip with AWS always assigns IP address from a single subnet
- Fix: enable_rhi Error in ESSENTIALS license
- Fix: AKO 1.4.1 Doesn't Watch Endpoints Object in NodePort mode
- Fix: stale entries in httppolicysets cause AKO to panic
- Fix: Unpredictable behavior in AKO for ingresses/routes with same FQDN and overlapping paths
- Fix: Uncertain behavior of AKO for ingresses/routes with same FQDN but different paths and one of the path is "/"
- Support for allowing AKO to get installed in user-provided namespace (other than avi-system).
- Skip status updates on Service of type LoadBalancer during bootup when
layer7Only
flag is set totrue
. - Fix multi-host Ingress status updates during bootup.
- Unblock AKO run if CRDs are not installed in cluster.
- Fixed incorrect virtual service uuid annotation update for openshift secure routes with InsecureEdgeTermination set to Allow.
- Add support for programming FQDN for L4 services via Gateway object when
servicesAPI
is set totrue
. - Multi-Protocol (TCP/UDP) support in gateway VS (shared VIP).
- Make Service of type LoadBalancer work together with Gateways when using
serviceAPI
is set totrue
. - Public IP support for AKO on public clouds.
- Support for passthrough hosts in Ingress.
- Support for SAML based authentication for AKO using AuthToken as an alternative to usernme and password based authentication.
- EVH support for Openshift.
- NSX-T cloud support for VLAN and overlay based segments.
- Support label based BGP peering for VSes.
- Add markers to AVI objects.
- Add length restriction on Avi object name upto 255 characters in SNI deployment.
- Deprecate
subnetIP
andsubnetPrefix
in values.yaml, in favor ofcidr
field withinvipNetworkList
. - Update
spec.network
to includenetworkName
andcidr
information in AviInfraSetting CRD. - Encode Avi object names in EVH deployment.
- AKO update ingress status with VIP instead of public IP when public IP is enabled in public cloud deployments.
- Bootup optimizations improves AKO’s boot time in scaled environments.
- Support for HTTPRule CRD for Routes without paths.
- Support for
Service
with multiple ports in EVH.
- In SNI deployment, Host rule CRD with sslkeycertificate reference would get applied successfully to virtual service. However, upon deletion of this CRD, this virtual service would loose all cert configuration and get default cert. This issue is fixed.
- In EVH deployment, existing certificate references on parent VS are overwritten if ingress (with host and secret) and Host rule CRD (with sslkeyandcertificate reference and different host) would get applied to same parent VS. Expected behaviour is to append all cert references belongs to different hosts that maps to same parent. This issue is fixed.
- Due to the use of Informers for Secrets, there is an adverse effect on bootup time in OpenShift based setups. AKO can further optimize bootup time on openshift setup by filtering out the Secrets on
avi-system
namespace. This feature will be added in 1.6.1 ServiceType
ofNodePort
does not support multi-portServices
with port number.
- AKO now claims support for Kubernetes 1.22.
- Support multi-port
Services
with port number forServiceType
ofNodePort
andNodePortLocal
. - AKO introduces support for broadcasting kubernetes
Events
in order to enhance the observability and monitoring aspects. - Support custom port numbers for dedicated and shared virtual services through HostRule CRD.
- Support for enabling/disabling non-significant logs through HostRule CRD.
- Add autoFQDN to shared virtual services.
- Support for Analytics Profile for virtual service through HostRule CRD.
- Support for Static IP for Shared and Dedicated virtual service through HostRule CRD.
- Tenant context support for SE group.
- Support for multiple alias FQDNs for a host through HostRule CRD.
- Support to configure
Pool Placement Setting
for child ingresses/routes/svclb through AviInfraSetting CRD. - Allow programming static routes by adding custom Pod CIDR to Node mapping via annotation.
- Update
annotation
instead ofstatus
field of AKO statefulset after avi object deletion throughdeleteConfig
flag. - AKO will create single HTTP Policyset object at Avi Controller side for all paths of same host.
- AviInfraSetting CR can not be applied to passthrough ingress/route.
- AKO is not updating the ingress status when annotation
passthrough.ako.vmware.com/enabled: "true"
is added to the ingress. - There are issues when shardVS size changed through AviInfra CR or values.yaml. Recommended workflow is to first delete existing config using
deleteConfig
flag as described here and then changeshardVS
size through AviInfraSetting.
- Problem in creating VSVip for Passthrough routes.
- Problem in correctly saving ipamType in AKO when no DNS providers are set in the Cloud.
- Fixes around fqdnType Contains/Wildcard settings in HostRules.
- Fix validations related to tcpSettings listener ports in HostRules.
- Issue #611: AKO must not sync service fqdn via External DNS if autoFqdn is disabled.
- Fix for attaching applicationProfile, datascripts, httpPolicies to Parent VS via HostRule.
- Set non-significant log duration to infinite, when configuring analyticsPolicy via HostRule.
- Fix for auth-token renewal after token expiration.
- Problem in creating LoadBalancer Service with named ports.
- Issue: FQDN aliases not getting added to all the HTTP policies.
- Fixes improper dedicated VS creation of Service of type LB when Gateways and ServiceLB used at the same time.
- Fixes an issue of an empty string fqdn programming in L4 VSVIP when autoFqdn is disabled and no subDomains are configured in the dnsProfile.
- Fixes an issue of SEG label configuration during AviInfraSetting validation if static route sync is disabled.
- AKO now claims support for Kubernetes 1.23
- Multiple AKO instances can be deployed in K8/Openshift cluster.
- Support for Shared VIP with Service of type LoadBalancer (Tech-preview)
- Multiple certificate support for ingresses/routes through HostRule CRD.
- Support for PKI profile reference, secrete reference through HostRule CRD.
- Support for Openshift on Openstack
- Optimization in nodeport mode using nodefilters.
- Control AKO Event broadcasting using ConfigMap
enableEvents
flag. - Allow AKO to continue clean up of avi objects when AKO boots up with
deleteConfig
flag set to true. - In EVH deployment, if AKO is processing two hosts, that belongs to same parent virtual service, AKO continues to process the next host even if the current host has errors except if the error code is:
- Between 500 to 509
- 408, indicating session timeout
- 403, Controller upgrade is in progress
- 401, invalid credentials
- Set
Network Profile
toSystem-TCP-Proxy
for L4 virtual services if Avi Controller has Enterprise License.
- Fix: Donot program fqdn for L4 via external dns when autoFQDN is disabled.
- Fix: Empty fqdn in L4 VSVIP when autoFqdn is disabled.
- Fix: Dedicated VS creation of service type LB if Gateways and ServiceLB is used at same time.
- Fix: HTTP rule is not getting applied on a route with empty path.
- Fix: Ingress fails if client adds port to host header.
- Fixes security vulnerability caused due to third party package import in AKO.
- Fix: FQDN aliases not getting added to all the HTTP policies.
- Fix: AKO is not updating the ingress status when annotation
passthrough.ako.vmware.com/enabled: "true"
is added to the ingress. - Fixes LoadBalancer service creation with named ports in NodePortLocal deployment.
- Fix: Every SEGroup used in the AviInfraSetting is getting configured with the labels even when
disableStaticRouteSync
is set totrue
. - Fix: AKO pod keeps getting error "panic: runtime error: slice bounds out of range" then goes into CrashLoopBackOff state.
- Support for AviInfraSetting CRD for Shared Virtual Service of type LoadBalancer
- Fix: HTTP Rule will be rejected if
pkiProfile
ordestinationCA
is not defined while definingtls
section of rule. - Fix: L4 Pools, with new naming conventions, will not be attached to L4 VS if LoadBalancer kubernetes services, without annotation
ako.vmware.com/enable-shared-vip
, are migrated from older AKO version to AKO-1.7.1. - Fix: VRF context issue when AKO is deployed in NodePort mode for non-admin tenant.
- Fix: Empty Ingress pool when named ports are used
hostrule
withsslKeyCertificate
of typesecret
will work only in AKO installed namespace in OpenShift clusters.
- Resolved security vulnerabilities in net, text and sys packages.
- Autogenerated domain will not be added to a Dedicated VS when the
autoFQDN
is set asflat
ordefault
. - FQDN present under the GSLB section of
hostrule
will not be added to the VSVIP's Application Domain of a Dedicated VS.
- During AKO bootup, if there is an error to list AKO CRD objects, AKO disables CRD handling. That results in deletion of existing avi controller objects.
- Annotation
external-dns.alpha.kubernetes.io/hostname
on the Service of type LoadBalancer overrides theautoFQDN
feature for it.
- AKO now claims support for Kubernetes 1.24.
- Support for
AviInfraSetting
CRD in Passthrough Ingresses/Routes. - Support for ISTIO mTLS authentication. (Tech-preview)
- Support for IPv6 networking. (Tech-preview)
- Added a knob to block the processing of objects in system namespaces in OpenShift and K8s clusters.
- Support for placement network for VIP in NSX-T VLAN deployments.
- For Insecure Ingress deployments, priority labels associated with pools will be case insensitive.
hostrule
withsslKeyCertificate
of typesecret
can now be configured in all namespaces in OpenShift clusters.- Fixed an issue of VS creation failing with 470 Ingress with a single path giving a 470 error.
nodeNetworkList
is not mandatory for NSX-T Overlay deployments.
- Logs, from Istio file watcher, are changed from Error level to Warn level.
- Status of ingress/route will be populated with IPV6 address in IPV6 deployments instead of IPV4 ips except public IP is configured.
- Fix: Error in passthrough VS datascript execution when avi-infrasetting is applied to the passthrough ingress/route.
- Fix: Secure ingress is not working with Istio.
- Validate enableSSL on listener Port only when listener settings are configured on the hostrule.
- Fix: Security vulnerabilities in the Golang packages and the base image.
- AKO now claims support for Kubernetes 1.25, OCP 4.11.
- AKO can be deployed in HA mode
- Support for SCTP protocol on L4 virtual services
- Support for IPV6 networking for Calico and Antrea CNI.
- Bootup time optimization.
- Annotation
ako.vmware.com/load-balancer-ip
support to specify preferred IP for L4 services.
- Fixed: In nodeport deployment, pool servers are populated with IPV4 IP addresses even if IPFamily is set as
V6
. - Fixed: AKO is not cleaning up ISTIO resources even if istio is disabled or
deleteConfig
is set totrue
. - Fixed: Virtual service is not getting updated if alternate cert is updated or deleted in hostrule CRD.
- Fixed: AVI controller requires SSL profile to be set to enable SSL on pool for controller versions lower than 22.x.
- When AKO is deployed in HA, 409 status code error messages will be seen in active AKO if failover happens during bulk object addition.
- When AKO is running in
dedicated mode
, virtual service and VIP is not deleted from AVI controller when ingress/route, with aviinfrasetting applied to ingress/route, is deleted.
- Added configmap boolean flag
useDefaultSecretsOnly
to allow AKO to handle default secrets from the namespace where AKO is installed in Openshift environment.
- Fix: AKO is publishing incorrect next hop.
- Fix: PATCH to
vrfcontext
is failing due to error :route_id
has duplicate values.
- AKO now claims support for Kubernetes 1.26
- Fix: Static routes are not getting added for a new node in a scnerio where node is deleted and then new node is added to the cluster.
- Fix: If two clusters, with overlapping
Clustername
(i.e. one clustername is prefix of another clustername) and deployed in ClusterIP mode, are connected to the same controller, then reboot of AKO, present in a cluster with name which is prefix of another clustername, deletes static routes of other cluster. - Fix: During AKO bootup, if there is an error to list AKO CRD objects, AKO disables CRD handling. That results in deletion of existing avi controller objects.
- AKO now claims support for OCP 4.12.
- Default parameters of an L4 and Shared VIP L4 virtual services can be changed via
L4Rule
CRD. - Support to configure OAuth or SAML for L7 virtual services via
SSORule
CRD. - AKO now supports
OVN-Kubernetes
CNI in Openshift andCilium
CNI in Kubernetes. - Option to add ICAP profile to an L7 virtual service via
HostRule
CRD. - Option to enable HTTP2 in an L7 virtual service via
aviinfrasetting
CRD.
- The VSes sometimes are not coming up and show pool placement issues when CNI is set as Calico.
- Shared VIP service with mixed protocol doesn’t work if one of the protocol is SCTP.
- AKO doesn’t support Service of type LoadBalancer definitions with mixed protocols.
- AKO now claims support for K8 1.27.
- AKO chooses correct network reference for VIP subnet and Pool placement when there are duplicate networks, with same name, present on Avi Controller.
- Fix: AKO doesn’t support Service of type LoadBalancer definitions with mixed protocols.
- Fix: CTRL_CA_DATA env variable, from AKO Statefulset definition, violates CNTR-K8-001160.
vipNetworkList
andnodeNetworkList
invalues.yaml
are updated with new fieldnetworkUUID
to specify unique network using uuid. Now user can specify eithernetworkUUID
ornetworkName
as part of these fields.vipNetworks
andnodeNetworks
in aviinfrasetting crd are updated with new fieldnetworUUID
to specify network with uuid. User can specify eithernetworUUID
ornetworkName
as part of these fields.
- Fix: AKO crashes on reboot in IPV6 environment when IPV6 ingress or LB service is there.
- Fix: AKO doesn't create VS for ingress/route associated with HTTP Rule where LB Algorithm is not set.
- Fix: AKO does not choose correct network reference for VIP subnet and Pool placement when there are duplicate networks, with same name, present on Avi Controller and management network is being overriden in the Service Engine Group (SEG). This SEG is defined either in AviInfrasetting CRD or in AKO configmap.
- AKO now supports GatewayAPI(TechPreview).
- Support for setting/change the nsxt1lr in AviInfrasetting.
- SSL support for L4 virtual services with L4Rule CRD.
- AKO supports
image pull secret
to pull AKO image from secured registries.
- API version for AviInfrasetting, Hostrule and HTTPRule has been updated from
v1alpha1
tov1beta1
. User have to update CRD definitions before upgrading AKO to 1.11.1. - Add Hostname from external-dns annotation only when AutoFQDN is flat or default for service type LB.
- Reduce the length of the label created by the AKO when the AutoFQDN is set as flat for service of Type LB.
- Do not add gslbFqdn, mentioned in Hostrule, to the vsvip fqdn when AKO is running in Dedicated mode.
- Fix: AKO programs routes with secondary IPs in Openshift.
- Fix: When HTTPRules are applied to the ingresses, with same FQDN and path but deployed in different namespaces, then httprule config is removed from one of the pool when another httprule is applied.
- Fix: VS and Pools are not deleted when multiple ingress use same infrasetting for shard size.
- Fix: DNS mentioned in
external-dns.alpha.kubernetes.io/hostname
is not added as parthost-fqdn-vs-uuid-map
or vsvip dns info ifako.vmware.com/enable-shared-vip
annotation is also applied to the LB service. - Fix: Dedicated insecure VS gets both port
80
and443
by default when no listeners are defined via any CRD. - Fix: If only
loadBalancerIP
is given and nolisteners
are specified in the HostRuletcpSettings
section, the VS creation fails witherror: Service mandatory for Virtual Service
.
- For Avi Controller version less than
30.1.1
, when using SSORule CRD, ifauthnReqAcsType
is set toSAML_AUTHN_REQ_ACS_TYPE_URL
, Request Body Buffering needs to be enabled for EVH parent virtual service for SAML traffic to work. This can be achieved by creating a custom application profile of typeHTTP
in the AVI controller with Request Body Buffering enabled and attaching that application profile to the EVH parent VS by using a HostRule CRD object. Avi Controller version30.1.1
is supported starting with AKO version1.11.1
.
- Security issues, present in Go lang net/http packages.
- AKO now claims support for Kubernetes 1.28.
- Fix: Certificate, from hostrule CRD, can not be assigned to L7 VirtualService when AKO is deployed in Dedicated mode.
- Fix: Virtualservices are getting deleted when there is an issue with an access to the kube_api server which results in setting up
deleteConfig
flag to true.