Use an Application Catalog with Oracle Cloud Native Environment

0
0
Send lab feedback

Use an Application Catalog with Oracle Cloud Native Environment

Introduction

An application catalog is a searchable software repository that you can install on an Oracle Cloud Native Environment (Oracle CNE) Kubernetes cluster. Oracle CNE supports two application catalogs: the Oracle catalog that ships with Oracle CNE and the external catalog compatible with Artifact Hub .

The Oracle catalog provides a curated selection of software supplied by Oracle. Oracle CNE ships with a built-in catalog called embedded. You can use the embedded catalog without deploying a Kubernetes cluster. The embedded catalog is updated when you update the ocne CLI.

The other catalog that ships with Oracle CNE is called the Oracle Cloud Native Environment Application Catalog. This catalog deploys onto your Kubernetes cluster as the ocne-catalog pod in the ocne-system namespace.

The embedded catalog is updated when you update the ocne CLI, and the Oracle Catalog is updated when you update the Kubernetes version. This behavior means the contents of the two Oracle-supplied catalogs may differ.

Objectives

In this tutorial, you will learn:

  • How to manage an Oracle-supplied catalog.
  • How to install an application from an Oracle-supplied catalog.

Prerequisites

  • Installation of Oracle Cloud Native Environment
    • a single control node and one worker node

Configure Oracle CNE

Note: If running in your own tenancy, read the linux-virt-labs GitHub project README.md and complete the prerequisites before deploying the lab environment.

  1. Open a terminal on the Luna Desktop.

  2. Clone the linux-virt-labs GitHub project.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
  3. Change into the working directory.

    cd linux-virt-labs/ocne2
  4. Install the required collections.

    ansible-galaxy collection install -r requirements.yml
  5. Deploy the lab environment.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e install_ocne_rpm=true -e create_ocne_cluster=true -e "ocne_cluster_node_options='-n 1 -w 1'"

    The free lab environment requires the extra variable local_python_interpreter, which sets ansible_python_interpreter for plays running on localhost. This variable is needed because the environment installs the RPM package for the Oracle Cloud Infrastructure SDK for Python, located under the python3.6 modules.

    The default deployment shape uses the AMD CPU and Oracle Linux 8. To use an Intel CPU or Oracle Linux 9, add -e instance_shape="VM.Standard3.Flex" or -e os_version="9" to the deployment command.

    Important: Wait for the playbook to run successfully and reach the pause task. At this stage of the playbook, the installation of the Oracle CNE is complete, and the instances are ready. Take note of the previous play, which prints the public and private IP addresses of the nodes it deploys and any other deployment information needed while running the lab.

Access the Kubernetes Cluster

  1. Open a terminal and connect via SSH to the ocne instance.

    ssh oracle@<ip_address_of_instance>
  2. Wait for the cluster to stabilize and all pods to report in a running state.

    watch kubectl get pods -A

    Once all the pods show a STATUS of Running, type ctrl-c to exit the watch command.

  3. Confirm how many nodes are present.

    kubectl get nodes

Managing a Catalog

  1. List the available catalogs.

    ocne catalog list
  2. Display details about the Oracle catalog.

    ocne catalog get --name 'Oracle Cloud Native Environment Application Catalog'

    Example Output:

    [oracle@ocne ~]$ ocne catalog get --name 'Oracle Cloud Native Environment Application Catalog'
    
    Catalog
    --------
    apiVersion: v1
    entries:
      bootstrap-capi:
      - apiVersion: v2
        appVersion: 1.9.4
        created: "2025-02-24T01:37:20.540493324Z"
        description: A Helm chart for Cluster API bootstrap providers
    ...
    ...
        name: ui
        sources:
        - https://github.com/headlamp-k8s/headlamp/tree/main/charts/headlamp
        - https://github.com/headlamp-k8s/headlamp
        type: application
        urls:
        - ui-2.0.0.tgz
        version: 2.0.0
  3. List all of the applications in the Oracle catalog.

    ocne catalog search

    Example Output:

    [oracle@ocne ~]$ ocne catalog search
    APPLICATION             	VERSION
    bootstrap-capi          	1.9.4  
    bootstrap-capi          	1.7.1  
    cert-manager            	1.14.5
    ...
    ...
    tigera-operator         	1.29.3 
    ui                      	2.0.0  
  4. Search the Oracle catalog for something specific.

    ocne catalog search --pattern 'prom*'

    Example Output:

    [oracle@ocne ~]$ ocne catalog search --pattern 'prom*'
    APPLICATION             	VERSION
    kube-prometheus-stack   	0.63.0 
    kube-proxy              	2.0.0  
    prometheus              	2.31.1 
    prometheus-adapter      	0.10.0 
    prometheus-node-exporter	1.6.1  

