機械翻訳について

2 Oracle Cloud Infrastructureストレージの使用

重要:

このドキュメントで説明されているソフトウェアは、Extended SupportまたはSustaining Supportにあります。 詳細は、「Oracleオープン・ソース・サポート・ポリシー」を参照してください。

このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお勧めします。

この章では、Oracle Cloud Infrastructure Cloud Controller Managerモジュールをインストールして使用し、Oracle Cloud Infrastructureインスタンス上のOracle Cloud Native EnvironmentのKubernetesアプリケーションに対して動的にプロビジョニングされる永続ストレージを設定する方法について説明します。

前提条件

Oracle Cloud Infrastructure Cloud Controller Managerモジュールを設定する前に、Oracle Cloud Infrastructure環境に関する情報を収集する必要があります。 必要な最も一般的な情報は、次のとおりです:

  • リージョンの識別子。

  • テナンシのOCID。

  • コンパートメントのOCID。

  • ユーザーのOCID。

  • API署名キー・ペアの公開キーのフィンガープリント。

  • API署名キー・ペアの秘密キー・ファイル。 秘密キーはプライマリ・コントロール・プレーン・ノードにコピーする必要があります。 これは、Kubernetesモジュールの作成時に--master-nodesオプションにリストされた最初のコントロール・プレーン・ノードです。

Oracle Cloud Infrastructureネットワーキングまたは他のコンポーネントに関連する詳細情報が必要な場合があります。

これらの各識別子またはコンポーネントの検索の詳細は、「Oracle Cloud Infrastructureドキュメント」を参照してください。

Oracle Cloud Infrastructure Cloud Controller Managerモジュールのデプロイ

Oracle Cloud Infrastructureアプリケーション・ロード・バランサを使用するようにOracle Cloud Infrastructure Cloud Controller Managerモジュールをすでにインストールしている場合は、ストレージをプロビジョニングするために別のモジュールを作成する必要はありません。 Oracle Cloud Infrastructure Cloud Controller Managerモジュールは、Oracle Cloud Infrastructureストレージ・バランサとロード・バランサの両方をプロビジョニングするために使用されます。

単一のolcnectl module createコマンドを使用して、KubernetesクラスタにOracle Cloud Infrastructureストレージを設定するために必要なすべてのモジュールをデプロイできます。 このメソッドは、Kubernetesクラスタのデプロイと同時にOracle Cloud Infrastructure Cloud Controller Managerモジュールをデプロイする場合に便利です。

Kubernetesモジュールの既存のデプロイメントがある場合は、Oracle Cloud Infrastructure Cloud Controller Managerモジュールをデプロイするときにそのインスタンスを指定できます。

この項では、Oracle Cloud Infrastructure Cloud Controller Managerモジュールのデプロイに必要な各コンポーネントのインストールについて説明します。

モジュールの作成時に使用可能なプラットフォームCLIコマンド・オプションの完全なリストについては、「プラットフォーム・コマンドライン・インタフェース」olcnectl module createコマンドを参照してください。

