### Calicoctl

Список всех нод  
```
calicoctl get nodes
```

Статус нод в кластере

```
calicoctl node status
```

Диагности сети

```
calicoctl node diags
```

Делает дамп всей информации о инфре и складывает в определенную папку  

Проверка доступен ли запук calico

```
calicoctl node checksystem
```










### Простое демо для calico network policy

#### Идея: создаем неймспейс, в котором запускаем поды, затем политиками отрезаем доступ к ним   

1. Создаем неймспейс

```
kubectl create ns policy-demo
```

2. Создаем под с nginx внутри

```
kubectl run --namespace=policy-demo nginx --replicas=2 --image=nginx
```

3. Создаем сервис для nginx

```
kubectl expose --namespace=policy-demo deployment nginx --port=80
```

4. Проверяем доступен ли nginx

```
kubectl run --namespace=policy-demo access --rm -ti --image busybox /bin/sh
wget -q nginx -O -
```

5. Создаем политику которая будет запрещать подключения к подам внутри нашего ns

```
kubectl create -f - <<EOF
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: default-deny
  namespace: policy-demo
spec:
  podSelector:
    matchLabels: {}
EOF
```

6.  Calicoctl - посмотреть какие политики доступны

```
calicoctl get policy -n policy-demo
```
7. Calicoctl посмотреть настроенную политику (вывод в yaml)

```
calicoctl get -o yaml policy -n policy-demo
```

8. Проверка доступен ли наш под с nginx

```
kubectl run --namespace=policy-demo access --rm -ti --image busybox /bin/sh
wget -q --timeout=5 nginx -O -
```

9. Разрешаем доступ к нашим подам для подов с лейблом access

```
kubectl create -f - <<EOF
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: access-nginx
  namespace: policy-demo
spec:
  podSelector:
    matchLabels:
      run: nginx
  ingress:
    - from:
      - podSelector:
          matchLabels:
            run: access
EOF
```

10. Проверяем доступность из пода с лейблом access

```
kubectl run --namespace=policy-demo access --rm -ti --image busybox /bin/sh
wget -q --timeout=5 nginx -O -
```

11. Проверяем доступность из пода с лейблом cant-access

```
kubectl run --namespace=policy-demo cant-access --rm -ti --image busybox /bin/sh
wget -q --timeout=5 nginx -O -
```

12. Очищаем кластер

```
kubectl delete ns policy-demo
```