This repository is used to host helm charts from Avi Networks (A VMware Company)
AKO runs as a POD inside the kubernetes cluster.
To Run AKO you need the following pre-requisites:
-
Step 1: Configure an Avi Controller with a vCenter cloud.
-
Step 2:
- Make sure a PG network is part of the NS IPAM configured in the vCenter
-
Step 3: If your POD CIDRs are not routable:
- Create a VRF context object in Avi for the kubernetes controller.
- Get the name the PG network which the kubernetes nodes are part of.
- Configure the PG network in step 2 with the vrf mentioned in the previous step using the Avi CLI.
Data path flow is as described below:
The markers in the drawing are described below:
- Client makes a request to a specified hostname/path.
- The DNS VS returns an IP address corresponding to the hostname.
- The request is forwarded to the resolved IP address that corresponds to a Virtual IP hosted on an Avi Service Engine. The destination IP in the packet is set as the POD IP address on which the application runs.
- Service Engines use the static route information to reach the POD IP via the next hop address of the host on which the pod is running.
- The pod responds and the request is sent back to the client.
NOTE: If you are using AKO for test puposes you can use the
global
vrf but you cannot manage multiple kubernetes clusters in the same cloud with this setting. -
Step 3.1: If your POD CIDRs are routable then you can skip step 2. Ensure that you skip static route syncing in this case using the
disableStaticRouteSync
flag in thevalues.yaml
of your helm chart. -
Step 4: Kubernetes 1.14+.
-
Step 5:
helm
cli pointing to your kubernetes cluster. NOTE: We only supporthelm 3
Step 1: Create the avi-system
namespace:
kubectl create ns avi-system
Step 2: Add this repository to your helm CLI
helm repo add ako https://avinetworks.github.io/avi-helm-charts/ako-beta
Use the values.yaml
from this repository to edit values related to Avi configuration. Values and their corresponding index can be found here
Step 3: Search the available charts for AKO
helm search repo --devel
NAME CHART VERSION APP VERSION DESCRIPTION
ako/ako 0.9.1-5047-beta 0.9.1-5047-beta A Helm chart for Kubernetes
Step 4: Install AKO
helm install ako/ako --generate-name --devel -f values.yaml --set configs.controllerIP=<controller_ip> --set avicredentials.username=<avi-ctrl-username> --set avicredentials.password=<avi-ctrl-password> --namespace=avi-system
NAME: ako-1588049417
LAST DEPLOYED: Tue Apr 28 10:20:21 2020
NAMESPACE: avi-system
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace avi-system -l "app.kubernetes.io/name=ako,app.kubernetes.io/instance=ako-1588049417" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace avi-system port-forward $POD_NAME 8080:80
Step 5: Check the installation
helm list -n avi-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ako-1588049417 avi-system 1 2020-04-28 10:20:21.61093 +0530 IST deployed ako-0.9.1-5047-beta 0.9.1-5047-beta
Currently, AKO's 0.9.1-5076-beta-2 is available for download. A complete changelog can be viewed here
beta-1
to beta-2
is a disruptive migration due to some object naming changes around the SNI virtualservices. Hence if you are running a beta-1
build and would like to move to beta-2
, pls execute the following:
- kubectl delete cm avi-k8s-config -n avi-system (This will trigger a delete of the beta-1 objects in the Avi controller.)
- helm delete <beta-1-release-name> -n avi-system
- helm repo update
- helm install ako/ako --generate-name --devel -f values.yaml --set configs.controllerIP=<controller_ip> --set avicredentials.username=<avi-ctrl-username> --set avicredentials.password=<avi-ctrl-password> --namespace=avi-system
Simply run:
Step1:
helm delete <ako-release-name> -n avi-system
Note: the ako-release-name is obtained by doing helm list as shown in the previous step,
Step 2:
kubectl delete ns avi-system
The following table lists the configurable parameters of the AKO chart and their default values. Please refer to this link for more details on each parameter.
Parameter | Description | Default |
---|---|---|
configs.controllerVersion |
Avi Controller version | 18.2.8 |
configs.controllerIP |
Specify Avi controller IP | nil |
configs.shardVSSize |
Shard VS size enum values: LARGE, MEDIUM, SMALL | LARGE |
configs.fullSyncFrequency |
Full sync frequency | 1800 |
configs.ingressApi |
Support for default ingress API | corev1 |
configs.defaultIngController |
AKO is the default ingress controller | true |
configs.cloudName |
Name of the VCenter cloud managed in Avi | Default-Cloud |
configs.clusterName |
Unique identifier for the running AKO instance. AKO identifies objects it created on Avi Controller using this param. | required |
configs.subnetIP |
Subnet IP of the data network | required |
configs.subnetPrefix |
Subnet Prefix of the data network | required |
configs.networkName |
Network Name of the data network | required |
configs.defaultDomain |
Specify a default sub-domain for L4 LB services | First domainname found in cloud's dnsprofile |
configs.l7ShardingScheme |
Sharding scheme enum values: hostname, namespace | hostname |
configs.cniPlugin |
CNI Plugin being used in kubernetes cluster. Specify one of: calico, canal, flannel | required for calico setups |
configs.logLevel |
logLevel enum values: INFO, DEBUG, WARN, ERROR. logLevel can be changed dynamically from the configmap | INFO |
configs.disableStaticRouteSync |
Disables static route syncing if set to true | false |
avicredentials.username |
Avi controller username | empty |
avicredentials.password |
Avi controller password | empty |
image.repository |
Specify docker-registry that has the AKO image | avinetworks/ako |
networkName
,subnetIP
andsubnetPrefix
are required fields which are used for allocating VirtualService IP by IPAM Provider module
Each AKO instance mapped to a given Avi cloud should have a unique clusterName parameter. This would maintain uniqueness of object naming across Kubernetes clusters.
Please refer to this page for details on how AKO interprets the kubernetes objects and translates them to Avi objects.
For some frequently asked question refer here