3.5 KiB
Выполнение домашнего задания по теме "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.