Введение
В этом практическом занятии вы научитесь эффективно использовать команду docker secret ls для управления и просмотра секретов в среде Docker swarm. Вы начнете с инициализации Docker swarm и создания примерного секрета. Затем вы узнаете, как вывести список всех существующих секретов, отфильтровать вывод на основе имен и меток секретов, и, наконец, отформатировать вывод списка секретов для лучшей читаемости и извлечения конкретной информации. Этот практический опыт предоставит вам навыки для эффективного поиска и управления конфиденциальными данными, хранящимися в виде секретов Docker.
Вывести список всех секретов
На этом этапе вы научитесь выводить список всех секретов в вашей среде Docker. Секреты Docker используются для управления конфиденциальными данными, такими как пароли, TLS-сертификаты и SSH-ключи. Они надежно хранятся в кластере Docker swarm и могут быть доступны для служб, запущенных в этом кластере.
Перед выводом списка секретов вам нужно инициализировать кластер Docker swarm. Swarm представляет собой кластер Docker-интерпретаторов (Docker engines). Вы можете инициализировать swarm на одной ноде для целей тестирования.
Откройте терминал и выполните следующую команду для инициализации swarm:
docker swarm init
Вы должны увидеть вывод, указывающий, что swarm был инициализирован и что текущая нода теперь является управляющей.
Теперь, когда swarm инициализирован, вы можете создать секрет. Мы создадим простой секрет с именем my_secret и значением my_secret_value.
Выполните следующую команду для создания секрета:
echo "my_secret_value" | docker secret create my_secret -
Эта команда берет строку "my_secret_value", передает ее в команду docker secret create и именует секрет my_secret. Дефис - в конце указывает, что значение секрета считывается из стандартного ввода.
Теперь выведем список секретов, существующих в вашем кластере Docker swarm. Для этого можно использовать команду docker secret ls.
Выполните следующую команду:
docker secret ls
Вы должны увидеть вывод, похожий на этот, показывающий идентификатор, имя и время создания только что созданного секрета:
ID NAME CREATED
<secret_id> my_secret About a minute ago
Эта команда выводит список всех секретов, в настоящее время управляемых вашим кластером Docker swarm. На следующих этапах вы научитесь фильтровать и форматировать этот вывод.
Фильтрация секретов по имени
На этом этапе вы научитесь фильтровать список секретов по их имени, используя команду docker secret ls с флагом --filter. Это полезно, когда у вас есть много секретов и вы хотите найти определенный секрет или группу секретов с похожими именами.
На предыдущем этапе вы создали секрет с именем my_secret. Создадим еще один секрет, чтобы продемонстрировать фильтрацию. Назовем его another_secret.
Выполните следующую команду для создания нового секрета:
echo "another_value" | docker secret create another_secret -
Теперь, если вы снова выполните команду docker secret ls, вы увидите оба секрета:
docker secret ls
Вывод будет похож на следующий, показывающий как my_secret, так и another_secret:
ID NAME CREATED
<secret_id_1> my_secret About 2 minutes ago
<secret_id_2> another_secret About a few seconds ago
Для фильтрации списка, чтобы показать только секрет с именем my_secret, вы можете использовать опцию --filter name=my_secret.
Выполните следующую команду:
docker secret ls --filter name=my_secret
Теперь вывод будет показывать только секрет с именем my_secret:
ID NAME CREATED
<secret_id_1> my_secret About 2 minutes ago
Вы также можете использовать частичные имена для фильтрации. Например, чтобы отфильтровать секреты, имена которых содержат "secret", вы можете использовать аналогичный фильтр, хотя для точного совпадения имен предыдущая команда более точна. Фильтр name выполняет точное совпадение.
Эта возможность фильтрации очень полезна в средах с большим количеством секретов, позволяя вам быстро найти конкретные секреты, с которыми вам нужно работать.
Фильтрация секретов по метке
На этом этапе вы научитесь фильтровать секреты на основе меток (labels). Метки - это пары ключ-значение, которые вы можете прикрепить к объектам Docker, включая секреты, для их организации и классификации. Фильтрация по меткам - мощный способ управления секретами в сложных средах.
Сначала создадим новый секрет и добавим к нему метку при создании. Мы создадим секрет с именем labeled_secret и добавим метку environment=production.
Выполните следующую команду для создания секрета с меткой:
echo "production_value" | docker secret create --label environment=production labeled_secret -
Эта команда аналогична предыдущим командам docker secret create, но мы добавили флаг --label environment=production для прикрепления метки к секрету.
Теперь создадим еще один секрет с другой меткой. Назовем его dev_secret и присвоим метку environment=development.
Выполните следующую команду:
echo "development_value" | docker secret create --label environment=development dev_secret -
Если вы сейчас выведете список всех секретов с помощью команды docker secret ls, вы увидите все четыре секрета:
docker secret ls
Вывод будет показывать my_secret, another_secret, labeled_secret и dev_secret.
Для фильтрации секретов и отображения только тех, которые имеют метку environment=production, вы можете использовать опцию --filter label=environment=production.
Выполните следующую команду:
docker secret ls --filter label=environment=production
В выводе вы должны увидеть только labeled_secret:
ID NAME CREATED
<secret_id_3> labeled_secret About a minute ago
Аналогично, чтобы отфильтровать секреты с меткой environment=development, вы должны использовать --filter label=environment=development.
Выполните следующую команду:
docker secret ls --filter label=environment=development
Это покажет только dev_secret:
ID NAME CREATED
<secret_id_4> dev_secret About a minute ago
Вы также можете отфильтровать секреты, которые имеют определенный ключ метки, независимо от его значения, используя --filter label=environment.
Выполните следующую команду:
docker secret ls --filter label=environment
Это покажет как labeled_secret, так и dev_secret, так как у обоих есть ключ метки environment:
ID NAME CREATED
<secret_id_3> labeled_secret About 2 minutes ago
<secret_id_4> dev_secret About 2 minutes ago
Фильтрация по меткам - гибкий способ управления и извлечения секретов на основе ваших собственных определенных категорий.
Форматирование вывода списка секретов
На этом этапе вы научитесь форматировать вывод команды docker secret ls с использованием флага --format. Это позволяет вам настраивать отображаемую информацию и способ ее представления, что полезно для написания скриптов или создания отчетов.
По умолчанию команда docker secret ls выводит таблицу с колонками для ID, NAME и CREATED. Вы можете изменить этот формат, используя флаг --format с синтаксисом шаблонов Go.
Например, чтобы отобразить только имена секретов, вы можете использовать формат {{.Name}}.
Выполните следующую команду:
docker secret ls --format "{{.Name}}"
Теперь вывод будет содержать только имена секретов, каждое на отдельной строке:
my_secret
another_secret
labeled_secret
dev_secret
Вы также можете указать несколько полей и отформатировать их в виде таблицы. Например, чтобы отобразить ID и Name, разделенные табуляцией, вы можете использовать table {{.ID}}\t{{.Name}}. Ключевое слово table обеспечивает выравнивание вывода в колонки.
Выполните следующую команду:
docker secret ls --format "table {{.ID}}\t{{.Name}}"
Вывод будет представлять собой таблицу с двумя колонками:
ID NAME
<secret_id_1> my_secret
<secret_id_2> another_secret
<secret_id_3> labeled_secret
<secret_id_4> dev_secret
Вы также можете вывести информацию в формате JSON, что очень полезно для программной обработки. Используйте формат json.
Выполните следующую команду:
docker secret ls --format "json"
Вывод будет представлять собой JSON-массив, где каждый элемент представляет собой секрет:
[
{
"ID": "<secret_id_1>",
"Name": "my_secret",
"CreatedAt": "2023-10-27 10:00:00 +0000 UTC",
"UpdatedAt": "2023-10-27 10:00:00 +0000 UTC",
"Labels": {}
},
{
"ID": "<secret_id_2>",
"Name": "another_secret",
"CreatedAt": "2023-10-27 10:01:00 +0000 UTC",
"UpdatedAt": "2023-10-27 10:01:00 +0000 UTC",
"Labels": {}
},
{
"ID": "<secret_id_3>",
"Name": "labeled_secret",
"CreatedAt": "2023-10-27 10:02:00 +0000 UTC",
"UpdatedAt": "2023-10-27 10:02:00 +0002 UTC",
"Labels": {
"environment": "production"
}
},
{
"ID": "<secret_id_4>",
"Name": "dev_secret",
"CreatedAt": "2023-10-27 10:03:00 +0000 UTC",
"UpdatedAt": "2023-10-27 10:03:00 +0000 UTC",
"Labels": {
"environment": "development"
}
}
]
Флаг --format обеспечивает большую гибкость в том, как вы просматриваете и обрабатываете информацию о ваших Docker-секретах.
Резюме
В этом практическом занятии (lab) вы научились выводить список всех секретов в вашей среде Docker с помощью команды docker secret ls. Вы начали с инициализации кластера Docker Swarm и создания примерного секрета. Затем вы использовали команду docker secret ls для просмотра идентификатора (ID), имени и времени создания созданного секрета.
Вы также научились фильтровать список секретов по имени и метке (label) с использованием флага --filter, а также форматировать вывод команды docker secret ls для лучшей читаемости или для использования в скриптах.