Oracle Cloud Infrastructure Cloud Controller Managerモジュールをデプロイするには:

  1. 環境が設定されていない場合は、モジュールをデプロイできる環境を作成します。 環境の設定方法の詳細は、スタート・ガイドを参照してください。 この例の環境の名前は、myenvironmentです。

  2. Kubernetesモジュールがまだ設定またはデプロイされていない場合は、設定します。

    環境へのKubernetesモジュールの追加の詳細は、コンテナ・オーケストレーションを参照してください。 この例のKubernetesモジュールの名前は、myclusterです。

  3. Helmモジュールを作成してインストールしていない場合は作成します。 この例のHelmモジュールは、myhelmという名前で、--helm-kubernetes-moduleオプションを使用してmyclusterという名前のKubernetesモジュールに関連付けられています。

    olcnectl module create \
    --environment-name myenvironment \
    --module helm \
    --name myhelm \
    --helm-kubernetes-module mycluster 
  4. 新しいHelmモジュールをデプロイする場合は、olcnectl module validateコマンドを使用して、Helmモジュールをノードにデプロイできることを確認します。 たとえば:

    olcnectl module validate \
    --environment-name myenvironment \
    --name myhelm
  5. 新しいHelmモジュールをデプロイする場合は、olcnectl module installコマンドを使用してHelmモジュールをインストールします。 たとえば:

    olcnectl module install \
    --environment-name myenvironment \
    --name myhelm 

    Helmソフトウェア・パッケージはコントロール・プレーン・ノードにインストールされ、HelmモジュールはKubernetesクラスタにデプロイされます。

  6. Oracle Cloud Infrastructure Cloud Controller Managerモジュールを作成し、--oci-ccm-helm-moduleオプションを使用してmyhelmという名前のHelmモジュールに関連付けます。 この例では、Oracle Cloud Infrastructure Cloud Controller Managerモジュールの名前はmyociです。

    olcnectl module create \
    --environment-name myenvironment \
    --module oci-ccm \
    --name myoci \
    --oci-ccm-helm-module myhelm \
    --oci-region us-ashburn-1 \
    --oci-tenancy ocid1.tenancy.oc1..unique_ID \
    --oci-compartment ocid1.compartment.oc1..unique_ID \
    --oci-user ocid1.user.oc1..unique_ID \
    --oci-fingerprint b5:52:... \
    --oci-private-key /home/opc/.oci/oci_api_key.pem 

    --moduleオプションは、モジュール・タイプを作成(oci-ccm)に設定します。 Oracle Cloud Infrastructure Cloud Controller Managerモジュールの名前は、--nameオプションを使用して定義します(この場合はmyociです)。

    --oci-ccm-helm-moduleオプションは、Helmモジュールの名前を設定します。 同じ名前の既存のHelmモジュールがある場合、プラットフォームAPIサーバーはそのHelmインスタンスを使用します。

    --oci-regionオプションは、使用するOracle Cloud Infrastructureリージョンを設定します。 この例のリージョンは、us-ashburn-1です。

    --oci-tenancyオプションは、テナンシのOCIDを設定します。

    --oci-compartmentオプションは、コンパートメントのOCIDを設定します。

    --oci-userオプションは、ユーザーのOCIDを設定します。

    --oci-fingerprintオプションは、Oracle Cloud Infrastructure API署名キーの公開キーのフィンガープリントを設定します。

    --oci-private-keyオプションは、Oracle Cloud Infrastructure API署名キーの秘密キーのロケーションを設定します。 秘密キーはプライマリ・コントロール・プレーン・ノードで使用可能である必要があります。

    モジュールの追加時に必要なすべてのオプションを含めない場合は、オプションを指定するように求められます。

  7. olcnectl module validateコマンドを使用して、Oracle Cloud Infrastructure Cloud Controller Managerモジュールをノードにデプロイできることを確認します。 たとえば:

    olcnectl module validate \
    --environment-name myenvironment \
    --name myoci
  8. olcnectl module installコマンドを使用して、Oracle Cloud Infrastructure Cloud Controller Managerモジュールをインストールします。 たとえば:

    olcnectl module install \
    --environment-name myenvironment \
    --name myoci

    Oracle Cloud Infrastructure Cloud Controller Managerモジュールは、Kubernetesクラスタにデプロイされます。

Oracle Cloud Infrastructure Cloud Controller Managerデプロイメントの確認

オペレータ・ノード上でolcnectl module instancesコマンドを使用して、Oracle Cloud Infrastructure Cloud Controller Managerモジュールがデプロイされていることを確認できます。 たとえば:

olcnectl module instances \
--environment-name myenvironment
INSTANCE                  MODULE    	STATE    
mycluster                 kubernetes	installed
myhelm                    helm      	installed
myoci                     oci-ccm   	installed
control1.example.com      node      	installed
...

MODULE列のoci-ccmのエントリは、installed状態であることに注意してください。

また、olcnectl module reportコマンドを使用して、モジュールに関する情報を確認します。 たとえば、次のコマンドを使用して、myenvironmentmyociという名前のOracle Cloud Infrastructure Cloud Controller Managerモジュールを確認します:

olcnectl module report \
--environment-name myenvironment \
--name myoci \
--children

olcnectl module reportコマンドの構文の詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。

コントロール・プレーン・ノードでは、kubectl get scコマンドを使用して、Oracle Cloud Infrastructureインストーラのoci-bv StorageClassが作成されていることを確認することもできます:

kubectl get sc
NAME     PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ...
oci-bv   blockvolume.csi.oraclecloud.com   Delete          WaitForFirstConsumer   ...

kubectl describe scコマンドを使用して、StorageClassの詳細を取得できます。 たとえば:

kubectl describe sc oci-bv
Name:                  oci-bv
IsDefaultClass:        No
Annotations:           meta.helm.sh/release-name=myoci,meta.helm.sh/release-namespace=default
Provisioner:           blockvolume.csi.oraclecloud.com
Parameters:            <none>
AllowVolumeExpansion:  <unset>
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     WaitForFirstConsumer
Events:                <none>

Oracle Cloud Infrastructureブロック・ストレージの作成

この項では、Oracle Cloud Infrastructureブロック・ストレージを作成して、Kubernetesで実行されているアプリケーションに永続ストレージを提供できることを確認する基本的なテストを示します。

