Проблема
Каковы некоторые из проблем, которые могут столкнуться с участием выступлений 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»