注意:

将应用程序目录与 Oracle Cloud Native Environment 一起使用

简介

应用程序目录是可搜索的软件资料档案库,您可以将其安装在 Oracle Cloud Native Environment (Oracle CNE) Kubernetes 集群上。Oracle CNE 支持两个应用程序目录:附带 Oracle CNE 的 Oracle 目录以及与 Artifact Hub 兼容的外部目录。

Oracle 目录提供了由 Oracle 提供的精选软件。Oracle CNE 附带了一个名为嵌入的内置目录。您可以在不部署 Kubernetes 集群的情况下使用嵌入式目录。更新 ocne CLI 时,会更新 embedded 目录。

Oracle CNE 附带的另一个目录称为 Oracle Cloud Native Environment Application Catalog 。此目录作为 ocne-system 名称空间中的 ocne-catalog 云池部署到 Kubernetes 集群上。

更新 ocne CLI 时会更新 embedded 目录,更新 Kubernetes 版本时会更新 Oracle 目录。此行为意味着 Oracle 提供的两个目录的内容可能有所不同。

目标

在本教程中,您将了解:

先决条件

配置 Oracle CNE

注:如果在您自己的租户中运行,请阅读 linux-virt-labs GitHub 项目 README.md ,并在部署实验室环境之前完成先决条件。

  1. 在 Luna 桌面上打开一个终端。

  2. 克隆 linux-virt-labs GitHub 项目。

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. 转到工作目录。

    cd linux-virt-labs/ocne2
    
  4. 安装所需的集合。

    ansible-galaxy collection install -r requirements.yml
    
  5. 部署实验室环境。

    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'"
    

    空闲实验室环境需要额外的变量 local_python_interpreter,该变量为在 localhost 上运行的播放设置 ansible_python_interpreter。此变量是必需的,因为环境为 Python 的 Oracle Cloud Infrastructure SDK 安装 RPM 程序包,该程序包位于 python3.6 模块下。

    默认部署配置使用 AMD CPU 和 Oracle Linux 8。要使用 Intel CPU 或 Oracle Linux 9,请将 -e instance_shape="VM.Standard3.Flex"-e os_version="9" 添加到部署命令。

    重要提示:等待剧本成功运行并进入暂停任务。在手册的这一阶段,Oracle CNE 的安装已完成,实例已准备就绪。记下之前的播放,该播放会打印其部署的节点的公共和专用 IP 地址以及运行实验室时所需的任何其他部署信息。

访问 Kubernetes 集群

  1. 打开终端并通过 SSH 连接到 ocne 实例。

    ssh oracle@<ip_address_of_instance>
    
  2. 等待集群稳定,所有云池报告都处于正在运行状态。

    watch kubectl get pods -A
    

    所有 pod 显示 STATUS Running 后,键入 ctrl-c 退出 watch 命令。

  3. 确认存在多少节点。

    kubectl get nodes
    

管理目录

  1. 列出可用的目录。

    ocne catalog list
    
  2. 显示有关 Oracle 目录的详细信息。

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

    输出示例:

    [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. 列出 Oracle 目录中的所有应用程序。

    ocne catalog search
    

    输出示例:

    [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. 在 Oracle 目录中搜索特定内容。

    ocne catalog search --pattern 'prom*'
    

    输出示例:

    [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  
    

检查已安装的应用程序

  1. 列出群集中的已安装应用程序。

    ocne application list -A
    

    输出示例:

    [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  
    

    注:这是一种用于确认从已部署到集群的目录中的应用程序的有效方法。

  2. 查看已安装应用程序的详细信息。

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

    其中:

    • --namespace- 部署应用程序的名称空间
    • --release - 应用程序的名称
    • --computed - 未在此示例中使用,但返回已部署应用程序使用的 YAML 部署的详细信息。

    输出示例:

    [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
    

安装应用程序

  1. 安装 kube-prometheus-stack 应用程序。

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

    输出示例:

    [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. 确认应用程序的安装。

    ocne application list -A
    

    输出示例:

    [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. 确认所有 Pod 都正在运行。

    kubectl get pods -n default
    

    输出示例:

    [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. 将本地流量重定向到集群中的 Prometheus 服务。

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

    输出示例:

    [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
    

访问 Prometheus UI

  1. 打开新终端窗口并配置指向 ocne 实例的 SSH 隧道。

    ssh -L 9093:localhost:9091 oracle@<ip_address_of_node>
    
  2. 打开 Web 浏览器并输入 URL。

    http://localhost:9093/metrics
    

    Prometheus-metrics

    此输出确认 kube-state-metrics 、节点导出器和警报管理器(它们是 kube-prometheus-stack 的组件)正在主动将度量抓取到 Prometheus 中。

  3. 关闭浏览器并使用 SSH 隧道退出终端窗口,因为它们不再需要。

  4. 切换到正在向前运行端口的终端会话。

  5. 通过键入 ctrl-c 停止端口转发。

卸载应用程序

  1. 卸载 kube-prometheus-stack 应用程序。

    此步骤将删除与应用程序关联的 Kubernetes 组件并删除实例。

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

    输出示例:

    [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. 确认已卸载。

    ocne application list -A
    
  3. 删除与 kube-prometheus-stack 关联的 Kubernetes 定制资源定义 (Custom Resource Definitions,CRD)。

    某些应用程序要求您在使用 ocne application uninstall 命令卸载应用程序后完成手动步骤。您可以在 Oracle CNE GitHub 项目charts 目录中找到每个应用程序的详细信息。

    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
    

    输出示例:

    [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
    

    在此示例中,应用程序 kube-prometheus-stack 现在已从 Kubernetes 集群中完全删除,

后续步骤

本教程介绍了目录的用途。然后,如何从 Oracle CNE Kubernetes 集群上的目录中安装、运行和删除应用程序。有关详细信息,请参阅 Oracle CNE 文档。

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心