管理人Calicoを使ったNetworkPolicyについての動作確認(前編)CalicoのNetworkPolicyについて確認したのでメモ(前編)環境CalicoをNetworkPolicyとして使用する環境下でテスト。Calicoのバージョンは3.1.3。docker://17.3.2NetworkPolicyについてNetworkポリシーとは、デフォルトでPodへのアクセスは全て許可されている所へ、Podへのファイアウォールの定義を行うものである。公式にあるとおり、定義できるものは以下の通り。どのPodに適用するのか(podSelectorで指定)Policyのタイプ(以下のどちらかまたは指定を指定可能)Pod宛の通信Podからの通信Policyの内容(タイプで指定した通信の詳細を記載。以下のタイプが指定可能)ipBlocknamespaceSelectorpodSelectorNetworkPolicyの作り方PolicyのタイプPolicyのタイプには、IngressとEgressがあり出または入の通信を指定可能。ipBlockipBlockはcidrとexceptからなり、ネットワークアドレスを指定することが可能。明示的にネットワークのアドレスが決まっている場合には、便利な設定。されている場合には、namespaceSelectorにてマッチしたネームスペース内のpodSelectorにマッチしたPodが対象となる。Specを確認すると、LabelSelctorとして定義されていて、指定されるPodはmatchExpressionsとmatchLabelsのAND条件で引っかかったものとなる。空のラベルセレクター({})は全てのオブジェクトとマッチする。operator、valuesからなる。使い方の例としては、ここの最後に掲載されている通りで、以下のような感じ。[dev]}加えて、operatorにはExistsとDoesNotExistがあり、valueに関係なくlabelのkeyが存在するかどうかで指定可能。prod以下作成に使用したコマンド本nginxイメージには追加でpingとcurlが使えるようパッケージをインストールしている。app=red,environment=prod,pod-template-hash=1335572078全てのアクセスを禁止する全ての入と出の通信を禁止するNetworkPolicyをprodのredに設定する。他のPodとノードのIPからredに対してICMPが通っていることをNetworkPolicy設定前に確認する。