---
layout: post
title: Announcing Apache CloudStack 4.3.0
tags: [announcement]
slug: announcing_apache_cloudstack_4_3
---
<p>Flexible, scalable, Open Source Infrastructure as a Service (IaaS) used by organizations such as Zynga, Datapipe, and ISWest, among others, for creating, managing, and deploying public, private, and hybrid Cloud Computing environments</p>

<p>Forest Hill, MD --25 March 2014-- The Apache Software Foundation (ASF), the all-volunteer developers, stewards, and incubators of more than 170 Open Source projects and initiatives, today announced Apache CloudStack v4.3, the latest feature release of the CloudStack cloud orchestration platform.</p>

<p>Apache CloudStack is an integrated Infrastructure-as-a-Service (IaaS) software platform that allows users to build feature-rich public, private, and hybrid cloud environments. CloudStack includes an intuitive user interface and rich APIs for managing the compute, networking, software, and storage infrastructure resources. CloudStack became an Apache Top-level Project (TLP) in March 2013.
"We are proud to announce CloudStack v4.3," said Hugo Trippaers, Vice President of Apache CloudStack. "This release represents over six months of work from the Apache CloudStack community with many new and improved features."</p>

<h3>Under The Hood</h3>
<p>CloudStack V4.3 is the next feature release of the 4.x line which first released on November 6, 2012. Some of the noteworthy new and improved features include:</p>
<ul>
<li>Support for Microsoft Hyper-V - Apache CloudStack can now manage Hyper-V hypervisors in addition to KVM, XenServer, VMware, LXC, and Bare Metal</li>
<li>Juniper OpenContrail integration - OpenContrail is a software defined networking controller from Juniper that CloudStack now integrates with to provide SDN services</li>
<li>SSL Termination support for guest VMs - Apache CloudStack can configure and manage SSL termination in certain load balancer devices</li>
<li>Palo Alto Firewall integration - Apache CloudStack can now manage and configure Palo Alto firewalls</li>
<li>Remote access VPN for VPC networks - CloudStack's remote access VPN is now available for Virtual Private Cloud networks</li>
<li>Site to Site VPN between VRs - CloudStack now allows site-to-site VPN connectivity to it's virtual routing devices. This permits your cloud computing environment to appear as a natural extension of your local network, or for you to easily interconnect multiple environments</li>
<li>VXLAN support expansion to include KVM - CloudStack's support for integrating VXLAN, the network virtualization technology that attempts to ameliorate scalability problems with traditional networking</li>
<li>SolidFire plugin extension to support KVM and hypervisor snapshots for XenServer and ESX - SolidFire provides guaranteed Storage Quality of Service at the Virtual Machine level</li>
<li>Dynamic Compute offering - CloudStack now has the ability to dynamically scale the resources assigned to a running virtual machine instance for those hypervisors which support it</li>
</ul>

<h3>Downloads and Documentation</h3>
<p>The official source code for the v4.3 release, as well as individual contributors' convenience binaries, can be downloaded from the Apache CloudStack downloads page at <a href="http://cloudstack.apache.org/downloads.html">http://cloudstack.apache.org/downloads.html</a></p>

<p>The CloudStack 4.3 release includes over 110 issues from 4.2.0 and 4.2.1, including fixes for object storage support, documentation, and more. A full list of corrected issues and upgrade instructions are available in the Release Notes <a href="http://docs.cloudstack.apache.org/projects/cloudstack-release-notes">http://docs.cloudstack.apache.org/projects/cloudstack-release-notes</a></p>

<p>Official installation, administration, and API documentation for each release is available at <a href="http://docs.cloudstack.apache.org/en/latest/">http://docs.cloudstack.apache.org/en/latest/</a>
Apache CloudStack in Action</p>

<p>Join members of the Apache CloudStack community at the CloudStack Collaboration Conference, taking place 9-11 April 2014 immediately following ApacheCon. For more information, visit <a href="http://cloudstackcollab.org">http://cloudstackcollab.org</a></p>

<h3>Availability and Oversight</h3>
<p>As with all Apache products, Apache CloudStack v4.3 is released under the Apache License v2.0, and is overseen by a self-selected team of active contributors to the project. A Project Management Committee (PMC) guides the Project’s day-to-day operations, including community development and product releases. For documentation and ways to become involved with Apache CloudStack, visit http://cloudstack.apache.org/</p>

<h3>About The Apache Software Foundation (ASF)</h3>
<p>Established in 1999, the all-volunteer Foundation oversees more than one hundred and seventy leading Open Source projects, including Apache HTTP Server --the world's most popular Web server software. Through the ASF's meritocratic process known as "The Apache Way," more than 400 individual Members and 3,500 Committers successfully collaborate to develop freely available enterprise-grade software, benefiting millions of users worldwide: thousands of software solutions are distributed under the Apache License; and the community actively participates in ASF mailing lists, mentoring initiatives, and ApacheCon, the Foundation's official user conference, trainings, and expo. The ASF is a US 501(c)(3) charitable organization, funded by individual donations and corporate sponsors including Budget Direct, Citrix, Cloudera, Comcast, Facebook, Google, Hortonworks, HP, Huawei, IBM, InMotion Hosting, Matt Mullenweg, Microsoft, Pivotal, Produban, WANdisco, and Yahoo.</p>

<p>For more information, visit http://www.apache.org/ or follow @TheASF on Twitter.</p>

<p>"Apache", "CloudStack", "Apache CloudStack", and "ApacheCon" are trademarks of The Apache Software Foundation. All other brands and trademarks are the property of their respective owners.</p>
