Adding Applications To A Cluster
Introduction
This guide targets Cluster Admins and details how KKP Applications can be integrated into a cluster.
KKP Applications offer a seamless experience to add third-party applications into a KKP cluster and offer full integration with KKP’s UI as well as GitOps Systems.
For a more details on Applications please refer to our Applications Primer.
Managing Applications via the UI
Adding Applications to an Existing Cluster
All App functionality resides in the Applications Tab, from which a new Application can be added.
An application catalogue will be displayed. If no Applications are being displayed, please contact your KKP administrator to create an Application Catalogue
After choosing an Application, its installation can be further customized.
The following can be customized:
Version
-> The version of the Application that should be displayedNamespace
-> The namespace the workload should be installed in. If the namespace does not exist, KKP will automatically create itName
-> The name of the ApplicationValues
-> Value override for Installation. This will be left-merged with the default values of your Application.
The combination of Namespace and Name must be unique within your cluster.
After you have selected your customizations, the installation-status of your Application can be viewed in the Applications Tab.
Creating a New Cluster With Applications
In the cluster creation wizard, you can select applications to install into your cluster.
KKP will automatically install your selection after the infrastructure is provisioned and the cluster is ready.
Applications can be added in the Applications
Section of the wizard.
For a detailed flow and explanation of all customizations see the “Adding Applications to an Existing Cluster” section of this guide.
Afterwards, you can track the installation progress in the Applications Tab.
Storing Applications in a ClusterTemplate
ApplicationInstallations can also be added to ClusterTemplates in order to reuse them across multiple clusters. In order to do so, select the Save Cluster Template
option during the Summary step of the cluster creation wizard.
Managing Applications via GitOps
KKP Applications are managed via the ApplicationInstallation
custom Kubernetes resource.
ApplicationInstallations reside in the user-cluster and represent a desired state of an Application.
For a full reference of all supported fields, please check the ApplicationInstallation Reference Section of this guide.
# Example of an ApplicationInstallation
apiVersion: apps.kubermatic.k8c.io/v1
kind: ApplicationInstallation
metadata:
name: prometheus
namespace: prometheus
spec:
applicationRef:
name: prometheus
version: 2.36.2
namespace:
create: true
name: prometheus
values:
alertmanager:
enabled: false
After creating an ApplicationInstallation, you can directly apply it into the desired cluster using kubectl. This will trigger a controller within KKP, which will automatically install your Application. We recommend to apply the ApplicationInstallation to the same namespace as the workload and configuration you want to deploy.
kubectl apply -n <namespace> -f <your-appinstall>
You can check the progress of your installation in status.conditions
.
kubectl -n <namespace> get applicationinstallation <name> -o jsonpath='{.status.conditions}'
There are 2 conditions:
ManifestsRetrieved
-> application’s source has been correctly downloadedReady
-> application has been correctly installed or upgraded
Additionally when using helm, the field status.helmRelease
will contain additional information.
kubectl -n <namespace> get applicationinstallation <name> -o jsonpath='{.status.helmRelease}'
ApplicationInstallation Reference
The following is an example of ApplicationInstallation, showing all the possible options.
apiVersion: apps.kubermatic.k8c.io/v1
kind: ApplicationInstallations
metadata:
name: <<appInstallation-name>>
spec:
# ApplicationRef is a reference to identify which Application should be deployed
applicationRef:
# Name of the Application.
# Should be a valid lowercase RFC1123 domain name
name: apache
# Version of the Application. Must be a valid SemVer version
version: 1.2.3
# Namespace describe the desired state of the namespace where application will be created.
namespace:
annotations:
project-code: azerty
create: true
labels:
env: dev
name: my-namespace
# Values describe overrides for manifest-rendering. It's a free yaml field.
values:
commonLabels:
owner: somebody