Назначение владельцев объектов: различия между версиями

Материал из Документация Ключ-АСТРОМ
 
(не показаны 2 промежуточные версии 1 участника)
Строка 1: Строка 1:
'''''[[Применение Ключ-АСТРОМ]] / [[Применение Ключ-АСТРОМ#.D0.92.D0.BB.D0.B0.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5|Владение]] / Назначение владельцев объектов'''''
Вы можете назначить '''Команды владения''' для любого контролируемого объекта в Ключ-АСТРОМ, используя основной идентификатор команды или дополнительные идентификаторы (определяемые при настройке команды). Это упрощает мгновенный поиск ответственной команды и связь с ней в случае возникновения какой-либо проблемы с объектом, например, если объект затронут уязвимостью.
Вы можете назначить '''Команды владения''' для любого контролируемого объекта в Ключ-АСТРОМ, используя основной идентификатор команды или дополнительные идентификаторы (определяемые при настройке команды). Это упрощает мгновенный поиск ответственной команды и связь с ней в случае возникновения какой-либо проблемы с объектом, например, если объект затронут уязвимостью.


Строка 53: Строка 55:
Мы рекомендуем определить владельца для Deployment и всех других объектов, для которых вы хотите охват владения. См. также '''''[[Лучшие команды для владения]]'''''.
Мы рекомендуем определить владельца для Deployment и всех других объектов, для которых вы хотите охват владения. См. также '''''[[Лучшие команды для владения]]'''''.