Reviewing Installed Applications

  1. List the installed applications in the cluster.

    ocne application list -A

    Example Output:

    [oracle@ocne ~]$ ocne application list -A
    Releases
    NAME                       	NAMESPACE   	CHART                      	STATUS  	REVISION	APPVERSION
    core-dns                   	kube-system 	coredns                    	deployed	1       	2.0.0     
    flannel                    	kube-flannel	flannel                    	deployed	1       	2.0.0     
    kube-proxy                 	kube-system 	kube-proxy                 	deployed	1       	2.0.0     
    kubernetes-gateway-api-crds	kube-system 	kubernetes-gateway-api-crds	deployed	1       	1.2.1     
    oci-ccm                    	kube-system 	oci-ccm                    	deployed	1       	1.30.0    
    ocne-catalog               	ocne-system 	ocne-catalog               	deployed	1       	2.0.0     
    ui                         	ocne-system 	ui                         	deployed	1       	2.0.0  

    Note: This is a useful way to confirm what applications from a catalog you deployed onto your cluster.

  2. Review details of the installed application.

    ocne application show --namespace ocne-system --release ui

    Where:

    • --namespace - The namespace where the application is deployed.
    • --release - The name of the application
    • --computed - Not used in this example but returns details of the YAML deployment used by the deployed application.

    Example output:

    [oracle@ocne ~]$ ocne application show --namespace ocne-system --release ui
    image:
      tag: current
    ----------------
    NAME: ui
    NAMESPACE: ocne-system
    CHART: ui
    STATUS: deployed
    REVISION: 1
    APPVERSION: 2.0.0

Install an Application

  1. Install the kube-prometheus-stack application.

    ocne application install --release kube-prometheus-stack --namespace default --name kube-prometheus-stack

    Example Output:

    [oracle@ocne ~]$ ocne application install --release kube-prometheus-stack --namespace default --name kube-prometheus-stack
    INFO[2025-03-21T16:24:58Z] Application installed successfully  
  2. Confirm the installation of the application.

    ocne application list -A

    Example Output:

    [oracle@ocne ~]$ ocne application list -A
    Releases
    NAME                       	NAMESPACE   	CHART                      	STATUS  	REVISION	APPVERSION
    core-dns                   	kube-system 	coredns                    	deployed	1       	2.0.0     
    flannel                    	kube-flannel	flannel                    	deployed	1       	2.0.0     
    kube-prometheus-stack      	default     	kube-prometheus-stack      	deployed	1       	0.63.0    
    kube-proxy                 	kube-system 	kube-proxy                 	deployed	1       	2.0.0     
    kubernetes-gateway-api-crds	kube-system 	kubernetes-gateway-api-crds	deployed	1       	1.2.1     
    oci-ccm                    	kube-system 	oci-ccm                    	deployed	1       	1.30.0    
    ocne-catalog               	ocne-system 	ocne-catalog               	deployed	1       	2.0.0     
    ui                         	ocne-system 	ui                         	deployed	1       	2.0.0  
  3. Confirm all the Pods are running.

    kubectl get pods -n default

    Example Output:

    [oracle@ocne ~]$ kubectl get pods -n default
    NAME                                                       READY   STATUS    RESTARTS   AGE
    alertmanager-kube-prometheus-stack-alertmanager-0          2/2     Running   0          2m30s
    kube-prometheus-stack-kube-state-metrics-f5869c58f-fnncf   1/1     Running   0          2m37s
    kube-prometheus-stack-operator-76b9d6954f-7rnqc            1/1     Running   0          2m37s
    kube-prometheus-stack-prometheus-node-exporter-g6b6n       1/1     Running   0          2m37s
    kube-prometheus-stack-prometheus-node-exporter-prqxd       1/1     Running   0          2m37s
    kube-prometheus-stack-prometheus-node-exporter-sppst       1/1     Running   0          2m37s
    kube-prometheus-stack-prometheus-node-exporter-vw797       1/1     Running   0          2m37s
    prometheus-kube-prometheus-stack-prometheus-0              2/2     Running   0          2m30s
  4. Redirect local traffic to the Prometheus service in your cluster.

    kubectl port-forward -n default svc/kube-prometheus-stack-prometheus 9091:9090

    Example Output:

    [oracle@ocne ~]$ kubectl port-forward -n default svc/kube-prometheus-stack-prometheus 9091:9090
    Forwarding from 127.0.0.1:9091 -> 9090
    Forwarding from [::1]:9091 -> 9090

