Рубрики
Uncategorized

Предотвратите неправильные настройки Kubernetes от достижения добычи с Datree

Проблема, каковы некоторые из проблем, которые могут столкнуться с администраторами Куберанес? Допустимся … Теги с Куберовщиками, Opensource, учебником, Devops.

Проблема

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