* Установка идентификатора команды в качестве метки или аннотации для Deployment, CronJob, Job, DaemonSet или StatefulSet предоставляет информацию о владении командой для соответствующих объектов <code>CLOUD_APPLICATION</code>. Обратите внимание, что это владение не распространяется на <code>CLOUD_APPLICATION_INSTANCE</code>.  В этом примере двойное владение устанавливается через две метки для Deployment. Каждая метка имеет уникальный ключ. Уникальные ключи являются обязательным требованием в метках и аннотациях Kubernetes.   <br /><code>apiVersion: apps/v1</code>    <br /><code>kind: Deployment</code>      <br /><code>metadata:</code>    <br /><code>  name: demo</code>      <br /><code>  labels:</code>      <br /><code>    dt.owner-1: my-team-1 # Dual team ownership defined for the Deployment</code>      <br /><code>    dt.owner-2: my-team-2</code>      <br /><code>spec:</code>      <br /><br />В примере кода ниже показана аннотация для владения на уровне развертывания.    <br /><br />  <code>apiVersion: apps/v1</code>      <br /><code>kind: Deployment</code>      <br /><code>metadata:</code>      <br /><code>  name: demo</code>      <br /><code>  annotations:</code>      <br /><code>    dt.owner: my-team # Ownership defined for the Deployment</code>  <br />
* Установка идентификатора команды в качестве метки или аннотации для Deployment, CronJob, Job, DaemonSet или StatefulSet предоставляет информацию о владении командой для соответствующих объектов <code>CLOUD_APPLICATION</code>. Обратите внимание, что это владение не распространяется на <code>CLOUD_APPLICATION_INSTANCE</code>.  В этом примере двойное владение устанавливается через две метки для Deployment. Каждая метка имеет уникальный ключ. Уникальные ключи являются обязательным требованием в метках и аннотациях Kubernetes.   <br /><br /><code>apiVersion: apps/v1</code>    <br /><code>kind: Deployment</code>      <br /><code>metadata:</code>    <br /><code>  name: demo</code>      <br /><code>  labels:</code>      <br /><code>    dt.owner-1: my-team-1 # Dual team ownership defined for the Deployment</code>      <br /><code>    dt.owner-2: my-team-2</code>      <br /><code>spec:</code>      <br /><br />В примере кода ниже показана аннотация для владения на уровне развертывания.    <br /><br />  <code>apiVersion: apps/v1</code>      <br /><code>kind: Deployment</code>      <br /><code>metadata:</code>      <br /><code>  name: demo</code>      <br /><code>  annotations:</code>      <br /><code>    dt.owner: my-team # Ownership defined for the Deployment</code>  <br />
* Установите метки для Pod, чтобы указать владельца для соответствующего объекта <code>CLOUD_APPLICATION_INSTANCE</code>. Укажите владельца для каждого Pod.    <br /><br /><code>apiVersion: apps/v1</code>    <br /><code>kind: Deployment</code>    <br /><code>metadata:</code>    <br /><code>  name: demo</code>    <br /><code>spec:</code>    <br /><code>  replicas: 3</code>    <br /><code>  selector:</code>    <br /><code>    matchLabels:</code>    <br /><code>      app: demo</code>    <br /><code>  template:</code>    <br /><code>    metadata:</code>    <br /><code>      labels:</code>    <br /><code>        app: demo</code>    <br /><code>        dt.owner: my-team # Ownership defined for the Pod</code>    <br /><code>    spec:</code>    <br /><br />В примере кода ниже показан манифест для Pod, имеющего аннотацию <code>dt.owner: myTeam</code>.      <br /><br /><code>apiVersion: v1</code>    <br /><code>kind: Pod</code>    <br /><code>metadata:</code>    <br /><code>  name: annotations-demo</code>    <br /><code>  annotations:</code>    <br /><code>    imageregistry: "<nowiki>https://hub.docker.com/</nowiki>"</code>    <br /><code>    dt.owner: my-team</code>    <br /><code>spec:</code>    <br /><code>  containers:</code>    <br /><code>  - name: nginx</code>    <br /><code>    image: nginx:1.14.2</code>    <br /><code>    ports:</code>    <br /><code>    - containerPort: 80</code>  <br />
* Установите метки для Pod, чтобы указать владельца для соответствующего объекта <code>CLOUD_APPLICATION_INSTANCE</code>. Укажите владельца для каждого Pod.    <br /><br /><code>apiVersion: apps/v1</code>    <br /><code>kind: Deployment</code>    <br /><code>metadata:</code>    <br /><code>  name: demo</code>    <br /><code>spec:</code>    <br /><code>  replicas: 3</code>    <br /><code>  selector:</code>    <br /><code>    matchLabels:</code>    <br /><code>      app: demo</code>    <br /><code>  template:</code>    <br /><code>    metadata:</code>    <br /><code>      labels:</code>    <br /><code>        app: demo</code>    <br /><code>        dt.owner: my-team # Ownership defined for the Pod</code>    <br /><code>    spec:</code>    <br /><br />В примере кода ниже показан манифест для Pod, имеющего аннотацию <code>dt.owner: myTeam</code>.      <br /><br /><code>apiVersion: v1</code>    <br /><code>kind: Pod</code>    <br /><code>metadata:</code>    <br /><code>  name: annotations-demo</code>    <br /><code>  annotations:</code>    <br /><code>    imageregistry: "<nowiki>https://hub.docker.com/</nowiki>"</code>    <br /><code>    dt.owner: my-team</code>    <br /><code>spec:</code>    <br /><code>  containers:</code>    <br /><code>  - name: nginx</code>    <br /><code>    image: nginx:1.14.2</code>    <br /><code>    ports:</code>    <br /><code>    - containerPort: 80</code>  <br />
* Для процесса укажите владельца, используя пары ключ-значение с переменной среды <code>DT_CUSTOM_PROP</code> , которая определена для контейнера.  В переменных окружения можно указать несколько значений для одного и того же ключа. В этом примере двойное владение определяется с помощью ключа <code>owner</code>.    <br /><br /><code>apiVersion: apps/v1</code>    <br /><code>kind: Deployment</code>    <br /><code>metadata:</code>    <br /><code>  name: demo</code>    <br /><code>spec:</code>    <br /><code>  replicas: 3</code>    <br /><code>  selector:</code>    <br /><code>    matchLabels:</code>    <br /><code>      app: demo</code>    <br /><code>  template:</code>    <br /><code>    spec:</code>    <br /><code>      containers:</code>    <br /><code>        - name: demo</code>    <br /><code>          image: demo:1.0.0</code>    <br /><code>          env:</code>    <br /><code>            - name: DT_CUSTOM_PROP ## Environment variable</code>    <br /><code>              value: "owner=team-automation owner=team-dev" # Dual ownership for the process; team IDs are team-automation and team-dev.</code>  <br />
* Для процесса укажите владельца, используя пары ключ-значение с переменной среды <code>DT_CUSTOM_PROP</code> , которая определена для контейнера.  В переменных окружения можно указать несколько значений для одного и того же ключа. В этом примере двойное владение определяется с помощью ключа <code>owner</code>.    <br /><br /><code>apiVersion: apps/v1</code>    <br /><code>kind: Deployment</code>    <br /><code>metadata:</code>    <br /><code>  name: demo</code>    <br /><code>spec:</code>    <br /><code>  replicas: 3</code>    <br /><code>  selector:</code>    <br /><code>    matchLabels:</code>    <br /><code>      app: demo</code>    <br /><code>  template:</code>    <br /><code>    spec:</code>    <br /><code>      containers:</code>    <br /><code>        - name: demo</code>    <br /><code>          image: demo:1.0.0</code>    <br /><code>          env:</code>    <br /><code>            - name: DT_CUSTOM_PROP ## Environment variable</code>    <br /><code>              value: "owner=team-automation owner=team-dev" # Dual ownership for the process; team IDs are team-automation and team-dev.</code>  <br />
Строка 96: Строка 98:


См. '''Формат заполнения информации о владении (выше)''' ко всем существующим параметрам «ключ-значение» или для создания собственного.
См. '''Формат заполнения информации о владении (выше)''' ко всем существующим параметрам «ключ-значение» или для создания собственного.
== Теги ==
Используйте теги для применения владения только для объектов, которые не охватываются описанными выше методами. Обычно это объекты, такие как фронтенд-приложения, которые стабильны и малочисленны.
=== Методы тегов ===
Вы можете использовать теги для применения владения в парах '''«ключ-значение» (раздел выше)''' к любому отслеживаемому объекту — '''''[[Теги и метаданные|подробнее о тегах]]'''''.
[[Файл:230.png|граница]]
* Ручные теги, использующие определенные ключи или префиксы ключей (например, <code>owner</code>и <code>dt.owner</code>), легко применяются через веб-интерфейс.
* Вы также можете настроить правила автоматических тегов через веб-интерфейс.
* Мы рекомендуем использовать API пользовательских тегов вместо правил автоматических тегов для применения владения к объектам. API пользовательских тегов позволяет вам удобно применять теги к большой группе объектов в рамках одного вызова API, выполняемого немедленно.
Обратите внимание, что вручную примененные теги можно удалить вручную. Автоматически примененные теги нельзя удалить вручную из отдельных служб, групп процессов, экземпляров групп процессов, приложений или хостов.
См. раздел '''''[[Лучшие команды для владения]]''''' для получения дополнительной информации о преимуществах и ограничениях тегов для назначения владельцев объектов.
=== Разрешения ===
Для добавления, изменения или удаления владения через API пользовательских тегов вам потребуются все следующие разрешения.
* Разрешение токена <code>entities.write</code>
* Разрешение токена <code>settings.read</code> или политика IAM <code>ALLOW settings:objects:read WHERE settings:schemaId = "builtin:ownership.teams";</code>
Для добавления, изменения или удаления тегов через веб-интерфейс вам необходимо разрешение '''Управление параметрами мониторинга''' на уровне среды или зоны управления.
== Просмотр информации о владельце в веб-интерфейсе ==
Для хостов и всех сущностей '''Kubernetes''' выберите '''Владельцы''' на странице сведений о объекте, чтобы просмотреть информацию о владельце.
В этом примере показано сопоставление рабочей нагрузки Kubernetes с объектом <code>CLOUD_APPLICATION</code>. Разверните имя команды, чтобы просмотреть ее данные. Выберите на странице '''Владельцы''', чтобы изменить данные команды в '''Настройках'''.
[[Файл:231.png|граница]]
В этом примере показана информация о владельце модуля Kubernetes.
[[Файл:232.png|граница]]
На странице '''Хосты''' можно искать хосты с владением — фильтровать по '''Тегам''' с ключевыми префиксами, которые вы определили, например, <code>owner</code>и <code>dt-owner</code>. Обратите внимание, что пары ключ-значение владение должны быть применены как минимум к одному хосту, чтобы ключ был доступен в фильтре '''Теги''' . Этот метод поиска владения доступен на всех страницах групп объектов, которые можно фильтровать по тегам.
[[Файл:233.png|граница]]
На странице сведений о хосте, в примере ниже, у хоста есть три владельца команды. Один из владельцев отмечен как '''Неизвестный идентификатор команды''' . Это связано с тем, что даже если идентификатор команды был применен к хосту (например, через oneagentctl или ручной тег) в паре ключ-значение, команда не существует. Недействительный идентификатор команды означает, что команда или дополнительный идентификатор были применены к хосту в неправильном формате .
Выберите '''Свойства и теги''' , чтобы просмотреть все теги, примененные к хосту.
[[Файл:234.png|граница]]
Выберите [[Файл:235.png|граница|23x23пкс]] рядом с неизвестной командой, а затем выберите '''Добавить команду''' , чтобы определить информацию о команде в '''Настройках''' . Затем сущность автоматически обновляется с определением команды.
[[Файл:236.png|граница]]