Access the Prometheus UI

  1. Open a new terminal window and configure an SSH tunnel to the ocne instance.

    ssh -L 9093:localhost:9091 oracle@<ip_address_of_node>
  2. Open a web browser and enter the URL.

    http://localhost:9093/metrics

    prometheus-metrics

    This output confirms that the kube-state-metrics, node exporters, and Alert Manager, which are components of the kube-prometheus-stack, are actively scraping metrics into Prometheus.

  3. Close the browser and exit the terminal window with the SSH tunnel, as they are no longer needed.

  4. Switch to the terminal session that is running the port forward.

  5. Stop the port forward by typing ctrl-c.

Uninstall an Application

  1. Uninstall the kube-prometheus-stack application.

    This step removes the Kubernetes components associated with the application and deletes the instance.

    ocne application uninstall --release kube-prometheus-stack --namespace default

    Example Output:

    [oracle@ocne ~]$ ocne application uninstall --release kube-prometheus-stack --namespace default
    INFO[2025-03-21T18:52:59Z] Uninstalling release kube-prometheus-stack   
    INFO[2025-03-21T18:53:01Z] kube-prometheus-stack uninstalled successfully 
  2. Confirm it is uninstalled.

    ocne application list -A
  3. Remove the Kubernetes Custom Resource Definitions (CRD) associated with kube-prometheus-stack.

    Some applications require you to complete manual steps after uninstalling the application using the ocne application uninstall command. You can find details for each application in the charts directory of the Oracle CNE GitHub project .

    kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
    kubectl delete crd alertmanagers.monitoring.coreos.com
    kubectl delete crd podmonitors.monitoring.coreos.com
    kubectl delete crd probes.monitoring.coreos.com
    kubectl delete crd prometheuses.monitoring.coreos.com
    kubectl delete crd prometheusrules.monitoring.coreos.com
    kubectl delete crd servicemonitors.monitoring.coreos.com
    kubectl delete crd thanosrulers.monitoring.coreos.com

    Example Output:

    [oracle@ocne ~]$ kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
    customresourcedefinition.apiextensions.k8s.io "alertmanagerconfigs.monitoring.coreos.com" deleted
    [oracle@ocne ~]$ kubectl delete crd alertmanagers.monitoring.coreos.com
    customresourcedefinition.apiextensions.k8s.io "alertmanagers.monitoring.coreos.com" deleted
    [oracle@ocne ~]$ kubectl delete crd podmonitors.monitoring.coreos.com
    customresourcedefinition.apiextensions.k8s.io "podmonitors.monitoring.coreos.com" deleted
    [oracle@ocne ~]$ kubectl delete crd probes.monitoring.coreos.com
    customresourcedefinition.apiextensions.k8s.io "probes.monitoring.coreos.com" deleted
    [oracle@ocne ~]$ kubectl delete crd prometheuses.monitoring.coreos.com
    customresourcedefinition.apiextensions.k8s.io "prometheuses.monitoring.coreos.com" deleted
    [oracle@ocne ~]$ kubectl delete crd prometheusrules.monitoring.coreos.com
    customresourcedefinition.apiextensions.k8s.io "prometheusrules.monitoring.coreos.com" deleted
    [oracle@ocne ~]$ kubectl delete crd servicemonitors.monitoring.coreos.com
    customresourcedefinition.apiextensions.k8s.io "servicemonitors.monitoring.coreos.com" deleted

    The application, in this example, kube-prometheus-stack, is now completely removed from your Kubernetes cluster,

Next Steps

This tutorial introduced you to what you use a Catalog for. Then, how to install, run, and remove an application from a Catalog on your Oracle CNE Kubernetes cluster. Please refer to the Oracle CNE documentation for more details.

SSR