DDoS Detection, Mitigation, Orchestration, and Threat Intelligence
Consolidated Security & CGNAT
TLS/SSL Inspection
Web Application Firewall
Application Security & Load Balancing
Analytics & Management
CGNAT & IPv6 Migration
Continuous delivery is a practice used in the software industry to automate and improve the process of software delivery. It is all about adopting practices to release high-quality software fast through automation of the build, test and deployment processes. This post describes features in A10 Lightning Application Delivery Service (ADS) to facilitate continuous delivery, and the specific ways our DevOps team achieves continuous delivery by using Lightning ADS internally.
An important technique for reducing risks in case of continuous deployments is known as blue-green deployment. Typically the current live production environment is termed as “blue.” The technique consists of bringing up a parallel “green” environment with the new version of the software so the switch from old to new (or blue to green) instantaneously without a downtime.
A10 LIghtning ADS provide a mechanism to reduce the risk further by allowing you to split the live traffic between blue and green deployments. You can test new deployments of your application by sending a small fraction of your traffic to the green environment and monitoring the health analytics. If you see any issue, simply roll back (just by disabling the split condition) so that all traffic flows to the blue environment. Once the issue is fixed, you can deploy the new green instance and resume the split test. As confidence in the green instance grows, you can increase the amount of traffic flowing to the new environment. Once 100 percent of traffic flows to green and it’s declared as production, you can safely decommission and archive the legacy environment.
While splitting the traffic, A10 Lightning ADS preserves the user experience by sticking the traffic to either blue or green.
Below are the steps our team uses to automate blue-green deployment internally, including the some screen captures and sample code.
Step 1. In the A10 Lightning ADS settings page click on the “Blue/Green” tab to configure blue-green service.
Step 2. Select the “Blue” service from the drop list. A green service will be cloned by Lightning ADS for that service.
Step 3. Supply name for the green service and you can spilt traffic based on certain rules as shown below:
For illustration lets spilt traffic based on condition:
Here, I am sending traffic landing on /web/index.html which is my new resource URL to the green service.
Step 4. In next section, you need to provide server IP of the green server OR pick server from an existing IP address.
a) Adding green server IP manually
b) Picking green server IP from existing slot.
Step 5. Once the green service has been created, you can start your benchmarking.
In this, I am using curl call to fire up couple of hundred requests to the green server.
for i in {1..100}; do echo "Request Number:" $i ; curl ‘https:// www. example. com/web/index.html' -o /dev/null -w "%{http_code} n" -s ; doneRequest Number: 1200Request Number: 2200Request Number: 3200
As you see in above sample, my calls are succeeding with a response status code of 200 – OK.
Creating the green service, we are ensuring current traffic is not disrupted and new deployment works as expected.
Step 6. Now, confirm the traffic analytics through the Lightning ADS Analytics dashboard.
Click on Analytics --> Blue-Green
In this section, you will notice stats like average CPU utilization
and service errors.
In this case application metrics looks good. We have successfully tested the green service.
To speed up our work, our DevOps team frequently automates the steps I described above by using the A10 Lightning API. Here are some of the powerful API calls to automate blue-green deployment:
LIST ALL TRAFFICSPLITS:
METHOD: GET
HOST: https:// api. a10networks. com
URL Path: /api/v2/applications/{app}/hosts/{host}/trafficsplits
Note: UserRole: ApplicationAdmin, ApplicationUserParameters to supply :Response
Content Type: application/json X-Account(Parameter Type: header) : X-User (Parameter Type: header) : application (Parameter Type: path): host(Parameter Type: path) : trafficsplit(Parameter Type: path):
CREATE A NEW TRAFFICSPLIT:
METHOD: POST
HOST: https:// api. a10networks. comURL Path: /api/v2/applications/{application}/hosts/{host}/trafficsplits
/applications/{application}/hosts/{host}/trafficsplits
Parameters to supply :Response
Content Type: application/json X-Account : X-User : application : [required] host: [required] body : { "name": "string", "description": "string", "state": "string", "splitSlices": [ { "service": "string", "percentage": "integer", "condition": "string", "code": "string" } ], "id": "string" }
UPDATE A TRAFFICSPLIT:
METHOD: PUT
URL Path: /api/v2/applications/{application}/hosts/{host}/trafficsplits/{trafficsplit}
/applications/{application}/hosts/{host}/trafficsplits/{trafficsplit}
Content Type: application/json X-Account : X-User : application : [required] host: [required] trafficsplit : [required] body : { "name": "string", "description": "string", "state": "string", "splitSlices": [ { "service": "string", "percentage": "integer", "condition": "string", "code": "string" } ], "id": "string" }
As cloud service availability is critical to A10 and our customers, we continue to find automated ways to maintain availability while rolling out new features. Blue-green deployment is an important step in our deployment process. It is designed with the expectation that application/infrastructure failure can happen and will happen and enables us to react quickly to negative events. Having the flexibility to use a graphical interface or API calls provides even stronger control over an improved continuous delivery process.
Seeing is believing. Schedule a live demo today.