ノート:

Oracle Cloud Native Environmentでのアプリケーション・カタログの使用

イントロダクション

アプリケーション・カタログは、Oracle Cloud Native Environment (Oracle CNE) Kubernetesクラスタにインストールできる検索可能なソフトウェア・リポジトリです。Oracle CNEでは、Oracle CNEに付属するOracleカタログと、アーティファクト・ハブと互換性のある外部カタログの2つのアプリケーション・カタログがサポートされています。

Oracleカタログには、Oracleが提供する厳選されたソフトウェアが用意されています。Oracle CNEには、埋込みと呼ばれる組込みカタログが付属しています。Kubernetesクラスタをデプロイせずに、埋込みカタログを使用できます。埋込みカタログは、ocne CLIを更新すると更新されます。

Oracle CNEに付属するもう1つのカタログは、Oracle Cloud Native Environmentアプリケーション・カタログと呼ばれます。このカタログは、ocne-systemネームスペースのocne-catalogポッドとしてKubernetesクラスタにデプロイされます。

埋込みカタログは、ocne CLIを更新すると更新され、Kubernetesバージョンを更新するとOracleカタログが更新されます。この動作は、Oracle提供の2つのカタログの内容が異なる可能性があることを意味します。

目的

このチュートリアルの内容:

前提条件

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を設定します。この変数は、python3.6モジュールの下にあるOracle Cloud Infrastructure SDK for PythonのRPMパッケージが環境によってインストールされるため必要です。

    デフォルトのデプロイメント・シェイプでは、AMD CPUおよびOracle Linux 8が使用されます。Intel CPUまたはOracle Linux 9を使用するには、デプロイメント・コマンドに-e instance_shape="VM.Standard3.Flex"または-e os_version="9"を追加します。

    重要:プレイブックが正常に実行されるまで待機し、一時停止タスクに到達します。プレイブックのこの段階で、Oracle CNEのインストールが完了し、インスタンスの準備ができました。前の再生に注意してください。これは、デプロイするノードのパブリックIPアドレスとプライベートIPアドレス、および演習の実行中に必要なその他のデプロイメント情報を出力します。

Kubernetesクラスタへのアクセス

  1. ターミナルを開き、SSHを介してocneインスタンスに接続します。

    ssh oracle@<ip_address_of_instance>
    
  2. クラスタが安定し、すべてのポッドが実行中の状態でレポートされるまで待機します。

    watch kubectl get pods -A
    

    すべてのポッドにSTATUSRunningと表示されたら、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. すべてのポッドが実行されていることを確認します。

    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
    

    プロメテウス・メトリック

    この出力は、kube-prometheus-stackのコンポーネントであるkube-state-metrics、ノード・エクスポータおよびアラート・マネージャが、積極的にメトリックを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カスタム・リソース定義(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 Help Centerを参照してください。