Текущая версия на 18:07, 5 сентября 2024

Применение Ключ-АСТРОМ / Владение / Назначение владельцев объектов

Вы можете назначить Команды владения для любого контролируемого объекта в Ключ-АСТРОМ, используя основной идентификатор команды или дополнительные идентификаторы (определяемые при настройке команды). Это упрощает мгновенный поиск ответственной команды и связь с ней в случае возникновения какой-либо проблемы с объектом, например, если объект затронут уязвимостью.

Владение можно применить с помощью нескольких методов, таких как метки и аннотации Kubernetes, метаданные хоста, переменные среды и теги (в том числе через API пользовательских тегов Ключ-АСТРОМ).

Поддерживаемые методы применения владения

Поддерживаются следующие методы применения типов собственности и объектов.

  • Метаданные развертывания или конфигурации рекомендуется
Метод Типы сущностей
Метки и аннотации Kubernetes Все объекты Kubernetes
Хост метаданных через oneagentctlилиhostcustomproperties.conf Хосты
Переменные среды Процессы
  • Теги (ручные, автоматические и через API) — все отслеживаемые объекты

Формат заполнения информации о владении

Независимо от используемого метода информация о владении применяется к объектам в парах ключ-значение . Ключи по умолчанию owner и dt.owner доступны в каждой среде мониторинга — см. Настройки > Владение > Настройка. Однако вы можете изменить или удалить ключи по умолчанию и определить свои собственные .

Значение всегда является уникальным идентификатором команды, указанным при создании команды. Вы также можете использовать дополнительные идентификаторы.

У сущности может быть более одной команды владения. Вы можете добиться этого, применяя несколько пар ключ-значение, как показано в следующих разделах.

Пользовательские ключи для информации владения

Вы можете определить максимум пять ключей для применения информации владения.

  1. Перейдите в Настройки > Владение > Настроить.
  2. Нажмите на кнопку Добавить ключ.
  3. Введите ключ (Включено по умолчанию).
  4. Сохраните изменения.

229.png

При отключении или удалении ключа объекта, назначенные командам через такие ключи, больше не будут отображать или хранить метаданные о владении. Однако такие ключи будут отображаться как обычные теги, применяемые к объектам.

Дополнительные требования к ключам владения

  • Вы можете определить максимум пять и минимум один ключ.
  • Вы можете использовать любой из определенных вами ключей в качестве префикса в парах ключ-значение. Например, для ключей owner и dt.owner вы можете использовать owner-1 и dt.owner-test.

Метки и аннотации Kubernetes

Вы можете указать команды владения для различных объектов Kubernetes, таких как Deployments, Pods, Services или namespaces. Чтобы гарантировать, что объекты Kubernetes имеют адекватное покрытие владения, что особенно важно для недолговечных сущностей, таких как Pods, предоставьте информацию о владельце в виде меток или аннотаций Kubernetes с парами ключ-значение в файле спецификации развертывания, например, deployment.yaml.

