このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


2021年9月30日木曜日

俺とkubernetesと時々vSphere -PodとServiceの作り方-

このブログは、コンテナのオーケストレーターであるkubernetesについて自分の知識をまとめることを目的として記事を書いています。

もともとなが~くvSphereのあれやこれやに携わってきたのでvSphereとの類似点や相違点についてもちょっと混ぜていけたりしたらいいかなぁとかも思っています。


今回は前回からの続きで、Podにストレージを追加するための作業をやっていきたいと思います。

今回はちょっと登場人物が多かったり、作業を行うための準備が必要だったりで少し難しいと思います。

文章だけだと難しいと思いますので、読み飛ばして実際にyamlから物を作成してもらったほうが早いかもしれません。


Podのストレージを永続ストレージと呼び、具体的にKubernetesではそれのことをPersistentVolumeと呼びます。

仮想マシンに置き換えると、仮想ディスクに当たる部分になります。

Pod同様PersistentVolumeもyamlで作るのですが、PersistentVolume(PV)を作っていい領域がどこかそれが定義されていないと作れません。

何のことかちょっとよくわからないかもしれませんが、vSphere的に言うと仮想ディスクを作成するためのデータストアを用意しないといけないという感じです。

では、そのデータストアをどう作るかというと、StorageClass(SC)というリソースを作成してKubernetesに「この領域が使えますよ」と定義するわけです。

これで、SCで定義された領域にPVを作ることができました。

しかし、この状態は、仮想ディスクはできたけど仮想ディスクを使うのは誰かという部分が設定されていません。

その設定を行えるようにするのがPersistentVolumeClaim(PVC)です。

PVCはPVを要求するためのリソースで、どんなサイズのPVが欲しいかという内容が定義されています。

このPVCをPodのyamlに書いてあげると、PVCに要求されたサイズのPVがPodと紐づくことができます。

これは文章で読んでもあんまり理解できないと思いますので、気にせず実際に作ってみましょう。


まずはStorageClassから。

ここでは、NFSやiSCSIなどの外部ストレージ装置ではなく、ローカル領域を指定します。

以下の内容をKubernetesクラスターにvi等で作成してください。


  local-sc.yaml

  ----

  kind: StorageClass

  apiVersion: storage.k8s.io/v1

  metadata:

    name: local-sc

  provisioner: kubernetes.io/no-provisioner

  ----


続いて、作成したStorageClassであるlocal-scを指定してPersistentVolumeを作成。

以下の内容をKubernetesクラスターにvi等で作成してください。


  local-pv.yaml

  ----

  apiVersion: v1

  kind: PersistentVolume

  metadata:

    name: local-pv

  spec:

    capacity:

      storage: 3Gi

    volumeMode: Filesystem

    accessModes:

      - ReadWriteOnce

    persistentVolumeReclaimPolicy: Delete

    storageClassName: local-sc

    hostPath:

      path: /local-pv/

  ----


さらに、用意したPersistentVolumeを要求するPersistentVolumeClaimを作成します。

以下の内容をKubernetesクラスターにvi等で作成してください。


  local-pvc.yaml

  ----

  apiVersion: v1

  kind: PersistentVolumeClaim

  metadata:

    name: local-pvc

  spec:

    accessModes:

    - ReadWriteOnce

    volumeMode: Filesystem

    resources:

      requests:

        storage: 3Gi

    storageClassName: local-sc

  ----


それでは順番に、作成を行いましょう


  kubectl apply -f local-sc.yaml

  kubectl apply -f local-pv.yaml

  kubectl apply -f local-pvc.yaml


確認は以下のコマンドで


  kubectl get sc,pv,pvc


出力結果はこんな感じ


  NAME                                                   PROVISIONER                                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE

  storageclass.storage.k8s.io/local-storage              kubernetes.io/no-provisioner                    Delete          Immediate           false                  82s 

  

  NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                    STORAGECLASS   REASON   AGE

  persistentvolume/local-pv                                   3Gi        RWO            Delete           Bound    default/local-pvc        local-sc                18s

  

  NAME                                   STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE

  persistentvolumeclaim/local-pvc        Bound     local-pv                                   3Gi        RWO            local-sc                   3s


と、ここまでで仮想マシンで言うと仮想ディスクができたわけです。

しかしこのままでは、この仮想ディスクを使う仮想マシンが誰かという設定がされていません。

そこでもう一つyamlが必要となります。


どんなyamlが必要となるかというと、Podのyamlです。

