ここでは、静的 OSS ボリュームの使用方法について説明します。

ボリュームとして直接

  1. 次の内容の oss-deploy.yaml ファイルを作成します。
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx-oss-deploy
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx-flexvolume-oss
            image: nginx
            volumeMounts:
              - name: "oss1"
                mountPath: "/data"
            livenessProbe:
              exec:
                command:
                - sh
                - -c
                - cd /data
              initialDelaySeconds: 30
              periodSeconds: 30
          volumes:
            - name: "oss1"
              flexVolume:
                driver: "alicloud/oss"
                options:
                  bucket: "docker"
                  url: "oss-cn-hangzhou.aliyuncs.com"
                  akId: ***
                  akSecret: ***
                  otherOpts: "-o max_stat_cache_size=0 -o allow_other"
  2. 次のコマンドを実行し、ポッドを作成します。
    kubectl apply -f oss-deploy.yaml

PV および PVC を介して

  1. PV を作成します。
    コンソールまたは YAML ファイルを使用して、PV を作成することができます。
    • YAML ファイルによる PV の作成
      次の oss-pv.yaml ファイルを使用して PV を作成します。
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-oss
      spec:
        capacity:
          storage: 5Gi
        accessModes:
          - ReadWriteMany
        storageClassName: oss
        flexVolume:
          driver: "alicloud/oss"
          options:
            bucket: "docker"
            url: "oss-cn-hangzhou.aliyuncs.com"
            akId: ***
            akSecret: ***
            otherOpts: "-o max_stat_cache_size=0 -o allow_other"
    • コンソールを介して PV を作成
      1. Container Service コンソール にログインします。
      2. 左側のナビゲーションペインで、[クラスター] > [ボリューム] を選択して、[ボリューム及ボリュームクレーム] ページへ移動します。
      3. [ボリューム]タブでクラスターを選択して、右上隅の [作成] をクリックします。
      4. [ボリュームの作成] ダイアログボックスでパラメーターを設定します。
        • ストレージタイプ: この例では、ストレージタイプを OSS に設定します。
        • ボリューム名: PVの名前。 ボリューム名はクラスター内で一意である必要があります。 この例では、pv-oss と入力します。
        • 容量: PVの容量。
        • アクセスモード: デフォルトは ReadWriteMany です。
        • アクセスキー ID および アクセスキーシークレット: Alibaba Cloud OSS へのアクセスに使用される AccessKey ペア。
        • オプションのパラメーター: カスタムパラメーターは、-o *** -o *** の形式で入力できます。 
        • バケット ID: 使用する OSS バケット。 [バケット選択] をクリックします。 表示されるダイアログボックスで、対象のバケットを選択し、[選択] をクリックします。
        • アクセスドメイン名。 選択したバケットと ECS インスタンスが同じリージョンにある場合は、[インターネット] を選択します。 それ以外の場合は、クラスターが VPC ネットワークに展開されている場合には[VPC]、またはクラスターがクラシックネットワークに展開されている場合には [イントラネット] を選択します。
        • タグ: タグを PV に追加します。
      5. 設定完了後、[作成] をクリックします。
  2. PVC を作成します。
    次の oss-pvc.yaml ファイルを使用して、PVC を作成します。
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-oss
    spec:
      storageClassName: oss
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
  3. ポッドを作成します。
    次の oss-deploy.yaml ファイルを使用して、ポッドを作成します。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: oss-static
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-oss
                mountPath: "/data"
            livenessProbe:
              exec:
                command:
                - sh
                - -c
                - cd /data
              initialDelaySeconds: 30
              periodSeconds: 30
            volumes:
            - name: pvc-oss
              persistentVolumeClaim:
                claimName: pvc-oss           

シークレットを介して AccessKey を使用

  1. 次のコマンドを実行して、シークレットを作成します。
    # kubectl create secret generic osssecret --from-literal=akId='111111' --from-literal=akSecret='2222222' --type=alicloud/oss -n default
    
    akId: Your AccessKey ID;
    akSecret:Your AccessKey secret;
    secret type: Enter alicloud/oss;
    namespace: Specify the namespace where the Pod belongs to.
    osssecret: The name of the secret.
  2. PV でシークレットを使用します。
    secretRef フィールドを使用して、シークレットを指定します。
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-oss
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      storageClassName: oss
      flexVolume:
        driver: "alicloud/oss"
        secretRef:
          name: "osssecret"
        options:
          bucket: "docker"
          url: "oss-cn-hangzhou.aliyuncs.com"
          otherOpts: "-o max_stat_cache_size=0 -o allow_other"
  3. ボリュームでシークレットを使用します。
    secretRef フィールドを使用して、シークレットを指定します。
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx-oss-deploy1
    spec:
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx-flexvolume-oss
            image: nginx
            volumeMounts:
              - name: "oss1"
                mountPath: "/data"
                subPath: "hello"
          volumes:
            - name: "oss1"
              flexVolume:
                driver: "alicloud/oss"
                secretRef:
                  name: "osssecret"
                options:
                  bucket: "aliyun-docker"
                  url: "oss-cn-hangzhou.aliyuncs.com"
                  otherOpts: "-o max_stat_cache_size=0 -o allow_other"
    シークレットを使用して AccessKey を設定する場合、シークレットと対応するポッドは同じ名前空間に存在する必要があります。