Deploy Package On Cluster
5 minute read
Deploying package on Cluster
You can install artifacts in your cluster in several ways. For this purpose, you can use these four plugins when creating a package:
- helm
- kubectl
- cmd
- Kosi
As an example, this guide installs the nginx-ingress
Ingress Controller.
Using the Helm-Plugin
Prerequisite
In order to install an artifact with the Helm plugin, the Helm chart must first be downloaded. This step is not covered in this guide.
Create KOSI package
First you need to create a KOSI package. The following command creates the necessary files in the current directory:
kosi create
The downloaded Helm chart must also be located in the current directory. To customize the deployment of the Helm chart, the values.yaml
file must be edited. This file can be downloaded from ArtifactHub and must be placed in the same directory as the Helm chart.
All files required by a task in the package must be named in the package.yaml
file under includes.files
. The container images required by the Helm chart must also be listed in the package.yaml
under includes.containers
. For installation, the required files and images must be listed under the installation.includes
key.
In the example below, only two files are required for the installation: the Helm Chart for the nginx-ingress and the values.yaml to configure the deployment. To install nginx-ingress you will also need the nginx/nginx-ingress
image with the tag 3.0.1
.
To install nginx-ingress with the Helm plugin, call the plugin as shown in the example under installation.tasks
. The deployment configuration file is listed under values
and the packed Helm chart is specified with the key tgz
. Furthermore, it is also possible to specify the namespace in which the artifact should be deployed and the name of the deployment. The full documentation for the Helm plugin can be found here.
apiversion: kubernative/kubeops/sina/user/v4
name: deployExample
description: "This Package is an example.
It shows how to deploy an artifact to your cluster using the helm plugin."
version: 0.1.0
includes:
files:
config: "values.yaml"
nginx: "nginx-ingress-0.16.1.tgz"
containers:
nginx-ingress:
registry: docker.io
image: nginx/nginx-ingress
tag: 3.0.1
docs: docs.tgz
logo: logo.png
installation:
includes:
files:
- config
- nginx
containers:
- nginx-ingress
tasks:
- helm:
command: "install"
values:
- values.yaml
tgz: "nginx-ingress-0.16.1.tgz"
namespace: dev
deploymentName: nginx-ingress
...
update:
tasks:
delete:
tasks:
Once the package.yaml
file has been fully configured, all files must be combined into a KOSI package. To do this, execute the following command in the directory where the package.yaml
file is located.
kosi build
To make the generated kosi package available on other machines, it is pushed to the user’s private KubeOps Hub. To do this, the user must first log in to the hub.
$ kosi login -u <username>
2023-02-04 11:19:43 Info: KOSI version: 2.6.0_Beta0
2023-02-04 11:19:43 Info: Please enter password
****************
2023-02-04 11:19:26 Info: Login Succeeded to Hub.
$ kosi push --hub kosi
2023-02-04 11:23:18 Info: KOSI version: 2.6.0_Beta0
2023-02-04 11:23:19 Info: Push to Private Registry registry1.kubernative.net/<username>/
Deployment
Once the KOSI package has been created and published, it needs to be installed on the Admin node. The following command will download and execute the package. The package name and version refer to the values defined in package.yaml
with the keys name
and version
.
kosi install --hub <username> <username>/<packagename>:<version>
For the example package, the command would be: kosi install --hub <username><username>/deployExample:0.1.0
.
Using the Kubectl-Plugin
Prerequisite
In order to install an artifact with the Kubectl plugin, the kubeops-kubernetes-plugins
package must be installed on the admin node. This step is not covered in this guide.
Create KOSI package
First you need to create a KOSI package. The following command creates the necessary files in the current directory:
kosi create
The NGINX ingress controller YAML manifest can either be automaticly downloaded and applyed directly with kubectl apply
or it can be downloaded manually if you want to customize the deployment. The YAML manifest can be downloaded from the NGINX GitHub Repo and must be placed in the same directory as the files for the kosi package.
All files required by a task in the package must be named in the package.yaml
file under includes.files
. The container images required by the YAML manifest must also be listed in the package.yaml
under includes.containers
. For installation, the required files and images must be listed under the installation.includes
key.
In the example below, only one file is required for the installation: the YAML manifest for the nginx-ingress controller. To install nginx-ingress you will also need the registry.k8s.io/ingress-nginx/controller
image with the tag v1.5.1
and the image registry.k8s.io/ingress-nginx/kube-webhook-certgen
with tag v20220916-gd32f8c343
.
To install nginx-ingress with the Kubectl plugin, call the plugin as shown in the example under installation.tasks
. The full documentation for the Kubectl plugin can be found here.
apiversion: kubernative/kubeops/sina/user/v4
name: deployExample
description: "This Package is an example.
It shows how to deploy an artifact to your cluster using the helm plugin."
version: 0.1.0
includes:
files:
manifest: "deploy.yaml"
containers:
nginx-ingress:
registry: registry.k8s.io
image: ingress-nginx/controller
tag: v1.5.1
webhook-certgen:
registry: registry.k8s.io
image: ingress-nginx/kube-webhook-certgen
tag: v20220916-gd32f8c343
docs: docs.tgz
logo: logo.png
installation:
includes:
files:
- manifest
containers:
- nginx-ingress
- webhook-certgen
tasks:
- kubectl:
operation: "apply"
flags: " -f <absolute path>/deploy.yaml"
sudo: true
sudoPassword: "toor"
...
update:
tasks:
delete:
tasks:
Once the package.yaml
file has been fully configured, all files must be combined into a KOSI package. To do this, execute the following command in the directory where the package.yaml
file is located.
kosi build
To make the generated KOSI package available on other machines, it is pushed to the user’s private KubeOps Hub. To do this, the user must first log in to the hub.
$ kosi login -u <username>
2023-02-04 11:19:43 Info: kosi version: 2.6.0_Beta0
2023-02-04 11:19:43 Info: Please enter password
****************
2023-02-04 11:19:26 Info: Login Succeeded to Hub.
$ kosi push --hub kosi
2023-02-04 11:23:18 Info: kosi version: 2.6.0_Beta0
2023-02-04 11:23:19 Info: Push to Private Registry registry1.kubernative.net/<username>/
Deployment
Once the KOSI package has been created and published, it needs to be installed on the Admin node. The following command will download and execute the package. The package name and version refer to the values defined in package.yaml
with the keys name
and version
.
kosi install --hub <username> <username>/<packagename>:<version>
For the example package, the command would be: kosi install --hub <username><username>/deployExample:0.1.0
.