Hybrid application management lifecycle
IBM Cloud Pak for Multicloud Management provides enhanced application management capabilities through a Kubernetes resource-based application model, channel and subscription-based deployment options, and infrasture-based deployment options. The application model and deployment capabilities are designed to unify and simplify the deployment experience for creating and managing your application across both single cluster and multi-cluster scenarios.
If you need to manage applications across multiple clusters, or create and manage applications that use channels and subscriptions, you need to integrate with Red Hat Advanced Cluster Management. IBM Cloud Pak for Multicloud Management uses Red Hat Advanced Cluster Management for managing multiple clusters and for creating and managing channels and subcriptions to gain improved continuous and automated delivery of your deployables to target managed clusters.
Your developers and DevOps personnel can use these resources to deploy, update, manage, and monitor versions of your applications across multiple environments through complete automation.
Hybrid application model
The hybrid application model includes default Kubernetes resource definitions and custom resource definitions to construct different application types.
In Red Hat Advanced Cluster Management, the application model is based on a purely Kubernetes-based containerized application management. All applications and application resources are based on the Kubernetes Special Interest Groups (SIG) Application model. Within IBM Cloud Pak for Multicloud Management, a hybrid application model is used, which enhances the existing application model to now support both infrastructure management and pure kubernetes-based application models.
With this enhancement, you can represent your infrastructure deployers, such as Infrastructure management or Ansible as
Deployer resources. The new hybrid application model defines how other infrastructure, such as a Infrastructure
management based virtual machine application can be integrated with and use the application lifecycle management capabilities. With the support for infrastructure deployers, you can create hybrid deployable resources that represent components
that run on these different Deployers, such as virtual machines, cloud services, and containers.
The hybrid application model and deployment options work for, and scale, clustered environments to meet application management requirements. This scalability supports both a single application developer that builds and deploys an application from their device to a multicloud environment, or a cloud operations personnel that needs to deploy and update hundreds of applications across hundreds of clusters. With this application model and deployment option, you can separate your organizations roles for developing applications and DevOps. Your application developers can focus on the developing and defining the application resources. Meanwhile, your DevOps personnel can focus on creating and managing the channels and subscriptions to ensure that resources are deployed correctly. You can use the new model and deployment options to update and deploy one or more applications to hundreds of managed clusters, each in a different physical location.
Within this hybrid application model, applications are composed of multiple resources. The Hybrid Application Model follows the Kubernetes conventions for defining resources, but the custom resources, operators, and controllers, are introduced to
work with non-Kubernetes systems in addition to continuing to work with Kubernetes. The main foundation resources for hybrid applications are the
application resource and the hybrid
deployable resource. The hybrid placement
rules for deployables can be defined as a stand-alone resource and referenced by the deployable.
Hybrid application resources
Hybrid deployables (
deployables.core.hybridapp.io) represent containers, virtual machines, or cloud services so that the platforms can be managed as Kubernetes resources, such as for constructing or updating applications. This resource kind also defines how other infrastructure platforms, such as Infrastructure management based virtual machine applications can be integrated with the application model for application lifecycle management.
Hybrid placement rules (
PlacementRule.core.hybridapp.io) are a custom enhancement of the pure Kubernetes-based placement rule (
PlacementRule.apps.open-cluster-management.io), which enables the rule to be used for deploying more than pure Kubernetes-based resources. These hybrid placement rules use a placement by deployer approach for placing hybrid application resources on target destinations.
You can place resources on clusters and other targets that are outside of the default cluster definition, whether it is managed with Red Hat® Advanced Cluster Management for Kubernetes or with the IBM Cloud Pak for Multicloud Management core cluster management capabilities. For instance, you can place hybrid deployable resources on different deployer types, such as virtual machines, cloud services, and containers.
Hybrid placement rules also can work with advisors to determine the ideal target where to place resources. An advisor can be an external controller, such as a deployer or third-party deployer, that provides recommendations to the placement rule for where to place resources.
deployers.core.hybridapp.io) represent infrastructure deployers, including cloud service providers, virtual machines, and containers. These resources can be targeted as the deployment location for hybrid deployables. The systems that you represent with a Deployer resource can exist on a managed cluster, such as a virtual machine, or on the hub cluster, such as Infrastructure management. When you have a deployer represented by a Deployer resource, the components that run on that deployer can have hybrid deployables created to represent them on the hub cluster. With the deployables created, you can then create the applications to manage the collected resources.
To better integrate with continuous delivery systems, you can use channel and subscription resources. Channels and subscriptions provide you with improved continuous delivery capabilities for creating and managing your IBM Cloud Pak for Multicloud Management applications.
Resources also exist to help you assemble applications. The application assembler resource (
ApplicationAssembler.core.hybridapp.io) groups hybrid deployables together to create an application based on selected types of resources. You
can use the application assembly resource to discover and assembly your existing applications so they can be managed in IBM Cloud Pak for Multicloud Management. You can also use the assembly resource in the console to quickly select resources
to create applications.
For more information about creating and managing hybrid application resources, see:
Application (non-hybrid) resources
Application.app.k8s.io) are used for grouping pure Kubernetes-based application components.
Deployable.apps.open-cluster-management.io) are Kubernetes resources that are created within Red Hat Advanced Cluster Management. These resources contain templates to wrap other Kubernetes resources or to represent Helm releases for deployment to clusters.
Placement rules (
PlacementRule.apps.open-cluster-management.io) define the target clusters or deployers where deployables can be deployed. These resources are created and managed within Red Hat Advanced Cluster Management. You can use placement rules to help you facilitate the multi-cluster deployment of your non-hybrid deployables. Placement rules can be referenced by deployables and subscriptions. Placement rules that are defined as stand-alone resources can be shared across deployables.
Channel.apps.open-cluster-management.io) define a namespace within the hub cluster and point to a physical place where non-hybrid resources are stored for deployment; such as an object store, Kubernetes namespace, Helm repository, or GitHub repository. Channels are custom resource definitions that can help you streamline deployments and separate cluster access. These resources are created and managed within Red Hat Advanced Cluster Management. Clusters can subscribe to channels for identifying the deployables to deploy to each cluster. Deployables within a channel can be accessed by only the clusters that subscribe to that channel.
Subscription.apps.open-cluster-management.io) are sets of definitions that identify non-hybrid deployables within channels by using annotations, labels, and versions. These resources are created and managed within Red Hat Advanced Cluster Management. The subscription operator can monitor the channel for new or updated deployables, such as an updated Helm release or new Kubernetes deployable object. Then, the operator can download the Kubernetes deployable object or Helm release directly from the source location (Helm repository, GitHub repository, object store, or namespace) to the target managed clusters.
For more information about using Red Hat Advanced Cluster Management to create and manage these resources, see the Red Hat Advanced Cluster Management documentation for Managing applications .
Although single and multi-cluster applications both use the same Kubernetes specifications, multi-cluster applications involve more automation of the deployment and application management lifecycle. The application definition is based on the Custom Resource Definition (CRD) of the Kubernetes SIG Application CRD definition . This definition is used for applications in both single and multi-cluster environments for grouping application resources. The other resource kinds for the application model (hybrid deployables, hybrid placement rules, deployables, placement rules, channels, and subscriptions) are based on specifications that are defined by IBM Cloud Pak for Multicloud Management or Red Hat Advanced Cluster Management for Kubernetes. These specifications use common Kubernetes resource fields for defining annotations, labels, metadata, and more, and support custom fields and values. For more information about these resources, see Application resources.
All of the application component resources for applications are defined in YAML files. When you need to create or update an application component resource, you need to create or edit the appropriate spec section to include the labels for defining your resource.
The Kubernetes apiserver is the main service for providing application management functions. All application resource specs are accessible by using the Kubernetes CLI tool. In addition, a hcmctl is provided to wrap kubectl commands for better and smoother CLI experiences.
Note: There is a Hybrid application model community. For more information, see GitHub: Hybrid Application Model.
Deploying application resources
IBM Cloud Pak for Multicloud Management supports multiple options for the deployment of deployable objects, including hybrid deployables and Helm charts. The deployment option that you use can depend upon whether you are deploying hybrid or non-hybrid resources. If your deploying non-hybrid resources, the deployment option that you can use also depends upon whether you need to deploy to a single cluster or multiple clusters and the frequency that you need to deploy updates. For more information, see Deploying application resource.
Managing applications with the console
The IBM Cloud Pak for Multicloud Management console includes an applications dashboard for managing the hybrid application lifecycle. You can also use the console dashboard to create non-hybrid application resources, such as subscriptions, channels, and placement rules. With your resources created, you can use the console to view the status of your hybrid applications, channels, subscriptions, and related deployments.
With this application dashboard, you can complete the following tasks:
- View the virtual machine services that are used for your applications.
- Check your deployment pipeline to view all deployed applications from Red Hat Advanced Cluster Management, including any associated channels and subscriptions.
- Access a topology view that encompasses all application resource definitions, including clusters, deployables, pods, and infrastructure.
- Use the Logs tab to view logs for each application resource.
Add and edit channels, subscriptions, placement rules, and applications from different views and pages.
Notes: When you view the Resources tab from the Applications dashboard for one or all applications, you might not view some existing resources. The Resources tab does not list hybrid deployable resources or resources that are associated with applications that consist of hybrid deployable (
Deployable.core.hybridapp.io) resources, such as hybrid placement rules (
PlacementRule.core.hybridapp.io). You can view hybrid deployable resources on the Overview tab for associated applications, such as within the topology view. The Resources tab shows resources for only applications that are associated with subscription (
Subscription.apps.open-cluster-management.io) resources that are created within Red Hat Advanced Cluster Management.
For more information, see Managing applications with the console.