Podのymalにこのpvcを組み込むことで、PodがようやくPVCを使えるようになります。

前回作ったnginxのPodにくっ付けて新しいPodのyamlファイルを作ってみましょう


  nginx-pv.yaml

  ----

  kind: Pod

  apiVersion: v1

  metadata:

    name: nginx-pod-2

    labels:

      app: wcp-demo

  spec:

    containers:

    - image: nginx

      name: nginx-container

      volumeMounts:

      - name: nginx-pv

        mountPath: /pv

    volumes:

    - name: nginx-pv

      persistentVolumeClaim: 

        claimName: local-pvc

  ----


これを作成するとPodが付いています。


  kubectl apply -f nginx-pv.yaml


しかし、実際にPVはどこにできているかというと、Podが動いているnodeの/local-pv/になります。

確認するには"kubectl get pod -o wide"を実行するとわかります。


Podにくっ付けられたPVは本当にくっついているか確認します。

Podの内部に入って/pvディレクトリがあるか確認しましょう。


  kubectl exec -i -t pod/nginx-pod-2 /bin/bash


  cd /pv


ディレクトリ/pvに移動することができました。

ダミーファイルを作成してみましょう。


  dd if=/dev/zero of=2G.dummy bs=1M count=2048


ファイルができたら、exitでPodから抜けます。

Podが動作しているノードへログインして、/local-pv/にファイルがあることを確認してください。


では、以下のコマンドでPodを削除してみましょう。


  kubectl delete -f nginx-pv.yaml


PVをくっ付けていないPodの場合、先ほど作成したダミーファイルも一緒に消えます。

もう一度同じyamlでPodを作成しなおしてみましょう。


  kubectl apply -f nginx-pv.yaml


Podにログインしてlsで/pvを確認するとダミーファイルが残っていることが確認できるはずです。


今回はここまでとなります。

2021年9月25日土曜日

Netskope 次世代SWGについて調べてみた その1

前回は、Netskopeについて簡単に調べてみました。

今回からNetskopeの製品の1つである「次世代SWG」について調べてみます。

「次世代SWG」の内容は項目が多そうなので数回に分けてまとめていきます。

今回も簡単に「次世代SWG」について調べてみます。

※これは、個人的な学習のために調べた結果をまとめたものです。

 誤りなどあるかもしれませんので、予めご了承ください。


Netskopeについて簡単に調べてみた


最近、SASEという言葉をよく聞くようになりました。
SASEの構成要素の一部を提供するベンダーは数多くありますが、
SASEの構成要素でGartnerのMagic Quadrantでリーダーポジションにいる会社はそれほど多くはないです。
今回は、SASEの構成要素の「CASB」のリーダーポジションにいるNetskopeについて、簡単に調べてみたいと思います。

※これは、個人的な学習のために調べた結果をまとめたものです。

 誤りなどあるかもしれませんので、予めご了承ください。


Netskopeはどんな会社?

設立:2012年 
本社:カリフォルニア州サンタクララ 
従業員数:1000人以上
企業の参考情報:glassdoorPitchBook
日本:東京丸の内にオフィスあり

GartnerのMagic QuadrantでCASBのリーダーポジション(2020)
 ・2020年のCASB Magic Quadrantで4年連続リーダーポジション

製品:
  • 次世代SWG
    • CASB(Cloud Access Security Broker)
    • SWG(Secure Web Gateway)
    • DLP(Data Loss Prevention)
  • Advanced Analytics
  • Netskope Private Access
  • クラウドアクセスセキュリティブローカー(CASB)
  • パブリッククラウド セキュリティ
製品の詳細は、今後、確認していきたいと思います。

サービスの展開場所
サービスの展開場所は、以下のサービスステータスから推測できそうです。

Netskope Support and Service Level Terms
NetskopeのSASE認定があるようです。有償トレーニング受講が必須なようです。

新たな定義、Security Service Edge (SSE) を調べてみた

 先日、「Security Service Edge (SSE) 」という言葉を初めて知りました。

ガートナーが今年から提唱し始めた新しいセキュリティの概念だそうです。

今回は、「Security Service Edge (SSE) 」とは、どんなものか調べてみることにしました。


※これは、個人的な学習のために調べた結果をまとめたものです。

 誤りなどあるかもしれませんので、予めご了承ください。


まず、本ブログの投稿時点でネット上に掲載されている「Security Service Edge (SSE) 」に関する記事を探してみました。

「Security Service Edge (SSE)」について、以下のサイトで紹介されています。