Проблема
Каковы некоторые из проблем, которые могут столкнуться с участием выступлений Kubernetes? Допустим, у вас есть несколько разработчиков, которые внесли изменения в файлы конфигураций K8S, чтобы развернуть свои объекты, и они работают с CI/CD, и они нажимают свой файл конфигурации на Git Reppo. Скажем, это вызвало неудачу в производстве. Разве это не будет круто, чтобы выяснить эти ошибки до производства? Входит в изображение Datree.
О Datree.
Datree — это инструмент CLI, который поддерживает владельцев Kubernetes в своих ролях, и она помогает предотвращать разработчики вносить ошибки в своих файлах конфигурации Kubernetes, прежде чем он достигнет добычи и вызывающей неудачу. Это делает это, предоставляя политическому принудительному решению для управления автоматическими проверками нарушений правил. Он может быть использован в командной строке для запуска политики против Kubernetes, проявляет файлы yaml или helm диаграммы. Вы можете включить проверку политики Datree как часть вашего конвейера CI/CD или запустить его на локальном порядке перед каждым коммитным.
Как зарегистрироваться
Вам придется зарегистрироваться, чтобы получить доступ к приборной панели, состоящей из ваших политических чеков. Перейти к Зарегистрироваться Page И вы можете выбрать либо продолжать github или Google.
Следуйте этим шагам, чтобы начать: 1) Загрузите и установите Datree в только одну команду! $ curl https://get.datree.io |/bin/башмак
2) Сканировать файл Kubernetes или Directore Helm Chart test test [K8S-PATH-PATH]/HELM TEST TESTREE [CHART-DIR]
3) Теперь вы можете нажать на ссылку, предоставленную в Резюме вывода CLI, который говорит Смотрите все правила в политике Чтобы получить доступ к вашей приборной панели. Здесь вы также можете найти Клийд в сам URL. Этот токен — это то, что соединяет проверку политики к вашей централизованной политике, чтобы узнать, какие политики и правила для бега. Вы также можете найти свой токен, перейдя на настройки вашего профиля на приборной панели.
Вы также можете найти его через конфигурацию Datree VIA, например: $ Nano ~/.datreee/config.yaml.
Дополнительная информация о токенах аккаунта можно найти здесь Отказ
Как бежать
По умолчанию Datree предлагает файл конфигурации Demo Kubernetes для вас, чтобы проверить инструмент. Вы можете найти это в ~/.datreee/k8s-demo.yaml что вы можете использовать, чтобы проверить его быстро. Давайте немного изменим это немного.
➜ ~ cat ~/.datree/k8s-demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: rss-site
namespace: test
labels:
owner: --
environment: prod
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
namespace: test
labels:
app: we
spec:
containers:
- name: front-end
image: nginx:latest
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
resources:
requests:
memory: "64Mi"
cpu: "64m"
limits:
cpu: "500m"
ports:
- containerPort: 80
- name: rss-reader
image: datree/nginx@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
resources:
requests:
cpu: "64m"
memory: "128Mi"
limits:
memory: "128Mi"
ports:
- containerPort: 88
Вы можете запустить следующую команду, чтобы проверить Datree на предварительно скомпилированном демонстрационном файле:
test ~/.datreee/k8s-demo.yaml.
Как видите, он состоит из 5 правил, не сданных в результате проверки политики. Вы также можете найти историю этого в вашей панели Datree.
Вне коробки Datree предлагает 30 таких правил для вас, чтобы проверить. Эти правила распространяются по такие категории, как:
- Контейнеры
- Нагрузка
- Cronjob.
- Сеть
- Амортизация
- и более
Вы можете найти эти правила в политике по умолчанию на вашем Приборная панель Отказ
Здесь вы можете либо изменить сообщение об ошибке различных правил, поверните некоторые из этих включенных/выкл, и изменения будут видны в вашей командной строке мгновенно!
Поскольку он не подключен к кластеру, вы также можете запустить его в автономном режиме без необходимости настроить что-то вроде Minikube, KubeAdm и т. Д.
Проверка схемы
Datree также выполняет проверки проверки схемы для ваших файлов перед выполнением проверки политики. Например, если я сделаю ошибку в структуре моего файла YAML и запустите проверку DANTREE на нем, он собирается дать мне следующую ошибку:
Здесь вы можете увидеть заказ, в котором выполняется эти проверки. Ямл Валидация -> Валидация схемы Kubernetes -> Проверка политики
Ключевая особенность
Datree также позволяет создавать собственную политику. Это может полезно для разных этапов развертывания. Вы можете добавлять политики с различными правилами, настроенными, давая каждую политику своих собственных случаев использования. Для этого вы можете отправиться на панель инструментов Datree и нажмите на + Создать политику Отказ Здесь вы можете дать ему имя, и как только политика создана, вы можете применить к нему правила. Вы можете выбрать любые или все 30 правил для вашей собственной политики.
Я также собираюсь редактировать сообщение об ошибке на что-то обычай. Это то, что также является огромным преимуществом по сравнению с использованием проверок, предоставленных kubectl Отказ
Для этого примера я собираюсь в файл конфигурации Kubernetes, который состоит из развертывания и услуги, состоящего из базы данных и API.
➜ ~ cat go-demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: go-demo-2-db
spec:
selector:
matchLabels:
type: db
service: go-demo-2
strategy:
type: Recreate
template:
metadata:
labels:
type: db
service: go-demo-2
vendor: MongoLabs
spec:
containers:
- name: db
image: mongo:3.3
ports:
- containerPort: 28017
---
apiVersion: v1
kind: Service
metadata:
name: go-demo-2-db
spec:
ports:
- port: 27017
selector:
type: db
service: go-demo-2
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: go-demo-2-api
spec:
replicas: 5
selector:
matchLabels:
type: api
service: go-demo-2
template:
metadata:
labels:
type: api
service: go-demo-2
language: go
spec:
containers:
- name: api
image: vfarcic/go-demo-2:3.0
env:
- name: DB
value: go-demo-2-db
readinessProbe:
httpGet:
path: /demo/hello
port: 8080
periodSeconds: 1
livenessProbe:
httpGet:
path: /demo/hello
port: 8080
--------
apiVersion: v1
kind: Service
metadata:
name: go-demo-2-api
spec:
type: NodePort
ports:
- port: 8080
selector:
type: api
service: go-demo-2
Теперь, чтобы выбрать эту политику вместо по умолчанию, при запуске проверки, вы можете использовать -П флаг:
TEST TEST GO-DEMO.YAML -P MY_POLICY
Как видите, это только не удалось в одном из добавленных правил правил, по сравнению с 5 правилами не удалось по умолчанию. Вы также можете заметить пользовательское сообщение об ошибке, которое я добавил.
Политика как код
Но что, если вы хотите сотрудничать с другими людьми и поделиться своей политикой с кем-то еще? Это включает в себя следующие лучшие практики разработки, такие как управление версией, автоматизация, сотрудничество и многое другое. Для этого Datree предлагает что-то называемое политикой в качестве кода. Это декларативный метод представления вашей политики. Когда этот режим включен, единственный способ изменить политики в вашей учетной записи — публиковать файл конфигурации YAML. Этот файл собирается содержать все ваши определенные политики.
Для того, чтобы использовать эту функцию, вы можете включить его в настройках вашего профиля и загрузить Полиция. YAML файл.
Файл будет выглядеть что-то подобное, причем неактивные правила прокомментировали:
apiVersion: v1
customRules: null
policies:
- name: My_Policy
rules:
# - identifier: CONTAINERS_MISSING_IMAGE_VALUE_VERSION
# messageOnFailure: Incorrect value for key `image` - specify an image version to avoid unpleasant "version surprises" in the future
# - identifier: CONTAINERS_MISSING_MEMORY_REQUEST_KEY
# messageOnFailure: Missing property object `requests.memory` - value should be within the accepted boundaries recommended by the organization
- identifier: CONTAINERS_MISSING_CPU_REQUEST_KEY
messageOnFailure: Missing property object `requests.cpu` - value should be within the accepted boundaries recommended by the organization
# - identifier: CONTAINERS_MISSING_MEMORY_LIMIT_KEY
# messageOnFailure: Missing property object `limits.memory` - value should be within the accepted boundaries recommended by the organization
# - identifier: CONTAINERS_MISSING_CPU_LIMIT_KEY
# messageOnFailure: Missing property object `limits.cpu` - value should be within the accepted boundaries recommended by the organization
# - identifier: INGRESS_INCORRECT_HOST_VALUE_PERMISSIVE
# messageOnFailure: Incorrect value for key `host` - specify host instead of using a wildcard character ("*")
# - identifier: SERVICE_INCORRECT_TYPE_VALUE_NODEPORT
# messageOnFailure: Incorrect value for key `type` - `NodePort` will open a port on all nodes where it can be reached by the network external to the cluster
# - identifier: CRONJOB_INVALID_SCHEDULE_VALUE
# messageOnFailure: 'Incorrect value for key `schedule` - the (cron) schedule expressions is not valid and, therefore, will not work as expected'
# - identifier: WORKLOAD_INVALID_LABELS_VALUE
# messageOnFailure: Incorrect value for key(s) under `labels` - the vales syntax is not valid so the Kubernetes engine will not accept it
# - identifier: WORKLOAD_INCORRECT_RESTARTPOLICY_VALUE_ALWAYS
# messageOnFailure: Incorrect value for key `restartPolicy` - any other value than `Always` is not supported by this resource
# - identifier: HPA_MISSING_MINREPLICAS_KEY
# messageOnFailure: Missing property object `minReplicas` - the value should be within the accepted boundaries recommended by the organization
# - identifier: HPA_MISSING_MAXREPLICAS_KEY
# messageOnFailure: Missing property object `maxReplicas` - the value should be within the accepted boundaries recommended by the organization
Работа с CI.
Вы можете использовать проверку политики Datree в вашем процессе CI. Таким образом, каждый раз, когда CI срабатывает, он также будет работать Тест Datree Для проверки файлов конфигурации Kubernetes всегда настроены в соответствии с вашими потребностями. Чтобы использовать Datree, вам потребуется токен вашей учетной записи, как упомянуто выше.
Datree поддерживает интеграции с:
- Плагин Helm
- Гитские крючки
- Circleci
- Трэвис СИ
- Действия GitHub
- Gitlab CI/CD
Вы можете найти примеры для них в Общественное хранилище Отказ
Ресурсы
Связать со мной
Оригинал: «https://dev.to/kunal/prevent-kubernetes-misconfigurations-from-reaching-production-with-datree-3p6a»