Files
netology-devops/src/homework/14-kubernetes-security/14.5/readme.md

3.5 KiB
Raw Blame History

Выполнение домашнего задания по теме "14.5. SecurityContext, NetworkPolicies"

Q/A

Задача 1

Рассмотрите пример config/example-security-context.yml

Создайте модуль

kubectl apply -f config/example-security-context.yml
pod/security-context-demo created

Проверьте установленные настройки внутри контейнера

kubectl logs security-context-demo
uid=1000 gid=3000 groups=3000

Задание 2

Рассмотрите пример config/example-network-policy.yml.

Создайте два модуля. Для первого модуля разрешите доступ к внешнему миру и ко второму контейнеру. Для второго модуля разрешите связь только с первым контейнером. Проверьте корректность настроек.

Создание подов и правил для второго пода описаны в конфигурации config/restricted-pods.yml.

Необходимо применить данный конфиг:

kubectl apply -f config/restricted-pods.yml
pod/test-pod-outer created
pod/test-pod-inner created
networkpolicy.networking.k8s.io/test-network-policy-inner created

Проверить, что поды успешно создались:

kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
test-pod-inner   1/1     Running   0          59s
test-pod-outer   1/1     Running   0          59s

Затем необходимо проверить, что из контейнера пода test-pod-outer доступен как внешние ресурсы (например, google.com), так и контейнер пода test-pod-inner. IP-адрес контейнера необходимо получить заранее, например, через выполнение команды kubectl describe pod test-pod-inner.

kubectl exec -it pods/test-pod-inner -- sh
curl -sS -D - -o /dev/null https://google.com
curl -sS -D - -o /dev/null http://10.233.102.132
HTTP/2 301
<...>

HTTP/1.1 200 OK
<...>

Следующим шагом необходимо проверить, что контейнер пода test-pod-inner имеет доступ только до контейнера пода test-pod-outer:

kubectl exec -it pods/test-pod-inner -- sh
curl -sS -D - -o /dev/null http://10.233.102.131
curl -sS -D - -o /dev/null https://google.com
HTTP/1.1 200 OK
<...>

curl: (6) Could not resolve host: google.com

PS. Использованные флаги для curl:

  • -s - silent, не выводить никакую информацию о запросе
  • -S - show-errors, несмотря на флаг -s выводит информацию об ошибке, если такая произошла при запросе.
  • -D - dump-headers, вывести заголовки ответа в файл. Если указать в качестве пути -, то вывод будет произведён в stdout.
  • -o - output, вывести тело запроса в файл. В данном случае в /dev/null.