Мы рекомендуем определить владельца для Deployment и всех других объектов, для которых вы хотите охват владения. См. также Лучшие команды для владения.

  • Установка идентификатора команды в качестве метки или аннотации для Deployment, CronJob, Job, DaemonSet или StatefulSet предоставляет информацию о владении командой для соответствующих объектов CLOUD_APPLICATION. Обратите внимание, что это владение не распространяется на CLOUD_APPLICATION_INSTANCE. В этом примере двойное владение устанавливается через две метки для Deployment. Каждая метка имеет уникальный ключ. Уникальные ключи являются обязательным требованием в метках и аннотациях Kubernetes.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: demo
      labels:
        dt.owner-1: my-team-1 # Dual team ownership defined for the Deployment
        dt.owner-2: my-team-2
    spec:

    В примере кода ниже показана аннотация для владения на уровне развертывания.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: demo
      annotations:
        dt.owner: my-team # Ownership defined for the Deployment
  • Установите метки для Pod, чтобы указать владельца для соответствующего объекта CLOUD_APPLICATION_INSTANCE. Укажите владельца для каждого Pod.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: demo
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: demo
      template:
        metadata:
          labels:
            app: demo
            dt.owner: my-team # Ownership defined for the Pod
        spec:

    В примере кода ниже показан манифест для Pod, имеющего аннотацию dt.owner: myTeam.

    apiVersion: v1
    kind: Pod
    metadata:
      name: annotations-demo
      annotations:
        imageregistry: "https://hub.docker.com/"
        dt.owner: my-team
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
  • Для процесса укажите владельца, используя пары ключ-значение с переменной среды DT_CUSTOM_PROP , которая определена для контейнера. В переменных окружения можно указать несколько значений для одного и того же ключа. В этом примере двойное владение определяется с помощью ключа owner.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: demo
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: demo
      template:
        spec:
          containers:
            - name: demo
              image: demo:1.0.0
              env:
                - name: DT_CUSTOM_PROP ## Environment variable
                  value: "owner=team-automation owner=team-dev" # Dual ownership for the process; team IDs are team-automation and team-dev.
  • Метки Kubernetes для сервиса

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      labels:
        dt.owner: team-a # Ownership defined for the Service
    spec:
      selector:
      app.kubernetes.io/name: MyApp
    ports:
      - protocol: TCP
        port: 80
        targetPort: 9376
  • Метки Kubernetes для namespace

    apiVersion: v1
    kind: Namespace
    metadata:
      name: my-namespace
      labels:
        dt.owner: team-a # Ownership defined for the namespace

Метаданные хоста

Для хостов мы рекомендуем использовать метаданные хоста в качестве основного метода применения права собственности.

Узнайте больше об определении тегов и метаданных для хостов и интерфейсе командной строки ЕдиногоАгента oneagentctl .

Вы также можете назначать владение хостам с помощью тегов .

С помощью oneagentctl

ЕдиныйАгент версии 1.189+ Для хостов с ЕдинымАгентом версии 1.189+ используйте oneagenctl интерфейс командной строки после установки, чтобы задать свойство метаданных для отдельного хоста. Запустите oneagentctl с правами администратора или root из этих расположений по умолчанию.

  • Windows: %PROGRAMFILES%\astromkey\oneagent\agent\tools
  • Все Unix-подобные системы: /opt/astromkey/oneagent/agent/tools

В этом примере для Unix-подобных систем используется --set-host-property установка владения с помощью пары ключ-значение owner-1=team-automation , где team-automation— основной идентификатор команды или дополнительный идентификатор.

./oneagentctl --set-host-property owner-1=team-automation

С помощью hostcustomproperties.conf

ЕдиныйАгент версии 1.187 и более ранних Для хостов на ЕдиномАгенте 1.187 и более ранних версиях создайте или отредактируйте файл hostcustomproperties.conf конфигурации ЕдиногоАгента в следующих местах.

  • Windows: %PROGRAMDATA%\astromkey\oneagent\agent\config
  • се Unix-подобные системы: /var/lib/astromkey/oneagent/agent/config