Oracle Cloud Infrastructureストレージを使用するテスト・アプリケーションを作成するには:

  1. Kubernetes PersistentVolumeClaimファイルを作成します。 コントロール・プレーン・ノードで、pvc.yamlという名前のファイルを作成します。 ファイルに次の内容をコピーします。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
     name: myoci-pvc
    spec:
     accessModes:
      - ReadWriteOnce
     storageClassName: oci-bv
     resources:
      requests:
        storage: 50Gi

    Oracle Cloud InfrastructureストレージのaccessModes設定はReadWriteOnceである必要があります。 Oracle Cloud Infrastructureブロックの最小サイズは50Giです。

  2. Kubernetes PersistentVolumeClaimを作成します。

    kubectl apply -f pvc.yaml
    persistentvolumeclaim/myoci-pvc created
  3. kubectl get pvcコマンドを使用してPersistentVolumeClaimが作成されていることがわかります:

    kubectl get pvc 
    NAME        STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    myoci-pvc   Pending                                      oci-bv         15s

    STATUSPendingで、アプリケーションが要求を待機していることを意味します。

    kubectl describe pvcコマンドを使用して、PersistentVolumeClaimの詳細を取得できます。 たとえば:

    kubectl describe pvc myoci-pvc 
    Name:          myoci-pvc
    Namespace:     default
    StorageClass:  oci-bv
    Status:        Pending
    Volume:        
    Labels:        <none>
    Annotations:   <none>
    Finalizers:    [kubernetes.io/pvc-protection]
    Capacity:      
    Access Modes:  
    VolumeMode:    Filesystem
    Used By:       <none>
    Events:
      Type    Reason                Age                     From                         ...
      ----    ------                ----                    ----                         
      Normal  WaitForFirstConsumer  2m18s (x26 over 8m29s)  persistentvolume-controller  ...
  4. PersistentVolumeClaimを使用するKubernetesアプリケーションを作成します。 nginx.yamlという名前のファイルを作成し、次のファイルをファイルにコピーします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        run: mynginx
      name: mynginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          run: mynginx
      template:
        metadata:
          labels:
            run: mynginx
        spec:
          containers:
          - image: container-registry.oracle.com/olcne/nginx:1.17.7 
            name: mynginx
            ports:
            - containerPort: 80
            volumeMounts:
            - name: nginx-pvc
              mountPath: /usr/share/nginx/html
          volumes:
          - name: nginx-pvc
            persistentVolumeClaim:
              claimName: myoci-pvc
  5. アプリケーションを起動します:

    kubectl apply -f nginx.yaml
    deployment.apps/mynginx created
  6. kubectl get deploymentコマンドを使用して、アプリケーションが実行されていることを確認できます:

    kubectl get deployment
    NAME      READY   UP-TO-DATE   AVAILABLE   AGE
    mynginx   1/1     1            1           63s
  7. kubectl describe deploymentコマンドを使用して、アプリケーションがPersistentVolumeClaimを使用してOracle Cloud Infrastructureに永続記憶域を提供していることがわかります:

    kubectl describe deployment mynginx
    ...
    Pod Template:
      Labels:  run=mynginx
      Containers:
       mynginx:
        Image:        container-registry.oracle.com/olcne/nginx:1.17.7
        Port:         80/TCP
        Host Port:    0/TCP
        Environment:  <none>
        Mounts:
          /usr/share/nginx/html from nginx-pvc (rw)
      Volumes:
       nginx-pvc:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  myoci-pvc
        ReadOnly:   false
    ...

    ClaimNameは、前に作成したPersistentVolumeClaimの名前であるmyoci-pvcであることに注意してください。

    kubectl get pvcコマンドを使用して、このアプリケーションにPersistentVolumeClaimがバインドされていることがわかります:

    kubectl get pvc 
    NAME        STATUS   VOLUME             CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    myoci-pvc   Bound    csi-84175067-...   50Gi       RWO            oci-bv         1m

    ヒント:

    Oracle Cloud Infrastructureにログインすると、VOLUME列に名前を付けて作成されたブロック・ボリュームがあることがわかります。 ブロック・ボリュームは、Kubernetesアプリケーションが実行されているコンピュート・インスタンスにアタッチされます。

  8. 次を使用して、テスト・アプリケーションを削除できます:

    kubectl delete deployment mynginx 
    deployment.apps "mynginx" deleted
  9. 次を使用して、PersistentVolumeClaimを削除できます:

    kubectl delete pvc myoci-pvc 
    persistentvolumeclaim "myoci-pvc" deleted

    ストレージが削除されます。

    ヒント:

    Oracle Cloud Infrastructureにログインすると、ブロック・ボリュームが終了していることがわかります。

Oracle Cloud Infrastructure Cloud Controller Managerモジュールの削除

Oracle Cloud Infrastructure Cloud Controller Managerモジュールのデプロイメントを削除し、Kubernetesクラスタをそのままにできます。 これを行うには、環境からOracle Cloud Infrastructure Cloud Controller Managerモジュールを削除します。

olcnectl module uninstallコマンドを使用して、Oracle Cloud Infrastructure Cloud Controller Managerモジュールを削除します。 たとえば、myenvironmentという名前の環境でmyociという名前のOracle Cloud Infrastructure Cloud Controller Managerモジュールをアンインストールするには:

olcnectl module uninstall \
--environment-name myenvironment \
--name myoci

Oracle Cloud Infrastructure Cloud Controller Managerモジュールは環境から削除されます。