В этом примере для Unix-подобных систем устанавливается влияние на хост с помощью пары ключ-значение dt.owner-1=team-automation , где team-automation— основной идентификатор команды или дополнительный идентификатор.

cat hostcustomproperties.conf dt.owner-1=team-automation

Переменные среды процесса

Для процессов мы рекомендуем указывать владение в парах ключ-значение через переменную среды DT_CUSTOM_PROP.

Мы не рекомендуем использовать теги для назначения владения процессам или группам процессов.

Узнайте больше об определении тегов и метаданных для хостов, например, о настройке переменной среды DT_CUSTOM_PROP для IIS и Windows .

export DT_CUSTOM_PROP dt.owner=DemoTeam

См. Формат заполнения информации о владении (выше) ко всем существующим параметрам «ключ-значение» или для создания собственного.

Теги

Используйте теги для применения владения только для объектов, которые не охватываются описанными выше методами. Обычно это объекты, такие как фронтенд-приложения, которые стабильны и малочисленны.

Методы тегов

Вы можете использовать теги для применения владения в парах «ключ-значение» (раздел выше) к любому отслеживаемому объекту — подробнее о тегах.

230.png

  • Ручные теги, использующие определенные ключи или префиксы ключей (например, ownerи dt.owner), легко применяются через веб-интерфейс.
  • Вы также можете настроить правила автоматических тегов через веб-интерфейс.
  • Мы рекомендуем использовать API пользовательских тегов вместо правил автоматических тегов для применения владения к объектам. API пользовательских тегов позволяет вам удобно применять теги к большой группе объектов в рамках одного вызова API, выполняемого немедленно.

Обратите внимание, что вручную примененные теги можно удалить вручную. Автоматически примененные теги нельзя удалить вручную из отдельных служб, групп процессов, экземпляров групп процессов, приложений или хостов.

См. раздел Лучшие команды для владения для получения дополнительной информации о преимуществах и ограничениях тегов для назначения владельцев объектов.

Разрешения

Для добавления, изменения или удаления владения через API пользовательских тегов вам потребуются все следующие разрешения.

  • Разрешение токена entities.write
  • Разрешение токена settings.read или политика IAM ALLOW settings:objects:read WHERE settings:schemaId = "builtin:ownership.teams";

Для добавления, изменения или удаления тегов через веб-интерфейс вам необходимо разрешение Управление параметрами мониторинга на уровне среды или зоны управления.

Просмотр информации о владельце в веб-интерфейсе

Для хостов и всех сущностей Kubernetes выберите Владельцы на странице сведений о объекте, чтобы просмотреть информацию о владельце.

В этом примере показано сопоставление рабочей нагрузки Kubernetes с объектом CLOUD_APPLICATION. Разверните имя команды, чтобы просмотреть ее данные. Выберите на странице Владельцы, чтобы изменить данные команды в Настройках.

231.png

В этом примере показана информация о владельце модуля Kubernetes.

232.png

На странице Хосты можно искать хосты с владением — фильтровать по Тегам с ключевыми префиксами, которые вы определили, например, ownerи dt-owner. Обратите внимание, что пары ключ-значение владение должны быть применены как минимум к одному хосту, чтобы ключ был доступен в фильтре Теги . Этот метод поиска владения доступен на всех страницах групп объектов, которые можно фильтровать по тегам.

233.png

На странице сведений о хосте, в примере ниже, у хоста есть три владельца команды. Один из владельцев отмечен как Неизвестный идентификатор команды . Это связано с тем, что даже если идентификатор команды был применен к хосту (например, через oneagentctl или ручной тег) в паре ключ-значение, команда не существует. Недействительный идентификатор команды означает, что команда или дополнительный идентификатор были применены к хосту в неправильном формате .

Выберите Свойства и теги , чтобы просмотреть все теги, примененные к хосту.

234.png

Выберите 235.png рядом с неизвестной командой, а затем выберите Добавить команду , чтобы определить информацию о команде в Настройках . Затем сущность автоматически обновляется с определением команды.

236.png