Статус объекта снят с учета в 2019 году: что это значит, найденный плательщик
Оформляя документы на земельный участок или выполняя другие сделки, совершаемые между недвижимостью, может возникать вопрос, касающийся статуса объекта, который указывается в кадастровом паспорте или выписке.
Он может быть разный — временный, учтенный, ранее учтенный, а также часто встречается статус объекта «снят с учета», что значит прекращение его фактической регистрации в кадастровой службе и указания на кадастровой карте. Статус объекта регулируется государством.
Кадастровый учет
Под кадастровым учетом имеется в виду внесение уполномоченными органами необходимых данных в кадастр, что позволяет в дальнейшем идентифицировать объект недвижимости, который будет подлежать дальнейшему учету.
Причинами, по которым недвижимое имущество может приобретать статус снятого с учета или аннулированного, могут быть следующие:
- Когда объект прекращает свое существование в результате его уничтожения от стихийных бедствий.
- Его демонтаж согласно законодательству.
- Когда происходит изменение характеристик, считающихся уникальными, в результате чего юридический статус объекта не может существовать в прежнем виде.
Основания для изменения индивидуальных характеристик могут быть следующие:
- Ремонтные работы или реконструкция капитального строения, когда по итогам строительных работ добавляется пристройка, или происходят изменения площади застройки участка земли.
- Происходит раздел земельного участка или капитального строения на несколько новых объектов.
- Слияние нескольких помещений, а также земельных наделов в один общий объект.
Объект имущества может прекратить свое существование и в других индивидуальных случаях, не прописанных в федеральном законе. Также снятие с учета может проводиться по решению судебного органа.
Снятие
ВНИМАНИЕ! Участок земли относится к объекту собственности, который необходимо регистрировать в государственном кадастре недвижимости.
Процедура снятия с учета представляет собой упразднение существующих сведений о наделе и их исключение из ГКН по причине прекращения его существования как фактического недвижимого объекта и владения, в том числе из-за отказа от него владельцем.
В каких ситуациях случается прекращение учета земельного участка в кадастре:
- Если все недвижимое имущество, данные о котором представляются в ГКН, до момента ее регистрации в ЕГРП обладает таким статусом, как “временный”.
- До истечения вышеуказанного периода любой владелец, который предоставил документы для оформления земельного участка в кадастре, может обратиться с заявлением об исключении объекта из ГКН.
- Снятие с учета происходит из-за преобразования или прекращения существования недвижимого объекта имущества. Происходит это на протяжении трех дней после оформления имущественных прав на образованные из прежнего объекта новые земельные участки и поступления данных в кадастровую палату из регистрационной.
- Статус снятия с учета может устанавливаться по судебному решению.
Читать также: ЕГРП — что это такое: расшифровка.
Если право на владение имуществом не было оформлено в течение пятилетнего срока, то кадастровой службой автоматически присваивается статус “снят с учета” и происходит исключение его из ГКН. Причинами снятия земли с учета могут быть:
- Изменившиеся границы надела.
- Слияние или деление участка на несколько объектов.
- В случае ошибки в кадастре.
- Если из-за данного участка невозможно провести межевание другого надела.
Документы
Для того, чтобы земельный участок больше не был зарегистрирован в кадастре, необходимо предоставить пакет документов, а именно:
- Написанное по установленному образцу заявление.
- Копию свидетельства о регистрации в ЕГРП, подтверждающего имущественное право на землю.
- Кадастровый номер и паспорт.
- Паспорт заявителя.
- Акт обследования или акт работ землеустроительного характера, который составляется кадастровыми инженерами с квалификацией, подтвержденной аттестацией. Для его составления требуются определенные документы.
В кадастровую палату может обратиться как собственник, так и лицо, действующее по нотариальной доверенности. В заявлении обязательно должна быть прописана причина, по которой необходимо снять земельный надел с учета, а также понадобится приложить определенное количество копий решения.
ВНИМАНИЕ! Чтобы снять с учета земельный надел, он не должен иметь дополнительных зарегистрированных прав собственности.
Приостановление или отказ
Кадастровой службой после обращения заявителя может быть принято несколько решений:
- Присвоить статус снятия с учета.
- Приостановить процедуру.
- Отказать в удовлетворении требований заявителя.
Срок рассмотрения заявления с приложенным пакетом необходимых документов в кадастре составляет 10 дней с момента его регистрации. Приостановление процедуры происходит в случае, если:
- Отсутствуют документы, которые требуются в соответствии с нормативными актами, регламентирующими кадастровый учет.
- Имеется несоответствие данных об участке земли в кадастре, а также в документах заявителя присутствуют разногласия о его площади или границах.
О приостановлении процедуры выносится решение с указанием причин, рекомендаций по их исправлению, перечня не хватающих документов или ошибок в заявлении. Данное решение выносится на срок до 3 месяцев. Это время дается для устранения имеющихся недостатков.
В снятии с учета земли будет отказано в случае, если:
- Указанный в заявлении объект недвижимости не подлежит кадастровому учету.
- Не устранены причины приостановления в установленный трехмесячный срок.
- Заявление написано ненадлежащим лицом, а также если предоставленные бумаги не соответствуют требованиям закона.
- Не допускается преобразование данного объекта.
- Документы недействительные из-за истечения срока действия или заверены неправомерным способом.
В решении об отказе указываются причины, а также возможные доработки ошибок.
Куда необходимо обращаться
Подать заявление и необходимый перечень документов можно несколькими способами:
- На сайте Росреестра, однако необходимо, чтобы в заявлении стояла электронная цифровая подпись, которая приобретается в специальных удостоверяющих центрах.
- При помощи личного посещения организации Росреестра.
- Через многофункциональный центр, однако предварительно нужно проверить о наличии в нем данной услуги.
- По почте. Для данного варианта необходимо, чтобы все документы были нотариально заверены. Оформляются они как заказное письмо с уведомлением о получении.
Сайт Росреестра дает возможность каждому заявителю отслеживать этап рассмотрения документов.
Срок рассмотрения заявления
В соответствии с законом снятие объекта недвижимости происходит в следующий установленный период:
- Пять рабочих дней после предоставления заявления в органы регистрации.
- Семь рабочих дней, если заявление было подано через многофункциональный центр.
Госпошлину оплачивать при этом не требуется. После проведения данной процедуры заявителю предоставляется на руки выписка, подтверждающая, что объект больше не числится на учете в регистрационных органах.
В случае получения отказа можно обратиться в судебную инстанцию с пакетом следующих документов:
- Заявление.
- Отказ органов, занимающихся снятием с учета объекта.
- Другие документы, подтверждающие обстоятельства, которые отмечены в заявлении.
- Платежное поручение или квитанция о внесении госпошлины.
Если заявитель получает положительное решение суда, то он может заново обратиться в регистрационные органы с целью снятия с учета недвижимого имущества.
Присвоение статуса “объект снят с учета” является несложной процедурой. В основном она необходима для уменьшения налогообложения или для возведения нового капитального строения.
Статья 41. Особенности осуществления государственного кадастрового учета и государственной регистрации прав при образовании объекта недвижимости
Перспективы и риски арбитражных споров. Ситуации, связанные со ст. 41 |
— Заявитель не согласен с отказом в регистрации обременения сельскохозяйственной земли
— Заявитель не согласен с отказом в регистрации права хозяйственного ведения, оперативного управления, постоянного (бессрочного) пользования
1. В случае образования двух и более объектов недвижимости в результате раздела объекта недвижимости, объединения объектов недвижимости, перепланировки помещений, изменения границ между смежными помещениями в результате перепланировки или изменения границ смежных машино-мест государственный кадастровый учет и государственная регистрация прав осуществляются одновременно в отношении всех образуемых объектов недвижимости.
(часть 1 в ред. Федерального закона от 03.07.2016 N 315-ФЗ)(см. текст в предыдущей редакции
)
КонсультантПлюс: примечание.
С 28.10.2021 в ч. 1.1 ст. 41 вносятся изменения (ФЗ от 30.04.2021 N 120-ФЗ). См. будущуюредакцию.
1.1. При разделе машино-мест или при изменении границ между смежными машино-местами не допускается образование машино-места площадью, не соответствующей установленным органом нормативно-правового регулирования требованиям к минимально и (или) максимально допустимым размерам машино-места.
(часть 1.1 введена Федеральным законом от 03.07.2016 N 315-ФЗ)2. В случае образования двух и более земельных участков в результате раздела земельного участка, перераспределения земельных участков государственный кадастровый учет и государственная регистрация прав осуществляются одновременно в отношении всех образуемых земельных участков, за исключением случаев, если в соответствии с настоящим Федеральным законом государственный кадастровый учет осуществляется без одновременной государственной регистрации прав.
(в ред. Федерального закона от 30.04.2021 N 120-ФЗ)(см. текст в предыдущей редакции
)
3. Снятие с государственного кадастрового учета и государственная регистрация прекращения прав на исходные объекты недвижимости осуществляются одновременно с государственным кадастровым учетом и государственной регистрацией прав на все объекты недвижимости, образованные из таких объектов недвижимости, за исключением случаев, если в соответствии с настоящим Федеральным законом государственный кадастровый учет осуществляется без одновременной государственной регистрации прав. В случае, если в соответствии с настоящим Федеральным законом государственный кадастровый учет образованных объектов недвижимости осуществляется без одновременной государственной регистрации прав на них, снятие с государственного кадастрового учета и государственная регистрация прекращения прав на исходные объекты недвижимости осуществляются одновременно с государственной регистрацией прав на образованные объекты недвижимости.
(в ред. Федерального закона от 30.04.2021 N 120-ФЗ)(см. текст в предыдущей редакции
)
4. Государственный кадастровый учет измененных земельных участков в результате выдела доли в натуре в счет доли в праве общей собственности или раздела земельного участка, находящегося в государственной или муниципальной собственности, перераспределения земельного участка, находящегося в частной собственности, и земельного участка, находящегося в государственной или муниципальной собственности, а также в результате раздела земельного участка, предоставленного садоводческому или огородническому некоммерческому товариществу, в результате которых такие земельные участки сохраняются в измененных границах, осуществляется одновременно с государственным кадастровым учетом и государственной регистрацией прав на земельные участки, образованные из указанных земельных участков.
(в ред. Федеральных законов от 29.07.2017 N 217-ФЗ, от 30.04.2021 N 120-ФЗ)(см. текст в предыдущей редакции
)
5. При прекращении права на здание, сооружение, зарегистрированного в Едином государственном реестре недвижимости, государственная регистрация права в отношении всех помещений, машино-мест в таких здании, сооружении должна быть осуществлена одновременно, при этом такие здание, сооружение с государственного кадастрового учета не снимаются.
(часть 5 в ред. Федерального закона от 03.07.2016 N 361-ФЗ)(см. текст в предыдущей редакции
)
6. В случае, если все помещения и машино-места в здании, сооружении находятся в собственности одного лица, такое лицо вправе обратиться с заявлением о прекращении права собственности на все помещения и машино-места с одновременной государственной регистрацией права собственности на такие здание, сооружение.
(в ред. Федерального закона от 03.07.2016 N 315-ФЗ)(см. текст в предыдущей редакции
)
7. Государственный кадастровый учет и государственная регистрация права собственности на помещение или помещения (в том числе жилые) в жилом доме (объекте индивидуального жилищного строительства) или в садовом доме не допускаются.
(в ред. Федеральных законов от 03.07.2016 N 361-ФЗ, от 29.07.2017 N 217-ФЗ)(см. текст в предыдущей редакции
)
8. Для осуществления государственного кадастрового учета и (или) государственной регистрации прав необходимы следующие документы:
(в ред. Федерального закона от 30.04.2021 N 120-ФЗ)(см. текст в предыдущей редакции
)
1) соглашение об образовании общей долевой или общей совместной собственности — при объединении объектов недвижимости, находящихся в собственности разных лиц;
2) соглашение о разделе объекта недвижимости — при разделе объекта недвижимости, находящегося в общей собственности нескольких лиц;
3) соглашение о выделе доли в натуре в праве общей собственности на объект недвижимого имущества либо заверенная уполномоченным должностным лицом органа местного самоуправления копия протокола общего собрания участников долевой собственности на земельный участок из земель сельскохозяйственного назначения об утверждении проекта межевания земельных участков, перечня собственников образуемых земельных участков и размеров их долей в праве общей собственности на образуемые земельные участки в случае образования земельного участка на основании решения общего собрания участников долевой собственности на земельный участок из земель сельскохозяйственного назначения — при выделе земельного участка в счет доли в праве общей собственности;
КонсультантПлюс: примечание.
С 01.01.2035 Федеральным законом от 01.05.2016 N 119-ФЗ п. 3.1 ч. 8 признается утратившим силу.3.1) решение об утверждении схемы размещения земельного участка на публичной кадастровой карте — при образовании земельного участка в целях его предоставления гражданину в безвозмездное пользование в соответствии с Федеральным законом «Об особенностях предоставления гражданам земельных участков, находящихся в государственной или муниципальной собственности и расположенных в Арктической зоне Российской Федерации и на других территориях Севера, Сибири и Дальнего Востока Российской Федерации, и о внесении изменений в отдельные законодательные акты Российской Федерации»;(п. 3.1 введен Федеральным законом от 01.05.2016 N 119-ФЗ; в ред. Федерального закона от 28.06.2021 N 226-ФЗ)(см. текст в предыдущей редакции
)
4) судебное решение, если образование объектов недвижимости осуществляется на основании такого судебного решения;
5) разрешение на ввод объекта в эксплуатацию;
6) соглашение или решение о перераспределении земельных участков — при перераспределении земель и (или) земельных участков, находящихся в государственной или муниципальной собственности, между собой и таких земель и (или) земельных участков и земельных участков, находящихся в частной собственности;
7) схема расположения земельного участка или земельных участков на кадастровом плане территории, утвержденная в порядке, установленном Земельным кодексом Российской Федерации, решение о предварительном согласовании предоставления земельного участка;(п. 7 введен Федеральным законом от 30.04.2021 N 120-ФЗ)8) решение о безвозмездной передаче земельного участка, находящегося в федеральной собственности и подлежащего образованию, в собственность субъекта Российской Федерации или муниципальную собственность;
(п. 8 введен Федеральным законом от 30.04.2021 N 120-ФЗ)9) правоустанавливающий документ на исходный или измененный объект недвижимости, если право на такой объект недвижимости не зарегистрировано в Едином государственном реестре недвижимости;
(п. 9 введен Федеральным законом от 30.04.2021 N 120-ФЗ)10) письменное согласие третьих лиц на образование объекта недвижимости, если такое согласие на образование объекта недвижимости является обязательным в соответствии с федеральным законом;
(п. 10 введен Федеральным законом от 30.04.2021 N 120-ФЗ)11) проект межевания территории в случаях, установленных Земельным кодексом Российской Федерации;(п. 11 введен Федеральным законом от 30.04.2021 N 120-ФЗ)КонсультантПлюс: примечание.
С 01.01.2035 п. 12 ч. 8 ст. 41 утрачивает силу (ФЗ от 30.04.2021 N 120-ФЗ).12) схема размещения земельного участка на публичной кадастровой карте, если образование земельного участка осуществляется в целях его предоставления гражданину в безвозмездное пользование в соответствии с Федеральным законом от 1 мая 2016 года N 119-ФЗ «Об особенностях предоставления гражданам земельных участков, находящихся в государственной или муниципальной собственности и расположенных на территориях субъектов Российской Федерации, входящих в состав Дальневосточного федерального округа, и о внесении изменений в отдельные законодательные акты Российской Федерации»;(п. 12 введен Федеральным законом от 30.04.2021 N 120-ФЗ)13) проектная документация лесных участков, если образование земельных участков осуществлено в соответствии с требованиями Лесного кодекса Российской Федерации, за исключением случаев, установленных федеральным законом;(п. 13 введен Федеральным законом от 30.04.2021 N 120-ФЗ)14) проект межевания земельного участка или земельных участков, утвержденный решением общего собрания участников общей долевой собственности на земельный участок сельскохозяйственного назначения либо утвержденный собственником земельной доли или земельных долей;
(п. 14 введен Федеральным законом от 30.04.2021 N 120-ФЗ)15) перечень договоров участия в долевом строительстве, заключенных в отношении объектов долевого строительства в многоквартирном доме и (или) ином объекте недвижимости, расположенных на образуемом земельном участке, для строительства (создания) которых привлекаются средства участников долевого строительства, — при разделе земельного участка в соответствии с частью 2.1 статьи 13 Федерального закона от 30 декабря 2004 года N 214-ФЗ «Об участии в долевом строительстве многоквартирных домов и иных объектов недвижимости и о внесении изменений в некоторые законодательные акты Российской Федерации»;(п. 15 введен Федеральным законом от 30.04.2021 N 120-ФЗ)16) иной документ, на основании которого в соответствии с законодательством Российской Федерации осуществляется образование земельных участков и иных объектов недвижимости.
(п. 16 введен Федеральным законом от 30.04.2021 N 120-ФЗ)9. Размер долей в праве общей собственности на земельный участок вносится в Единый государственный реестр недвижимости органом регистрации прав в соответствии с документом, содержащим сведения о размере долей участников долевой собственности, а в случае выдела земельных участков в счет доли в праве общей собственности на земельный участок сельскохозяйственного назначения — в соответствии с проектом межевания земельных участков.
10. Основанием для осуществления государственного кадастрового учета и государственной регистрации прав на объекты недвижимости, образуемые в результате объединения объектов недвижимости или перераспределения объектов недвижимости, находящихся в собственности одного лица, раздела объекта недвижимости, находящегося в собственности одного лица, выдела земельного участка в счет земельной доли на основании решения собственника земельной доли является соответствующее заявление такого лица о государственном кадастровом учете и государственной регистрации прав, а также документы, перечисленные в части 8 настоящей статьи.11. Утратил силу. — Федеральный закон от 30.04.2021 N 120-ФЗ.(см. текст в предыдущей редакции
)
12. В случае, если в отношении исходного объекта недвижимости в Едином государственном реестре недвижимости зарегистрированы ограничения прав и обременения такого объекта недвижимости, на основании заявления о государственном кадастровом учете и государственной регистрации прав на образуемые из него объекты недвижимости и одновременно с такими государственным кадастровым учетом и государственной регистрацией прав осуществляются:
1) государственная регистрация ограничений прав и обременений образуемых объектов недвижимости, если в соответствии с федеральным законом такие ограничения и обременения переходят (сохраняются) в отношении образованных объектов;
2) государственная регистрация прекращения ограничений прав и обременений исходных объектов недвижимости, если в соответствии с федеральным законом такие ограничения и обременения не переходят (не сохраняются) в отношении образованных объектов недвижимости.
12.1. В случае, если в отношении исходного земельного участка в кадастр недвижимости внесены сведения об ограничении его оборотоспособности в соответствии со статьей 11 Федерального закона «Об особенностях предоставления гражданам земельных участков, находящихся в государственной или муниципальной собственности и расположенных в Арктической зоне Российской Федерации и на других территориях Севера, Сибири и Дальнего Востока Российской Федерации, и о внесении изменений в отдельные законодательные акты Российской Федерации», на основании заявления о государственном кадастровом учете и государственной регистрации прав на образуемые из него объекты недвижимости и одновременно с такими государственным кадастровым учетом и государственной регистрацией прав данные сведения вносятся в кадастр недвижимости в отношении образованных из него земельных участков.(часть 12.1 введена Федеральным законом от 01.05.2016 N 119-ФЗ; в ред. Федеральных законов от 29.07.2017 N 247-ФЗ, от 28.06.2021 N 226-ФЗ)(см. текст в предыдущей редакции
)
13. Отсутствие государственной регистрации права в Едином государственном реестре недвижимости на исходный объект недвижимости не является препятствием для осуществления государственной регистрации прав на образуемые из него объекты недвижимости.
КонсультантПлюс: примечание.
С 28.10.2021 в ч. 14 ст. 41 вносятся изменения (ФЗ от 30.04.2021 N 120-ФЗ). См. будущуюредакцию.14. Если в отношении земельного участка, образуемого из земель или земельного участка, государственная собственность на которые не разграничена, подано заявление о государственном кадастровом учете без заявления о государственной регистрации права собственности Российской Федерации, права собственности субъекта Российской Федерации, права муниципальной собственности, права частной собственности, органом регистрации прав одновременно с государственным кадастровым учетом осуществляется внесение сведений в Единый государственный реестр недвижимости о том, что земельный участок образован из земель или земельного участка, государственная собственность на которые не разграничена, а также сведений об органе, уполномоченном в соответствии с Федеральным законом от 25 октября 2001 года N 137-ФЗ «О введении в действие Земельного кодекса Российской Федерации» на распоряжение таким земельным участком.15. Если в течение пяти лет со дня государственного кадастрового учета земельного участка, указанного в части 14 настоящей статьи, не осуществлена государственная регистрация права собственности Российской Федерации, права собственности субъекта Российской Федерации, права муниципальной собственности, права частной собственности, постоянного (бессрочного) пользования, безвозмездного пользования, аренды, доверительного управления, орган регистрации прав снимает такой земельный участок с государственного кадастрового учета, за исключением образуемых при выполнении комплексных кадастровых работ земельных участков, занятых площадями, улицами, проездами, набережными, скверами, бульварами, водными объектами, пляжами и другими объектами общего пользования, образование которых предусмотрено утвержденным в установленном
законодательствомо градостроительной деятельности порядке проектом межевания территории, которые после образования будут относиться к землям общего пользования, территориям общего пользования, а также земельных участков, занятых зданиями, сооружениями, объектами незавершенного строительства, земельных участков, указанных в части 18 настоящей статьи.(в ред. Федерального закона от 30.04.2021 N 120-ФЗ)
(см. текст в предыдущей редакции
)
(см. текст в предыдущей редакции
)
17. В случае, если в результате переноса линейного объекта, сведения о котором содержатся в Едином государственном реестре недвижимости, путем его реконструкции местоположение такого линейного объекта (его части) изменяется и такой объект (его часть) размещается в границах публичного сервитута, орган регистрации прав при осуществлении государственной регистрации прав на такой линейный объект вносит изменения в сведения Единого государственного реестра недвижимости об обладателе публичного сервитута в случае, если в качестве обладателя сервитута в Едином государственном реестре недвижимости указано иное лицо.
(часть 17 введена Федеральным законом от 03.08.2018 N 341-ФЗ)18. Земельные участки, которые образованы путем перераспределения земель или земельных участков, находящихся в государственной или муниципальной собственности, и земельного участка, находящегося в частной собственности, на основании решения органа государственной власти или органа местного самоуправления об утверждении схемы расположения земельного участка или согласия органа государственной власти или органа местного самоуправления на заключение соглашения о перераспределении земельных участков в соответствии с утвержденным проектом межевания территории и права на которые не зарегистрированы в Едином государственном реестре недвижимости, снимаются с государственного кадастрового учета:
1) по истечении трех лет со дня осуществления их государственного кадастрового учета по решению государственного регистратора прав;
2) до истечения трех лет со дня осуществления их государственного кадастрового учета по заявлению лица, на основании заявления которого государственный кадастровый учет таких земельных участков был осуществлен, либо по заявлению любого лица на основании решения суда.
(часть 18 введена Федеральным законом от 30.04.2021 N 120-ФЗ)19. Снятие с государственного кадастрового учета и при наличии зарегистрированных прав государственная регистрация прекращения прав на исходные земельные участки, права на которые прекращаются в связи с образованием из них земельных участков путем перераспределения земель или земельного участка, находящихся в государственной или муниципальной собственности, и земельных участков, находящихся в частной собственности, осуществляются только одновременно с осуществлением государственной регистрации прав на земельные участки, образованные на основании решения об утверждении схемы расположения земельного участка либо согласия органа государственной власти или органа местного самоуправления на заключение соглашения о перераспределении земельных участков в соответствии с утвержденным проектом межевания территории.
(часть 19 введена Федеральным законом от 30.04.2021 N 120-ФЗ)20. Орган регистрации прав по истечении трех лет со дня осуществления государственного кадастрового учета части земельного участка, указанной в пункте 11 части 5 статьи 14 настоящего Федерального закона, снимает с государственного кадастрового учета такую часть земельного участка, если на основании соглашения об установлении сервитута не осуществлена государственная регистрация сервитута в отношении такого земельного участка.(часть 20 введена Федеральным законом от 30.04.2021 N 120-ФЗ)Кадастровая палата озвучила количество земельных участков, снятых с кадастрового учета в прошлом году
Кадастровая палата озвучила количество земельных участков, снятых с кадастрового учета в прошлом году
В 2019 году в Курской области на государственный кадастровый учет поставлено почти 31,4 тыс. земельных участков, при этом к концу года с кадастрового учета снято более 7,6 тыс. земельных участков. В 2018 году поставлено на учет более 38,4 тыс., тогда как снято с учета почти 5,4 тыс. земельных участков.
Снятие с государственного кадастрового учета объекта недвижимости подразумевает прекращение актуальности сведений о самом объекте, прекращение права собственности. Согласно Земельному кодексу РФ и федеральному закону «О государственной регистрации недвижимости» снятие с кадастрового учета земельного участка может производиться только в ряде определенных случаев.
Например, если собственник принял решение о преобразовании своего земельного участка путем процедуры раздела, объединения или перераспределения, то такой земельный участок утрачивает актуальность, запись о нем в реестре недвижимости переходит в статус «архивная», а для вновь образованных участков он становится исходным. В данном случае процедура снятия строго определена нормой Земельного кодекса РФ.
Основанием для снятия земельного участка с кадастрового учета также может быть отсутствие регистрации права собственности в установленном порядке.
Один из случаев снятия объекта с кадастрового учета связан с особенным статусом земельного участка, который носит название «временный». Такой статус приобретали участки, прошедшие кадастровый учет до 1 января 2017 года, и регистрация прав на которые не проводилась. Если право на такой участок и далее не будет зарегистрировано, то после 1 марта 2022 года «временный» участок будет снят с кадастрового учета.
Следующий момент, статус всех земельных участков, прошедших процедуру государственного кадастрового учета после 1 января 2017 года, носит название «актуальный». Однако, в случае отсутствия зарегистрированного права на такие земельные участки, в течение 5 лет с момента проведения процедуры учета, в отношении них также будет проведена процедура снятия с кадастрового учета.
И последний вариант — это процедура исключения сведений о земельных участках, записи о которых внесены в госреестр до 1 марта 2008 года, но в отношении которых не было зарегистрировано право собственности и в Едином госреестре недвижимости (ЕГРН) отсутствуют сведения о связи земельного участка с объектом капитального строительства, расположенного на этом участке. На конец 2019 года по этому основанию было снято более 15 тыс. земельных участков.
Проверить, какие сведения о земельном участке содержатся в ЕГРН, имеется ли запись о собственнике, поможет выписка «Об основных характеристиках и зарегистрированных правах на объект недвижимости» из Единого госреестра недвижимости. Заказать выписку можно в ближайшем офисе МФЦ.
Согласно действующему законодательству, регистрация права собственности занимает семь рабочих дней, а при передаче документов через МФЦ срок регистрационной процедуры увеличивается до девяти рабочих дней.
Акулова Ольга, пресс-служба
Кадастровой палаты Курской области
Тел.: +7 (4712) 72-40-00, доб. 2232
Статус посстройки снят с учета
Кадастровый учет помещения статус снят с учета что это значит
Статус земельного участка снят с учета: что это значит
Как снять с кадастрового учета объект недвижимости?
Что значит статус объекта «снят с учета»?
Есть еще причина: раздел между наследниками (или по другим причинам) одного участка на несколько.
- Новый надел обязательно ставится на кадастровый учет, ему присваивается новый уникальный номер.
Статус кадастрового объекта снят с учета
Земельный участок территории снт снят с кадастрового учета что это значит
Получив отказ заявитель может обратиться в суд.
Снятие с кадастрового учета объекта недвижимости
Статус земельного участка: снят с учета
Таким образом, на этот участок нельзя оформить право собственности.
Кадастровый учет помещения статус снят с учета что это значит
Жилого (нежилого) дома Для снятия с кадастрового учета дома необходимы следующие основания:
Статус земельного участка снят с учета: что это значит
Статус земельного участка: снят с учета. Что значит это понятие?
В каких случаях происходит снятие участка земли с кадастрового учета
- Вся недвижимость, на которую представляются данные в ГКН, до момента ее регистрации собственниками в ЕГРП имеет статус «временной».
Причины снятия земельного участка с учета в кадастровом реестре:
Для присвоения статуса «снят с учета» земельному участку в кадастровую палату направляются следующие документы:
Когда появляется возможность приостановления или отказа в снятии земельного участка с учета
По обращению в кадастровую палату принимается одно из трех решений:
На основании ст. 27 в удовлетворении обращения будет отказано, если:
Статус объекта снят с учета что значит квартира
Что значит статус объекта «снят с учета»?
Статус земельного участка снят с учета: что это значит
Снятие с кадастрового учета объекта недвижимости: как это делается
Статус посстройки снят с учета
Как снять с кадастрового учета объект недвижимости?
Жилого (нежилого) дома Для снятия с кадастрового учета дома необходимы следующие основания:
Квартира снята с учета без участия собственников (госкадастр недвижимости)
Правовед.RU 512 юристов сейчас на сайте
Добрый день. Планируем снимать квартиру. На сайте в росреестре написано: Статус объекта: Снят с учета.
Статус объекта на сайте росреестра.
Для снятия объекта недвижимого имущества с учета в кадастре надо будет предоставить следующие документы:
Статус объекта недвижимости
Для начала процедуры потребуется вызывать специалиста для составления акта.
Объект недвижимости снят с кадастрового учета: что это значит
Поставить на кадастровый учет объет можно сформировав межевой план на землю или технический план на дом.
Основания для снятия
Исключение из ГКН обозначает то, что объект снят с кадастрового учета, потому что имели место:
Документальное оформление
Как снять квартиру с кадастрового учета
Другие вопросы по этой теме:
Жилой садовый дом необходимо снять с кадастрового учета при следующих обстоятельствах:
Если после покупки или в процессе владения вы выяснили, что ваш земельный участок каким-то образом оказался.
Ранее учтенный земельный участок не оформлен, как снять с учета?
Напомню, с 1 января 2017 года вступил в силу Федеральный закон от 13.07.2015 № 218-ФЗ «О государственной регистрации недвижимости», которым утверждены новые правила кадастрового учета объектов недвижимости и регистрации прав на них. Новый закон предусматривает снятие с кадастрового учета земельных участков, которые были учтены в кадастре до 1 марта 2008 года (их называют «ранее учтенными»), если на них не были зарегистрированы права, в том числе аренда.
По разным причинам владельцы до настоящего времени не зарегистрировали права на свои участки: не знал, забыл, и др. В соответствии с изменениями в действующем законодательстве земельные участки могут быть сняты с государственного кадастрового учета.
После снятия земельного участка с учета он прекращает свое существование как объект недвижимости, поэтому для оформления прав на такой земельный участок потребуется заново поставить его на кадастровый учет. При этом нужно будет снова провести кадастровые работы, оформить межевой план. В таком случае земельному участку будет присвоен новый кадастровый номер, отличный от того, который имелся ранее, поскольку кадастровый номер – это основная характеристика, которая не может повторяться.
Снятые с кадастрового учета земельные участки приобретают статус свободных (неразграниченных) земель, право распоряжения которыми переходит уполномоченному органу местного самоуправления.
Порядок действий в отношении таких ранее учтенных участков установлен пунктом 181 Порядка ведения ЕГРН, установленного приказом Минэкономразвития РФ от 16.12.2015 №943.
В случае наличия в ЕГРН сведений об исходных земельных участках или расположенных на них объектах недвижимости и наличия в ЕГРН сведений о правообладателях таких исходных земельных участков или расположенных на них объектах недвижимости, орган регистрации прав направляет правообладателю уведомление по почтовому адресу или адресу электронной почты. В случае если в орган регистрации прав не будут представлены документы для осуществления регистрации прав на указанные образованные земельные участки в течение 6 месяцев со дня направления уведомления такие земельные участки будут сняты с учета.
При отсутствии таких сведений, списки ранее учтенных земельных участков направляются в органы местного самоуправления для проведения анализа на наличие правоустанавливающих документов или оснований для разграничения права. В случае поступления в орган регистрации уведомлений об отсутствии оснований для разграничения права собственности на такие земельные участки или правоустанавливающих документов, выданных иным лицам, либо непоступления уведомления в течение 3 месяцев со дня направления запроса записям о земельных участках присваивается статус «архивная».
Граждане могут проверить, стоит ли на кадастровом учете их земельный участок, и зарегистрировано ли на него право. Для этого необходимо на сайте Росреестра в сервисе «Справочная информация об объектах недвижимости в режиме online» проверить сведения об интересующем земельном участке и убедиться, что в полученных результатах запроса в разделе «Права и обременения» имеется запись о регистрации права. Это означает, что данный участок не будет снят с учета. С запросом о предоставлении сведений из Единого государственного реестра недвижимости можно также обратиться в многофункциональный центр по предоставлению государственных и муниципальных услуг
Начальник отдела нормализации баз данных филиала
Кадастровой палаты по Тамбовской области Ирина Русанова
Семь раз проверь: кадастровая палата объяснила саратовцам нюансы снятия земли с учета
С января по декабрь прошлого года с кадастрового учета в Саратовской области снято более 24 тысяч земельных участков. В 2018 году это цифра составила 23,5 тысячи.
Управление Росрееста и Кадастровая палата по Саратовской области разъяснили, в каких случаях и по каким причинам земельные участки снимаются с кадастрового учета.
Как правило, участок снимают с учета по желанию его собственника, процедура связана с преобразованием участка. Например, владелец участка хочет его разделить или объединить с другим. Тогда параллельно со снятием одного земельного участка на кадастровый учет ставится один или несколько вновь образованных. Так с начала 2019 года региональными структурами Росреестра на государственный кадастровый учет поставлено почти 18,5 тысячи земельных участков.
Запись о первоначальном земельном участке в Едином государственном реестре недвижимости (ЕГРН) переходит в статус «архивная», а для вновь образованных участков (со статусом «актуальный») он становится исходным.
Вместе с тем необходимо помнить, что Земельным кодексом РФ и федеральным законом «О государственной регистрации недвижимости» также предусмотрено право Росреестра в ряде случаев снимать землю с учета самостоятельно. Прежде всего, речь идет об участках со статусом «временный», а также о ранее учтенных участках, сведения о собственниках которых отсутствуют в ЕГРН.
Управление Росреестра и Кадастровая палата по Саратовской области дали на этот счет следующие разъяснения:
Ранее учтенными считаются земельные участки, которые были поставлены на кадастровый учёт до 1 марта 2008 года. Сведений о них могут быть исключены из реестра при отсутствии в ЕГРН:
- сведений о правообладателях участка;
- сведений о расположении на земельном участке объектов недвижимости, а также сведений о правообладателях таких объектов;
- сведений об исходных земельных участках.
«Прежде, чем снять ранее учтенный земельный участок с кадастрового учёта, орган регистрации прав направляет в муниципальную администрацию запрос о наличии правоустанавливающих документов и оснований для разграничения права собственности в отношении него. При поступлении отрицательного ответа, а также при непоступлении ответа в течение 3-месяцев, статус земельного участка меняется на «архивный». Поэтому рекомендуем владельцам участков, не зарегистрировавших своё право в Росреестре, обязательно это сделать до 1 марта 2022 года, чтобы потом не пришлось восстанавливать свои права», — рассказал директор Кадастровой палаты Саратовской области Рафаиль Ахмеров.
Такие же действия предпринимают региональные структуры Росреестра в отношении земельных участков со статусом «временный» прежде, чем снять их с кадастрового учета.
Статус «временный» присваивался до 1 января 2017 года тем участкам, которые были поставлены на кадастровый учет, но права на которые не были зарегистрированы в госреестре. Если в течение 5 лет регистрация прав на эти участки не осуществлялась, их статус изменялся на «архивный». Данная норма продолжает действовать до 1 марта 2022 года. После этой даты все участки со статусом «временный» с неподтвержденными правами будут сняты с кадастрового учёта.
Статус всех земельных участков, прошедших процедуру государственного кадастрового учета после 1 января 2017 года, носит название «актуальный». Однако, в случае отсутствия зарегистрированного права на такие земельные участки в течение 5 лет с момента проведения процедуры учета, их также снимут с учета. Такие участки получают статус свободных (неразграниченных) и переходят в распоряжение уполномоченного органа местного самоуправления.
Как показывает практика, чаще всего в ситуации, когда неожиданно выясняется, что земельный участок снят с кадастрового учета, оказываются наследники, обратившиеся в Росреестр со свидетельством о наследстве за подтверждением своего права на недвижимость. В связи с этим эксперты Федеральной Кадастровой палаты рекомендуют заранее запрашивать сведения из ЕГРН о земельном наделе. В настоящее время указанные запросы могут быть поданы в Росреестр через МФЦ, посредством почтового отправления и электронных сервисов Росреестра и Кадастровой палаты.
В случае, если в полученной выписке будут отсутствовать сведения о правообладателе, потребуется обращение в Росреестр с заявлением о регистрации права собственности и правоустанавливающими документами. Сделать это можно теми же способами, что и подать запрос.
Статус земельного участка снят с учета
Статус «снят с учета» земельному участку устанавливается на основании ФЗ № 221 «О государственном кадастре недвижимости» от 24.07.2007, где регламентированы все основные вопросы, связанные с проведением данной юридической процедуры.
Дорогие читатели! Наши статьи рассказывают о типовых способах решения юридических вопросов, но каждый случай носит уникальный характер.
Если вы хотите узнать, как решить именно Вашу проблему — обращайтесь в форму онлайн-консультанта справа. Это быстро и бесплатно! Или позвоните нам по телефону 8(800)-350-30-02 (звонок бесплатный для всех регионов России)!
Статус земельного участка: снят с учета. Что значит это понятие?
Участок земли является объектом собственности. Он подлежит регистрации в государственном кадастре недвижимости (ГКН). При этом наделу присваиваются конкретные индивидуальные особенности и характеристики.
Снятие земельного участка с учета в кадастровом реестре представляет собой упразднение имеющихся сведений о наделе и исключение информации о нем из ГКН, в связи с прекращением его существования как фактического объекта недвижимости и владения или отказом собственника от него.
В каких случаях происходит снятие участка земли с кадастрового учета
- Вся недвижимость, на которую представляются данные в ГКН, до момента ее регистрации собственниками в ЕГРП имеет статус «временной».
Важно! Если право владения, собственности, иное обременение или право на вновь образуемую недвижимость не будет оформлено и зарегистрировано в течение пяти лет, то кадастровое управление автоматически устанавливает статус земельного участка «снят с учета» и исключает его из ГКН.
- До истечения пятилетнего срока собственник, представивший документы для кадастрового оформления земельного участка, имеет возможность обратиться с заявлением об исключении его из ГКН.
- В соответствии со ст. 24 указанного закона зарегистрированный в государственном кадастре объект недвижимости снимается с учета в случае его преобразования и прекращения существования. Это происходит в течение трех дней после регистрации имущественных прав на вновь образованные из него земельные участки и поступления сведений из регистрационной палаты в кадастровую.
- Статус «снят с учета» земельный участок может получить по решению суда.
Причины снятия земельного участка с учета в кадастровом реестре:
- Изменение границ надела;
- Расширение участка;
- Деление его на части;
- Ошибки в кадастре – участок зарегистрирован дважды либо накладывается на другой участок большей площади;
- Данный надел не позволяет сделать межевание соседнего надела;
- Другие основания.
Для присвоения статуса «снят с учета» земельному участку в кадастровую палату направляются следующие документы:
- Заявление, написанное по установленному образцу или на бланке организации;
- Копию свидетельства о регистрации в ЕГРП права собственности на земельный участок;
- Кадастровые документы: присвоенный номер и паспорт.
Важно! Для снятия с учета в кадастровом реестре земельного участка, на него не должно быть наложено каких-либо ограничений или зарегистрированных дополнительных прав собственности.
Лично собственник или лицо, действующее от его имени по нотариальной доверенности, обращается в кадастровую палату, прилагая необходимые документы. В заявлении указывается основание снятия с учета участка земли, а также количество необходимых копий решения.
Пакет документов может быть направлен по почте с вложенной описью и с обязательным уведомлением о вручении, где фиксируется дата и время получения документов адресатом.
Когда появляется возможность приостановления или отказа в снятии земельного участка с учета
По обращению в кадастровую палату принимается одно из трех решений:
- установить для земельного участка статус «снят с учета»,
- о приостановлении процедуры,
- об отказе в удовлетворении требований заявителя.
Важно! В соответствии с п. 1 ст. 17 указанного закона срок рассмотрения кадастровой палатой поданных документов десять рабочих дней с момента официальной регистрации заявления.
По заявлению о снятия с учета в ГКН земельного участка будет вынесено кадастровым органом постановление о приостановлении снятия с учета участка земли, если:
- К заявлению не прилагаются документы, наличие которых обязательно в соответствии с нормативными актами, регламентирующими кадастровый учет.
- Обнаружено несоответствие информации об участке земли в кадастровой палате и в документах заявителя, а также есть разногласия о его границах, площади и т.д.
О приостановлении выносится соответствующее решение, в котором указываются причины приостановления, рекомендации к их устранению, перечень документов, которых не хватает, ошибки в заявлении и т.д.
Решение о приостановлении выносится на срок до трех месяцев. В этот период гражданин может устранить имеющиеся недостатки и вновь обратиться с заявлением определить земельному участку статус «снят с учета» и в течении десяти дней получить положительный ответ.
На основании ст. 27 в удовлетворении обращения будет отказано, если:
- Объект недвижимости, указанный в заявлении, не полежит кадастровому учету в соответствии с указанным законом.
- Основания приостановления рассмотрения заявления не устранены и срок приостановления исчерпан.
- Заявление составлено ненадлежащим лицом, либо документы не соответствуют требованиям законодательства.
- Преобразование данного объекта не допускается.
- Истекли сроки действия документов, либо они заверены неправомочными лицами.
В решении об отказе в снятии участка земли с кадастрового учета перечисляются все выявленные при рассмотрении заявления и пакета документов нарушения, а также указываются возможности их доработки.
Дорогие читатели! Если у вас остались вопросы по теме «Статус земельного участка снят с учета» или возникли другие вопросы, задайте их прямо сейчас — обращайтесь в форму онлайн-консультанта или позвоните нам по телефону 8(800)-350-30-02 (звонок и консультация бесплатны для всех регионов России)!
Часто задаваемые вопросы об управлении устройствами в Azure Active Directory
Общие вопросы и ответы
Зарегистрировал устройство недавно. Почему я не вижу устройство под информацией о моем пользователе на портале Azure? Или почему владелец устройства помечен как N / A для гибридных устройств, присоединенных к Azure Active Directory (Azure AD)?
Устройства Windows 10, которые присоединены к гибридной Azure AD, не отображаются под USER-устройствами . Используйте представление Все устройства на портале Azure. Вы также можете использовать командлет PowerShell Get-MsolDevice.
В списке ПОЛЬЗОВАТЕЛЬСКИЕ устройства :
перечислены только следующие устройства.- Присоединены все личные устройства, не являющиеся гибридными Azure AD.
- Все устройства, отличные от Windows 10 или Windows Server 2016.
- Все устройства, отличные от Windows.
Как узнать состояние регистрации устройства клиента?
На портале Azure перейдите к Все устройства . Найдите устройство по идентификатору устройства. Проверьте значение в столбце типа соединения.Иногда устройство может быть сброшено или повторно отображено. Поэтому важно также проверить состояние регистрации устройства на устройстве:
- Для устройств с Windows 10 и Windows Server 2016 или более поздних версий запустите
dsregcmd.exe / status
. - Для версий ОС нижнего уровня запустите
% programFiles% \ Microsoft Workplace Join \ autoworkplace.exe
.
Информацию об устранении неполадок см. В следующих статьях:
Я вижу запись устройства под информацией ПОЛЬЗОВАТЕЛЯ на портале Azure.И я вижу, что состояние зарегистрировано на устройстве. Правильно ли я настроен для использования условного доступа?
Состояние присоединения устройства, обозначенное deviceID , должно соответствовать состоянию в Azure AD и соответствовать всем критериям оценки для условного доступа. Дополнительные сведения см. В разделе Требовать управляемые устройства для доступа к облачному приложению с условным доступом.
Почему мои пользователи видят сообщение об ошибке «Ваша организация удалила устройство» или «Ваша организация отключила устройство» на своих устройствах с Windows 10?
На устройствах с Windows 10, подключенных или зарегистрированных в Azure AD, пользователям выдается первичный токен обновления (PRT), который обеспечивает единый вход.Срок действия PRT зависит от действительности самого устройства. Пользователи видят это сообщение, если устройство было удалено или отключено в Azure AD без инициирования действия с самого устройства. Устройство можно удалить или отключить в Azure AD одним из следующих сценариев:
- Пользователь отключает устройство на портале «Мои приложения».
- Администратор (или пользователь) удаляет или отключает устройство на портале Azure или с помощью PowerShell
- Hybrid Azure AD только присоединился: администратор удаляет OU устройств из области синхронизации, в результате чего устройства удаляются из Azure AD
- Обновление Azure AD подключиться к версии 1.4.xx.x. Общие сведения об Azure AD Connect 1.4.xx.x и исчезновении устройства.
См. Ниже, как можно исправить эти действия.
Я отключил или удалил свое устройство на портале Azure или с помощью Windows PowerShell. Но местное состояние устройства говорит, что оно все еще зарегистрировано. Что я должен делать?
Данная операция является преднамеренной. В этом случае у устройства нет доступа к ресурсам в облаке. Администраторы могут выполнить это действие для устаревших, утерянных или украденных устройств, чтобы предотвратить несанкционированный доступ.Если это действие было выполнено непреднамеренно, вам необходимо повторно включить или повторно зарегистрировать устройство, как описано ниже
Если устройство было отключено в Azure AD, администратор с достаточными правами может включить его на портале Azure AD
Примечание
Если вы синхронизируете устройства с помощью Azure AD Connect, гибридные присоединенные к Azure AD устройства будут автоматически повторно включены во время следующего цикла синхронизации. Итак, если вам нужно отключить гибридное устройство, присоединенное к Azure AD, вам необходимо отключить его в локальном AD
.Если устройство удалено в Azure AD, вам необходимо повторно зарегистрировать устройство.Чтобы перерегистрироваться, вы должны вручную принять меры на устройстве. См. Ниже инструкции по перерегистрации в зависимости от состояния устройства.
Чтобы перерегистрировать гибридные устройства Azure AD, подключенные к Windows 10 и Windows Server 2016/2019, выполните следующие действия:
- Откройте командную строку от имени администратора.
- Введите
dsregcmd.exe / debug / leave
. - Выйдите и войдите в систему, чтобы запустить запланированную задачу, которая снова регистрирует устройство в Azure AD.
Для версий ОС Windows нижнего уровня, к которым присоединен гибридный Azure AD, выполните следующие действия:
- Откройте командную строку от имени администратора.
- Введите
"% programFiles% \ Microsoft Workplace Join \ autoworkplace.exe / l"
. - Введите
"% programFiles% \ Microsoft Workplace Join \ autoworkplace.exe / j"
.
Для устройств, присоединенных к Azure AD Устройства Windows 10, выполните следующие действия:
- Откройте командную строку от имени администратора
- Введите
dsregcmd / forcerecovery
(для выполнения этого действия необходимо быть администратором). - Нажмите «Войти» в открывшемся диалоговом окне и продолжите процесс входа.
- Выйдите из системы и снова войдите в систему, чтобы завершить восстановление.
Для устройств с Windows 10, зарегистрированных в Azure AD, выполните следующие действия:
- Перейдите в Настройки > Учетные записи > Доступ к работе или школе .
- Выберите учетную запись и выберите Отключить .
- Нажмите «+ Connect» и снова зарегистрируйте устройство, выполнив вход в систему.
Почему я вижу повторяющиеся записи об устройствах на портале Azure?
- Для Windows 10 и Windows Server 2016 повторяющиеся попытки отсоединения и повторного присоединения одного и того же устройства могут вызывать повторяющиеся записи.
- Каждый пользователь Windows, использующий Добавить рабочую или Учебную учетную запись , создает новую запись устройства с тем же именем устройства.
- Для версий ОС Windows нижнего уровня, которые присоединены к локальному домену Azure Directory, автоматическая регистрация создает новую запись устройства с тем же именем устройства для каждого пользователя домена, который входит на устройство.
- Присоединенный к Azure AD компьютер, который был очищен, переустановлен и повторно присоединен с тем же именем, отображается как другая запись с тем же именем устройства.
Поддерживает ли регистрация устройства Windows 10 в Azure AD доверенные платформенные модули в режиме FIPS?
Регистрация устройства Windows 10 поддерживается только для FIPS-совместимого TPM 2.0 и не поддерживается для TPM 1.2. Если на ваших устройствах есть совместимый с FIPS TPM 1.2, необходимо отключить их, прежде чем продолжить присоединение к Azure AD или гибридное присоединение к Azure AD.Microsoft не предоставляет никаких инструментов для отключения режима FIPS для доверенных платформенных модулей, поскольку это зависит от производителя доверенного платформенного модуля. Обратитесь к производителю оборудования для получения поддержки.
Почему пользователь по-прежнему может получать доступ к ресурсам с устройства, которое я отключил на портале Azure?
Отмена вступает в силу в течение часа с момента, когда устройство Azure AD помечается как отключенное.
Примечание
Для зарегистрированных устройств рекомендуется стереть данные с устройства, чтобы пользователи не могли получить доступ к ресурсам.Дополнительные сведения см. В разделе «Что такое регистрация устройства?».
Я не могу добавить более 3 учетных записей пользователей Azure AD в один сеанс пользователя на устройстве Windows 10, почему?
В Azure AD добавлена поддержка нескольких учетных записей Azure AD в выпуске Windows 10 1803. Однако Windows 10 ограничивает количество учетных записей Azure AD на устройстве до 3, чтобы ограничить размер запросов токенов и включить надежный единый вход (SSO). После добавления 3 учетных записей пользователи будут видеть ошибку для последующих учетных записей.В дополнительной информации о проблеме на экране ошибки отображается следующее сообщение с указанием причины — «Операция добавления учетной записи заблокирована, поскольку достигнут предел учетной записи».
Часто задаваемые вопросы о присоединении к Azure AD
Как отключить присоединенное к Azure AD устройство локально на устройстве?
Для устройств, подключенных только к Azure AD, убедитесь, что у вас есть автономная учетная запись локального администратора, или создайте ее. Вы не можете войти в систему с учетными данными пользователя Azure AD. Затем перейдите в Settings > Accounts > Access Work or School .Выберите свою учетную запись и выберите Отключить . Следуйте инструкциям и при появлении запроса укажите учетные данные локального администратора. Перезагрузите устройство, чтобы завершить процесс отключения.
Могут ли мои пользователи входить в устройства, присоединенные к Azure AD, которые удалены или отключены в Azure AD?
Да. Windows имеет возможность кэширования имени пользователя и пароля, что позволяет пользователям, которые ранее вошли в систему, быстро получить доступ к рабочему столу даже без подключения к сети.
Когда устройство удаляется или отключается в Azure AD, оно не известно устройству Windows.Таким образом, пользователи, которые вошли в систему ранее, продолжают получать доступ к рабочему столу с сохраненными в кеше именем пользователя и паролем. Но поскольку устройство удалено или отключено, пользователи не могут получить доступ к каким-либо ресурсам, защищенным условным доступом на основе устройства.
Пользователи, которые ранее не входили в систему, не могут получить доступ к устройству. Для них не включены кешированные имя пользователя и пароль.
Может ли отключенный или удаленный пользователь войти на подключенное к Azure AD устройство?
Да, но только на ограниченное время. Когда пользователь удаляется или отключается в Azure AD, устройство Windows не сразу узнает об этом.Таким образом, пользователи, которые ранее вошли в систему, могут получить доступ к рабочему столу с сохраненными в кеше именем пользователя и паролем.
Обычно устройство узнает о состоянии пользователя менее чем за четыре часа. Затем Windows блокирует доступ этих пользователей к рабочему столу. Когда пользователь удаляется или отключается в Azure AD, все его токены отзываются. Таким образом, они не могут получить доступ к каким-либо ресурсам.
Удаленные или отключенные пользователи, которые ранее не выполняли вход, не могут получить доступ к устройству. Для них не включены кешированные имя пользователя и пароль.
Почему у моих пользователей возникают проблемы с подключенными к Azure AD устройствами после изменения их UPN?
В настоящее время изменения UPN не полностью поддерживаются на устройствах, присоединенных к Azure AD. Таким образом, их аутентификация с помощью Azure AD не выполняется после изменения их UPN. В результате на устройствах пользователей возникают проблемы с системой единого входа и условным доступом. В настоящее время пользователям необходимо войти в Windows через плитку «Другой пользователь», используя свое новое имя участника-пользователя, чтобы решить эту проблему. В настоящее время мы работаем над решением этой проблемы.Однако пользователи, входящие в систему с помощью Windows Hello для бизнеса, не сталкиваются с этой проблемой.
ИзмененияUPN поддерживаются обновлением Windows 10 2004. У пользователей устройств с этим обновлением не будет проблем после изменения их UPN
.Мои пользователи не могут искать принтеры на устройствах, присоединенных к Azure AD. Как я могу включить печать с этих устройств?
Информацию о развертывании принтеров для устройств, присоединенных к Azure AD, см. В разделе Развертывание гибридного облачного принтера Windows Server с предварительной аутентификацией. Для развертывания гибридной облачной печати вам потребуется локальный Windows Server.В настоящее время облачная служба печати недоступна.
Как подключиться к удаленному устройству, присоединенному к Azure AD?
См. Подключение к удаленному компьютеру, подключенному к Azure Active Directory.
Почему мои пользователи видят «Отсюда нельзя добраться»?
Настроили ли вы определенные правила условного доступа так, чтобы они требовали определенного состояния устройства? Если устройство не соответствует критериям, пользователи блокируются и видят это сообщение. Оцените правила политики условного доступа.Убедитесь, что устройство соответствует критериям, чтобы не выводить сообщение.
Почему я получаю сообщение «неверное имя пользователя или пароль» для устройства, которое я только что подключил к Azure AD?
Общие причины этого сценария следующие:
- Ваши учетные данные больше не действительны.
- Ваш компьютер не может взаимодействовать с Azure Active Directory. Проверьте наличие проблем с сетевым подключением.
- Для федеративного входа требуется, чтобы ваш сервер федерации поддерживал включенные и доступные конечные точки WS-Trust.
- Вы включили сквозную аутентификацию. Поэтому при входе в систему необходимо изменить временный пароль.
Как пользователи могут изменить свой временный пароль или пароль с истекшим сроком действия на устройствах, присоединенных к Azure AD?
В настоящее время устройства, присоединенные к Azure AD, не заставляют пользователей менять пароль на экране блокировки. Таким образом, пользователи с временными паролями или паролями с истекшим сроком действия будут вынуждены менять пароли только при доступе к приложению (для которого требуется токен Azure AD) после входа в Windows.
Почему я вижу «Упс… произошла ошибка!» диалоговое окно, когда я пытаюсь присоединить Azure AD к моему компьютеру?
Эта ошибка возникает при настройке автоматической регистрации в Azure Active Directory с помощью Intune без назначения соответствующей лицензии. Убедитесь, что пользователю, который пытается присоединиться к Azure AD, назначена правильная лицензия Intune. Дополнительные сведения см. В разделе Настройка регистрации для устройств Windows.
Почему моя попытка присоединения к Azure AD на компьютере не удалась, хотя я не получил никакой информации об ошибке?
Вероятная причина в том, что вы вошли на устройство с помощью локальной встроенной учетной записи администратора.Прежде чем использовать присоединение к Azure Active Directory для завершения настройки, создайте другую локальную учетную запись.
Какие сертификаты MS-Organization-P2P-Access присутствуют на наших устройствах с Windows 10?
Сертификаты MS-Organization-P2P-Access выдаются Azure AD как подключенным к Azure AD, так и гибридным устройствам, подключенным к Azure AD. Эти сертификаты используются для обеспечения доверия между устройствами в одном клиенте для сценариев удаленного рабочего стола. Один сертификат выдается устройству, а другой — пользователю.Сертификат устройства находится в папке Local Computer \ Personal \ Certificates
и действителен в течение одного дня. Этот сертификат обновляется (путем выдачи нового сертификата), если устройство все еще активно в Azure AD. Сертификат пользователя находится в Current User \ Personal \ Certificates
, и этот сертификат также действителен в течение одного дня, но выдается по запросу, когда пользователь пытается выполнить сеанс удаленного рабочего стола с другим устройством, присоединенным к Azure AD. По истечении срока его действия не продлеваются. Оба эти сертификата выдаются с использованием сертификата MS-Organization-P2P-Access, присутствующего в Local Computer \ AAD Token Issuer \ Certificates
.Этот сертификат выдается Azure AD во время регистрации устройства.
Почему я вижу несколько сертификатов с истекшим сроком действия, выданных MS-Organization-P2P-Access на наших устройствах с Windows 10? Как их удалить?
В Windows 10 версии 1709 и ниже обнаружена проблема, при которой просроченные сертификаты MS-Organization-P2P-Access продолжали существовать в хранилище компьютера из-за криптографических проблем. Ваши пользователи могут столкнуться с проблемами подключения к сети, если вы используете какие-либо клиенты VPN (например, Cisco AnyConnect), которые не могут обрабатывать большое количество сертификатов с истекшим сроком действия.Эта проблема была исправлена в выпуске Windows 10 1803 для автоматического удаления любых таких просроченных сертификатов MS-Organization-P2P-Access. Вы можете решить эту проблему, обновив свои устройства до Windows 10 1803. Если вы не можете выполнить обновление, вы можете удалить эти сертификаты без каких-либо негативных последствий.
Часто задаваемые вопросы о присоединении к гибридному Azure ADКак отключить присоединенное к гибридному Azure AD устройство локально на устройстве?
Для гибридных устройств, присоединенных к Azure AD, обязательно отключите автоматическую регистрацию в AD с помощью статьи «Контролируемая проверка».Тогда запланированная задача больше не зарегистрирует устройство. Затем откройте командную строку от имени администратора и введите dsregcmd.exe / debug / leave
. Или запустите эту команду как сценарий на нескольких устройствах для массового отключения.
Где я могу найти информацию об устранении неполадок для диагностики сбоев гибридного присоединения к Azure AD?
Информацию об устранении неполадок см. В следующих статьях:
Почему я вижу дублирующуюся зарегистрированную запись Azure AD для моего гибридного устройства с Windows 10, присоединенного к Azure AD, в списке устройств Azure AD?
Когда ваши пользователи добавляют свои учетные записи в приложения на устройстве, присоединенном к домену, им может быть предложено ввести Добавить учетную запись в Windows? Если они вводят в командной строке Да , устройство регистрируется в Azure AD.Тип доверия помечен как зарегистрированный в Azure AD. После включения гибридного присоединения к Azure AD в своей организации устройство также присоединяется к гибридному Azure AD. Затем для одного и того же устройства отображаются два состояния устройства.
В большинстве случаев гибридное присоединение к Azure AD имеет приоритет над зарегистрированным состоянием Azure AD, в результате чего ваше устройство считается гибридным присоединенным к Azure AD для любой проверки подлинности и оценки условного доступа. Однако иногда это двойное состояние может привести к недетерминированной оценке устройства и вызвать проблемы с доступом.Мы настоятельно рекомендуем выполнить обновление до Windows 10 версии 1803 и выше, где мы автоматически очищаем зарегистрированное состояние Azure AD. Узнайте, как избежать или очистить это двойное состояние на компьютере с Windows 10.
Почему у моих пользователей возникают проблемы на устройствах с гибридным подключением к Azure AD с Windows 10 после изменения их UPN?
В настоящее время изменения UPN не полностью поддерживаются гибридными устройствами, присоединенными к Azure AD. Хотя пользователи могут входить на устройство и получать доступ к своим локальным приложениям, проверка подлинности с помощью Azure AD завершается ошибкой после изменения имени участника-пользователя.В результате на устройствах пользователей возникают проблемы с системой единого входа и условным доступом. На этом этапе вам необходимо отключить устройство от Azure AD (запустить «dsregcmd / leave» с повышенными привилегиями) и снова присоединиться (происходит автоматически), чтобы решить проблему. В настоящее время мы работаем над решением этой проблемы. Однако пользователи, входящие в систему с помощью Windows Hello для бизнеса, не сталкиваются с этой проблемой.
ИзмененияUPN поддерживаются обновлением Windows 10 2004. У пользователей устройств с этим обновлением не будет проблем после изменения их UPN
.Требуется ли для гибридных устройств Windows 10, подключенных к Azure AD, прямая видимость контроллера домена для доступа к облачным ресурсам?
Нет, кроме случаев, когда пароль пользователя изменен.После того, как гибридное присоединение к Azure AD Windows 10 завершено и пользователь хотя бы один раз вошел в систему, устройству не требуется прямой видимости с контроллером домена для доступа к облачным ресурсам. Windows 10 может получить единый вход в приложения Azure AD из любого места, где есть подключение к Интернету, за исключением случаев смены пароля. Пользователи, которые входят в систему с помощью Windows Hello для бизнеса, продолжают получать единый вход в приложения Azure AD даже после смены пароля, даже если они не видны своему контроллеру домена.
Что произойдет, если пользователь изменит свой пароль и попытается войти на свое гибридное подключенное к Azure AD устройство с Windows 10 за пределами корпоративной сети?
Если пароль изменен за пределами корпоративной сети (например, с помощью Azure AD SSPR), то пользователь войдет в систему с новым паролем не удастся. Для гибридных устройств, присоединенных к Azure AD, локальная Active Directory является основным центром управления. Когда устройство не находится в прямой видимости от контроллера домена, оно не может проверить новый пароль.Таким образом, пользователю необходимо установить соединение с контроллером домена (либо через VPN, либо находясь в корпоративной сети), прежде чем он сможет войти на устройство со своим новым паролем. В противном случае они могут войти в систему только со своим старым паролем из-за возможности кэширования входа в Windows. Однако старый пароль становится недействительным в Azure AD во время запросов токенов и, следовательно, предотвращает единый вход и не дает никаких политик условного доступа на основе устройств. Эта проблема не возникает, если вы используете Windows Hello для бизнеса.
Часто задаваемые вопросы о реестре Azure AD
Как удалить зарегистрированное состояние Azure AD для устройства локально?
- Для устройств, зарегистрированных в Windows 10 Azure AD, перейдите в раздел Настройки > Учетные записи > Access Work или School . Выберите свою учетную запись и выберите Отключить . Регистрация устройства осуществляется в соответствии с профилем пользователя в Windows 10.
- Для iOS и Android вы можете использовать приложение Microsoft Authenticator Настройки > Регистрация устройства и выбрать Отменить регистрацию устройства .
- Для macOS вы можете использовать приложение корпоративного портала Microsoft Intune, чтобы отменить регистрацию устройства и удалить любую регистрацию.
Для устройств с Windows 10 этот процесс можно автоматизировать с помощью инструмента удаления Workplace Join (WPJ)
Примечание
Этот инструмент удаляет все учетные записи SSO на устройстве. После этой операции все приложения потеряют состояние единого входа, и устройство будет отменено для регистрации в инструментах управления (MDM) и будет отменена регистрация в облаке.В следующий раз, когда приложение попытается войти в систему, пользователям будет предложено снова добавить учетную запись.
Как я могу запретить пользователям добавлять дополнительные рабочие учетные записи (зарегистрированные в Azure AD) на мои корпоративные устройства с Windows 10?
Включите следующий реестр, чтобы запретить пользователям добавлять дополнительные рабочие учетные записи в ваш корпоративный домен, присоединенный, присоединенный к Azure AD или гибридный присоединенный к Azure AD устройства Windows 10. Эту политику также можно использовать для блокировки компьютеров, присоединенных к домену, от случайной регистрации Azure AD с той же учетной записью пользователя.
HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ WorkplaceJoin, "BlockAADWorkplaceJoin" = dword: 00000001
Могу ли я зарегистрировать устройства BYOD на базе Android или iOS?
Да, но только со службой регистрации устройств Azure и для гибридных клиентов. Он не поддерживается локальной службой регистрации устройств в службах федерации Active Directory (AD FS).
Как я могу зарегистрировать устройство MacOS?
Выполните следующие действия:
- Создать политику соответствия
- Определите политику условного доступа для устройств MacOS
Примечания:
- Пользователям, включенным в вашу политику условного доступа, требуется поддерживаемая версия Office для macOS для доступа к ресурсам.
- Во время первой попытки доступа вашим пользователям будет предложено зарегистрировать устройство с помощью корпоративного портала.
Использование финализаторов для управления удалением
Авторы: Аарон Альпар (Кастен)
Удаление объектов в Kubernetes может быть сложной задачей. Вы можете подумать, что что-то удалили, но обнаружите, что это все еще существует. Выполняя команду kubectl delete
и надеясь на лучшее, она может сработать для повседневных операций, понимание того, как работают команды Kubernetes delete
, поможет вам понять, почему некоторые объекты остаются после удаления.
В этом посте я посмотрю на:
- Какие свойства ресурса управляют удалением
- Как финализаторы и ссылки владельцев влияют на удаление объекта
- Как можно использовать политику распространения для изменения порядка удалений
- Как работает удаление, с примерами
Для простоты во всех примерах будут использоваться ConfigMaps и базовые команды оболочки для демонстрации процесса. Мы исследуем, как работают команды, и обсудим последствия и результаты их использования на практике.
Базовый
удалить
В Kubernetes есть несколько различных команд, которые вы можете использовать, чтобы создавать, читать, обновлять и удалять объекты. В этой статье мы сосредоточимся на четырех командах kubectl
: создать
, получить
, исправить
и удалить
.
Вот примеры базовой команды kubectl delete
:
kubectl создать конфигурационную карту mymap
configmap / mymap создан
kubectl получить configmap / mymap
ИМЯ ДАННЫЕ ВОЗРАСТ
mymap 0 12 с
kubectl удалить configmap / mymap
configmap "mymap" удален
kubectl получить configmap / mymap
Ошибка сервера (NotFound): configmaps "mymap" не найден
Команды оболочки, которым предшествует $
, сопровождаются их выводом.Вы можете видеть, что мы начинаем с kubectl create configmap mymap
, который создаст пустую configmap mymap
. Затем нам нужно получить карту конфигурации
, чтобы доказать, что она существует. Затем мы можем удалить эту конфигурационную карту. Попытка получить
снова выдает ошибку HTTP 404, что означает, что конфигурационная карта не найдена.
Диаграмма состояний для базовой команды delete
очень проста:
Диаграмма состояний для удаления
Хотя эта операция проста, удалению могут помешать другие факторы, в том числе финализаторы и ссылки на владельцев.
Общие сведения о финализаторах
Когда дело доходит до понимания удаления ресурсов в Kubernetes, полезно знать, как работают финализаторы, и они могут помочь вам понять, почему некоторые объекты не удаляются.
Финализаторы — это ключи к ресурсам, которые сигнализируют об операциях перед удалением. Они управляют сборкой мусора для ресурсов и предназначены для оповещения контроллеров о том, какие операции очистки следует выполнить перед удалением ресурса. Однако они не обязательно указывают код, который следует выполнить; финализаторы ресурсов — это в основном просто списки ключей, очень похожие на аннотации.Как и аннотации, ими можно управлять.
Вот несколько распространенных финализаторов, с которыми вы, вероятно, столкнулись:
-
kubernetes.io/pv-protection
-
kubernetes.io/pvc-protection
Вышеупомянутые финализаторы используются на томах для предотвращения случайного удаления. Точно так же некоторые финализаторы могут использоваться для предотвращения удаления любого ресурса, но не управляются каким-либо контроллером.
Ниже с пользовательской конфигурационной картой, которая не имеет свойств, но содержит финализатор:
кот << EOF | kubectl create -f -
apiVersion: v1
вид: ConfigMap
метаданные:
имя: mymap
финализаторы:
- кубернетес
EOF
Контроллер ресурсов configmap не понимает, что делать с ключом финализатора kubernetes
.Я называю эти «мертвые» финализаторы для конфигурационных карт, поскольку они обычно используются в пространствах имен. Вот что происходит при попытке удалить configmap:
kubectl удалить configmap / mymap &
configmap "mymap" удален
рабочие места
[1] + Запуск kubectl delete configmap / mymap
Kubernetes сообщит, что объект был удален, однако он не был удален в традиционном смысле. Скорее, он находится в процессе удаления. Когда мы снова пытаемся получить
этот объект, мы обнаруживаем, что объект был изменен, чтобы включить метку времени удаления.
kubectl получить configmap / mymap -o yaml
apiVersion: v1
вид: ConfigMap
метаданные:
creationTimestamp: "2020-10-22T21: 30: 18Z"
deletionGracePeriodSeconds: 0
DeletionTimestamp: "2020-10-22T21: 30: 34Z"
финализаторы:
- кубернетес
имя: mymap
пространство имен: по умолчанию
resourceVersion: "311456"
selfLink: / api / v1 / пространства имен / по умолчанию / configmaps / mymap
uid: 93a37fed-23e3-45e8-b6ee-b2521db81638
Короче говоря, произошло то, что объект был обновлен, а не удален.Это потому, что Kubernetes увидел, что объект содержит финализаторы, и перевел его в состояние только для чтения. Отметка времени удаления сигнализирует, что объект может быть только прочитан, за исключением удаления обновлений ключа финализатора. Другими словами, удаление не будет завершено, пока мы не отредактируем объект и не удалим финализатор.
Вот демонстрация использования команды patch
для удаления финализаторов. Если мы хотим удалить объект, мы можем просто исправить его в командной строке, чтобы удалить финализаторы.Таким образом, удаление, которое выполнялось в фоновом режиме, будет завершено, и объект будет удален. Когда мы попытаемся получить
эту конфигурационную карту, она исчезнет.
kubectl patch configmap / mymap \
--type json \
--patch = '[{"op": "remove", "path": "/ metadata / finalizers"}]'
configmap / mymap исправлен
[1] + Готово kubectl delete configmap / mymap
kubectl получить configmap / mymap -o yaml
Ошибка сервера (NotFound): configmaps "mymap" не найден
Вот диаграмма состояний для завершения:
Диаграмма состояния на доработку
Итак, если вы попытаетесь удалить объект, на котором есть финализатор, он останется в процессе завершения до тех пор, пока контроллер не удалит ключи финализатора или финализаторы не будут удалены с помощью Kubectl.Как только этот список финализаторов станет пустым, Kubernetes может вернуть объект и поместить его в очередь для удаления из реестра.
Отзывы владельцев
Ссылки владельцев описывают, как связаны группы объектов. Это свойства ресурсов, которые определяют отношения друг к другу, поэтому можно удалять целые деревья ресурсов.
Правила финализатора обрабатываются, если есть ссылки на владельцев. Ссылка на владельца состоит из имени и UID. Ссылки владельца связывают ресурсы в одном и том же пространстве имен, и ему также нужен UID, чтобы эта ссылка работала.Поды обычно имеют ссылки владельца на набор реплик-владельцев. Таким образом, при удалении развертываний или наборов с отслеживанием состояния дочерние наборы реплик и поды удаляются в процессе.
Вот несколько примеров рекомендаций владельцев и того, как они работают. В первом примере мы сначала создаем родительский объект, а затем дочерний. Результатом является очень простая карта конфигурации, которая содержит ссылку владельца на своего родителя:
кот << EOF | kubectl create -f -
apiVersion: v1
вид: ConfigMap
метаданные:
имя: mymap-parent
EOF
CM_UID = $ (kubectl get configmap mymap-parent -o jsonpath = "{.metadata.uid} ")
кошка << EOF | kubectl create -f -
apiVersion: v1
вид: ConfigMap
метаданные:
имя: mymap-child
Владелец
- apiVersion: v1
вид: ConfigMap
имя: mymap-parent
uid: $ CM_UID
EOF
Удаление дочернего объекта, когда задействована ссылка на владельца, не удаляет родительский объект:
kubectl получить карту конфигурации
ИМЯ ДАННЫЕ ВОЗРАСТ
mymap-child 0 12 м4 с
mymap-parent 0 12 м4 с
kubectl удалить configmap / mymap-child
configmap "mymap-child" удален
kubectl получить карту конфигурации
ИМЯ ДАННЫЕ ВОЗРАСТ
mymap-parent 0 12 мин. 10 сек.
В этом примере мы воссоздали конфигурационные карты родитель-потомок сверху.Теперь при удалении из родительского элемента (вместо дочернего) со ссылкой владельца от дочернего элемента к родительскому, когда мы получаем
configmaps, ни один из них не находится в пространстве имен:
kubectl получить карту конфигурации
ИМЯ ДАННЫЕ ВОЗРАСТ
mymap-child 0 10 м2
mymap-parent 0 10 м2
kubectl удалить configmap / mymap-parent
configmap "mymap-parent" удален
kubectl получить карту конфигурации
В пространстве имен по умолчанию не найдено ресурсов.
Подводя итог, можно сказать, что при переопределении ссылки владельца от дочернего элемента к родительскому, удаление родительского элемента автоматически удаляет дочерние элементы.Это называется каскадом
. По умолчанию для каскада используется значение true
, однако вы можете использовать параметр --cascade = orphan для kubectl delete
, чтобы удалить объект и осиротить его дочерние элементы.
В следующем примере есть родитель и потомок. Обратите внимание, что ссылки на владельцев все еще включены. Если я удалю родителя с помощью --cascade = orphan, родитель будет удален, но потомок все еще существует:
kubectl получить карту конфигурации
ИМЯ ДАННЫЕ ВОЗРАСТ
mymap-child 0 13 мес.
mymap-parent 0 13 мес. 8 сек.
kubectl delete --cascade = orphan configmap / mymap-parent
configmap "mymap-parent" удален
kubectl получить карту конфигурации
ИМЯ ДАННЫЕ ВОЗРАСТ
mymap-child 0 13 мин. 21 сек.
Параметр --cascade связан с политикой распространения в API, которая позволяет вам изменять порядок, в котором объекты удаляются в дереве.В следующем примере используется доступ к API для создания пользовательского вызова API удаления с политикой фонового распространения:
прокси kubectl --port = 8080 &
Начало обслуживания на 127.0.0.1:8080
curl -X УДАЛИТЬ \
локальный: 8080 / api / v1 / пространства имен / по умолчанию / configmaps / mymap-parent \
-d '{"kind": "DeleteOptions", "apiVersion": "v1", "ropationPolicy ":" Background "}' \
-H "Content-Type: application / json"
{
"kind": "Статус",
"apiVersion": "v1",
"метаданные": {},
"status": "Успех",
"Детали": { ...}
}
Обратите внимание, что политику распространения нельзя указать в командной строке с помощью kubectl. Вы должны указать это с помощью специального вызова API. Просто создайте прокси, чтобы у вас был доступ к серверу API от клиента, и выполните команду curl
с URL-адресом для выполнения этой команды delete
.
Существует три различных варианта политики распространения:
-
Передний план
: дочерние элементы удаляются раньше родительского (пост-заказ) -
Фон
: Родитель удаляется до дочерних (предварительный заказ) -
Сирота
: ссылки владельцев игнорируются
Имейте в виду, что когда вы удаляете объект и указываются ссылки на владельцев, финализаторы будут учтены в процессе.Это может привести к сохранению деревьев объектов и частичному удалению. На этом этапе вы должны просмотреть все существующие ссылки на владельцев ваших объектов, а также любые финализаторы, чтобы понять, что происходит.
Принудительное удаление пространства имен
Есть одна ситуация, при которой может потребоваться принудительное завершение для пространства имен. Если вы удалили пространство имен и вычистили все находящиеся под ним объекты, но пространство имен все еще существует, удаление может быть выполнено принудительно, обновив подресурс пространства имен, финализирует
.Это сообщает контроллеру пространства имен, что ему необходимо удалить финализатор из пространства имен и выполнить любую очистку:
кот << EOF | curl -X PUT \
локальный: 8080 / api / v1 / пространства имен / тест / финализировать \
-H "Content-Type: application / json" \
--данные-двоичные @ -
{
"kind": "Пространство имен",
"apiVersion": "v1",
"метаданные": {
"имя": "тест"
},
"spec": {
"финализаторы": нуль
}
}
EOF
Это следует делать с осторожностью, так как это может удалить только пространство имен и оставить бесхозные объекты в пространстве имен, которое теперь не закрывается, что сбивает с толку Kubernetes.Если это произойдет, пространство имен может быть воссоздано вручную, и иногда потерянные объекты будут снова появляться в только что созданном пространстве имен, что позволит выполнить очистку и восстановление вручную.
Ключевые выводы
Как показывают эти примеры, финализаторы могут мешать удалению ресурсов в Kubernetes, особенно когда между объектами существуют родительско-дочерние отношения. Часто есть причина для добавления финализатора в код, поэтому вы всегда должны исследовать, прежде чем удалять его вручную.Ссылки на владельцев позволяют указывать и удалять деревья ресурсов, хотя финализаторы будут учтены в процессе. Наконец, политику распространения можно использовать для указания порядка удаления с помощью специального вызова API, что дает вам контроль над тем, как удаляются объекты. Теперь, когда вы знаете немного больше о том, как работают удаления в Kubernetes, мы рекомендуем вам попробовать это самостоятельно, используя тестовый кластер.
Расширьте API Kubernetes с помощью CustomResourceDefinitions
На этой странице показано, как установить настраиваемый ресурс в Kubernetes API, создав CustomResourceDefinition.
Прежде чем начать
У вас должен быть кластер Kubernetes, а инструмент командной строки kubectl должен быть настроенным для связи с вашим кластером. Рекомендуется запускать это руководство в кластере, по крайней мере, с двумя узлами, которые не действуют как хосты уровня управления. Если у вас еще нет кластер, вы можете создать его, используя миникубе или вы можете использовать одну из этих игровых площадок Kubernetes:
Ваш сервер Kubernetes должен быть не ниже версии 1.16. Чтобы проверить версию, введите kubectl version
.Если вы используете старую версию Kubernetes, которая все еще поддерживается, переключитесь на
документацию для этой версии, чтобы увидеть советы, актуальные для вашего кластера.Создание CustomResourceDefinition
При создании нового CustomResourceDefinition (CRD) сервер API Kubernetes
создает новый путь к ресурсам RESTful для каждой указанной вами версии. CRD может быть
либо с пространством имен, либо с областью кластера, как указано в поле области CRD. В качестве
с существующими встроенными объектами, при удалении пространства имен удаляются все настраиваемые объекты
в этом пространстве имен.Сами CustomResourceDefinitions не имеют пространства имен и
доступны для всех пространств имен.
Например, если вы сохраните следующее CustomResourceDefinition в resourcedefinition.yaml
:
apiVersion: apiextensions.k8s.io/v1
вид: CustomResourceDefinition
метаданные:
# имя должно соответствовать полям спецификации ниже и иметь форму: .
имя: crontabs.stable.example.com
спецификация:
# имя группы для использования REST API: / apis / /
группа: стабильная.example.com
# список версий, поддерживаемых этим CustomResourceDefinition
версии:
- название: v1
# Каждая версия может быть включена / отключена с помощью флага Served.
обслужено: верно
# Одна и только одна версия должна быть отмечена как версия хранилища.
хранение: правда
схема:
openAPIV3Schema:
тип: объект
характеристики:
спецификация:
тип: объект
характеристики:
cronSpec:
тип: строка
изображение:
тип: строка
реплики:
тип: целое число
# либо в пространстве имён, либо в кластере
область: пространство имен
имена:
# имя во множественном числе для использования в URL: / apis / <группа> / <версия> / <множество>
множественное число: crontabs
# единственное имя, которое будет использоваться в качестве псевдонима в интерфейсе командной строки и для отображения
единственное число: crontab
# kind обычно является типом единственного числа CamelCased.Ваши манифесты ресурсов используют это.
вид: CronTab
# shortNames позволяет более короткой строке соответствовать вашему ресурсу в CLI
shortNames:
- ct
и создайте его:
kubectl apply -f resourcedefinition.yaml
Затем создается новая конечная точка RESTful API с пространством имен по адресу:
/apis/stable.example.com/v1/namespaces / * / crontabs / ...
Этот URL-адрес конечной точки затем можно использовать для создания настраиваемых объектов и управления ими. вид
этих объектов будет CronTab
из спецификации
CustomResourceDefinition, созданный вами выше.
Создание конечной точки может занять несколько секунд.
Вы можете наблюдать за состоянием Established
вашего CustomResourceDefinition
быть правдой или посмотреть информацию об обнаружении сервера API для вашего
ресурс, чтобы появиться.
Создание пользовательских объектов
После создания объекта CustomResourceDefinition можно создать
нестандартные объекты. Настраиваемые объекты могут содержать настраиваемые поля. Эти поля могут
содержат произвольный JSON.
В следующем примере настраиваемые поля cronSpec
и image
устанавливаются в
пользовательский объект вида CronTab
.Тип CronTab
происходит из спецификации
CustomResourceDefinition, созданный вами выше.
Если вы сохраните следующий YAML в my-crontab.yaml
:
apiVersion: "stable.example.com/v1"
вид: CronTab
метаданные:
имя: мой-новый-cron-объект
спецификация:
cronSpec: "* * * * * / 5"
изображение: my-awesome-cron-image
и создайте его:
kubectl apply -f my-crontab.yaml
Затем вы можете управлять своими объектами CronTab с помощью kubectl.Например:
Должен напечатать список вроде этого:
ИМЯ ВОЗРАСТ
мой-новый-cron-объект 6s
Имена ресурсов не чувствительны к регистру при использовании kubectl, и вы можете использовать либо формы единственного или множественного числа, определенные в CRD, а также любые короткие имена.
Вы также можете просмотреть необработанные данные YAML:
Вы должны увидеть, что он содержит настраиваемые поля cronSpec
и image
из YAML, который вы использовали для его создания:
apiВерсия: v1
Предметы:
- apiVersion: стабильная.example.com/v1
вид: CronTab
метаданные:
аннотации:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion": "stable.example.com/v1","kind":"CronTab","metadata":{"annotations":{},"name":"my-new-cron-object", " namespace ":" default "}," spec ": {" cronSpec ":" * * * * * / 5 "," image ":" my-awesome-cron-image "}}
creationTimestamp: "2021-06-20T07: 35: 27Z"
поколение: 1
имя: мой-новый-cron-объект
пространство имен: по умолчанию
resourceVersion: "1326"
uid: 9aab1d66-628e-41bb-a422-57b8b3b1f5a9
спецификация:
cronSpec: '* * * * * / 5'
изображение: my-awesome-cron-image
вид: Список
метаданные:
resourceVersion: ""
selfLink: ""
Удалить CustomResourceDefinition
Когда вы удаляете CustomResourceDefinition, сервер удаляет конечную точку RESTful API. и удалите все хранящиеся в нем пользовательские объекты.
kubectl delete -f resourcedefinition.yaml
kubectl получить crontabs
Ошибка сервера (NotFound): невозможно перечислить {"stable.example.com" "v1" "crontabs"}: серверу не удалось найти запрошенный ресурс (получите crontabs.stable.example.com)
Если вы позже воссоздадите то же CustomResourceDefinition, оно будет пустым.
Определение структурной схемы
CustomResources хранит структурированные данные в настраиваемых полях (наряду со встроенными
поля apiVersion
, kind
и метаданные
, которые API-сервер проверяет
неявно).С проверкой OpenAPI v3.0 схема может быть
указано, которое проверяется во время создания и обновления, сравните ниже для
детали и ограничения такой схемы.
Для apiextensions.k8s.io/v1
определение структурной схемы
обязательно для CustomResourceDefinitions. В бета-версии
CustomResourceDefinition, структурная схема была необязательной.
Структурная схема - это схема проверки OpenAPI v3.0, которая:
- указывает непустой тип (через
тип
в OpenAPI) для корня, для каждого указанного поля узла объекта (через свойстваadditionalProperties
в OpenAPI) и для каждого элемента в узле массива (черезэлементов (
в OpenAPI)), за исключением:- узел с
x-kubernetes-int-or-string: true
- узел с
x-kubernetes-preserve-unknown-fields: true
- узел с
- для каждого поля в объекте и каждого элемента в массиве, который указан в любом из
allOf
,anyOf
,oneOf
илиnot
, схема также определяет поле / элемент вне этих логических узлов (сравните пример 1 и 2). - не устанавливает описание
тип
,по умолчанию
,additionalProperties
,обнуляемый
в пределахallOf
,anyOf
,oneOf
илиnot
, за исключением двух шаблонов дляx-kubernetes-int-or-string: true
(см. ниже). - , если указаны метаданные
metadata.name
иmetadata.generateName
.
Неструктурный пример 1:
всего:
- характеристики:
foo:
...
противоречит правилу 2. Верным будет следующее:
свойства:
foo:
...
все:
- характеристики:
foo:
...
Неструктурный пример 2:
всего:
- Предметы:
характеристики:
foo:
...
противоречит правилу 2. Верным будет следующее:
товаров:
характеристики:
foo:
.а "
финализаторы:
тип: массив
Предметы:
тип: строка
шаблон: "мой-финализатор"
любой из:
- характеристики:
бар:
тип: целое число
минимум: 42
обязательно: ["бар"]
описание: "объект foo bar"
не является структурной схемой из-за следующих нарушений:
- тип в корне отсутствует (правило 1). a"
любой из:
- характеристики:
бар:
минимум: 42
обязательно: ["бар"]
Нарушения правил структурной схемы сообщаются в условии
NonStructural
в CustomResourceDefinition.Обрезка полей
CustomResourceDefinitions хранит проверенные данные ресурсов в постоянном хранилище кластера и т. Д. Как и в случае с собственными ресурсами Kubernetes, такими как ConfigMap, если вы укажете поле, которое сервер API не распознает, неизвестное поле будет сокращено (удалено) перед сохранением.
Примечание:
CRD, преобразованных из
apiextensions.k8s.io/v1beta1
вapiextensions.k8s.io/v1
могут не иметь структурных схем, аspec.preserveUnknownFields
может бытьtrue
.Для устаревших объектов CustomResourceDefinition, созданных как
apiextensions.k8s.io/v1beta1
сspec.preserveUnknownFields
, установленным направда
, верно и следующее:- Обрезка не включена.
- Вы можете хранить произвольные данные.
Для совместимости с
apiextensions.k8s.io/v1
обновите свой собственный определения ресурсов до:- Используйте структурную схему OpenAPI.
- Установить
spec.preserveUnknownFields
наfalse
.
Если вы сохраните следующий YAML в
my-crontab.yaml
:apiVersion: "stable.example.com/v1" вид: CronTab метаданные: имя: мой-новый-cron-объект спецификация: cronSpec: "* * * * * / 5" изображение: my-awesome-cron-image someRandomField: 42
и создайте его:
kubectl create --validate = false -f my-crontab.yaml -o yaml
ваш вывод похож на:
apiВерсия: стабильная.example.com/v1 вид: CronTab метаданные: creationTimestamp: 2017-05-31T12: 56: 35Z поколение: 1 имя: мой-новый-cron-объект пространство имен: по умолчанию resourceVersion: "285" uid:
55b-4600-11e7-af6a-28d2447dc82b спецификация: cronSpec: '* * * * * / 5' изображение: my-awesome-cron-imageОбратите внимание, что поле
someRandomField
было обрезано.В этом примере проверка на стороне клиента отключена, чтобы продемонстрировать поведение сервера API, путем добавления параметра командной строки
--validate = false
.Поскольку схемы проверки OpenAPI также публикуются для клиентовkubectl
также проверяет наличие неизвестных полей и отклоняет эти объекты задолго до того, как они будут отправлены на сервер API.Управление обрезкой
По умолчанию все неуказанные поля для настраиваемого ресурса во всех версиях удаляются. Однако можно отказаться от этого для определенных поддеревьев полей, добавив
x-kubernetes-preserve-unknown-fields: true
в структурную схему проверки OpenAPI v3.Например:тип: объект характеристики: json: x-kubernetes-preserve-unknown-fields: истина
Поле
json
может хранить любое значение JSON без каких-либо сокращений.Также можно частично указать разрешенный JSON; например:
тип: объект характеристики: json: x-kubernetes-preserve-unknown-fields: истина тип: объект описание: это произвольный JSON
При этом разрешены только значения типа
объекта
.Удаление снова включено для каждого указанного свойства (или
дополнительных свойств
):тип: объект характеристики: json: x-kubernetes-preserve-unknown-fields: истина тип: объект характеристики: спецификация: тип: объект характеристики: foo: тип: строка бар: тип: строка
При этом значение:
json: спецификация: foo: abc бар: def что-то: х положение дел: что-то: х
сокращено до:
json: спецификация: foo: abc бар: def положение дел: что-то: х
Это означает, что поле
something
в указанном объектеspec
удаляется, а все внешнее - нет.IntOrString
Узлы в схеме с
x-kubernetes-int-or-string: true
исключены из правила 1, так что следующее является структурным:тип: объект характеристики: foo: x-kubernetes-int-or-string: истина
Также эти узлы частично исключены из правила 3 в том смысле, что разрешены следующие два шаблона (именно те, без изменений в дополнительных полях):
x-kubernetes-int-or-string: истина любой из: - тип: целое число - тип: строка ...
и
x-kubernetes-int-or-string: истина все: - любой из: - тип: целое число - тип: строка - ... # ноль или больше ...
При использовании одной из этих спецификаций проверяются как целое число, так и строка.
В публикации схемы проверки,
x-kubernetes-int-or-string: true
разворачивается в один из двух шаблонов, показанных выше.RawExtension
RawExtensions (как в среде выполнения
. RawExtension
определено в k8s.io / apimachinery) содержит полные объекты Kubernetes, то есть с полямиapiVersion
иkind
.Можно указать эти встроенные объекты (как полностью без ограничений, так и частично), установив
x-kubernetes-embedded-resource: true
. Например:тип: объект характеристики: foo: x-kubernetes-встроенный-ресурс: правда x-kubernetes-preserve-unknown-fields: истина
Здесь поле
foo
содержит полный объект, например.г .:foo: apiVersion: v1 вид: Стручок спецификация: ...
Поскольку рядом указано
x-kubernetes-preserve-unknown-fields: true
, ничего не удаляется. Однако использованиеx-kubernetes-preserve-unknown-fields: true
необязательно.С
x-kubernetes-embedded-resource: true
,apiVersion
,kind
иметаданные
неявно указываются и проверяются.Обслуживание нескольких версий CRD
См. Управление версиями пользовательских определений ресурсов. для получения дополнительной информации об обслуживании нескольких версий вашего CustomResourceDefinition и перенос ваших объектов из одной версии в другую.
Дополнительные темы
Финализаторы
Финализаторы позволяют контроллерам реализовывать асинхронные перехватчики предварительного удаления. Настраиваемые объекты поддерживают финализаторы, аналогичные встроенным объектам.
Вы можете добавить финализатор к настраиваемому объекту следующим образом:
apiVersion: "stable.example.com/v1" вид: CronTab метаданные: финализаторы: - stable.example.com/finalizer
Идентификаторы настраиваемых финализаторов состоят из имени домена, косой черты и имени финализатор.Любой контроллер может добавить финализатор в список финализаторов любого объекта.
Первый запрос на удаление объекта с финализаторами устанавливает значение для
metadata.deletionTimestamp
, но не удаляет его. Как только это значение установлено, записи в спискефинализаторов
можно только удалить. Пока остаются финализаторы, невозможно принудительно удалить объект.Когда установлено поле
metadata.deletionTimestamp
, контроллеры, наблюдающие за объектом, выполняют любые финализаторы, которые они обрабатывают, и удаляют финализатор из списка после завершения.Это ответственность каждого контроллера за удаление своего финализатора из списка.Значение
metadata.deletionGracePeriodSeconds
управляет интервалом между обновлениями опроса.Когда список финализаторов пуст, то есть все финализаторы были выполнены, ресурс удален Kubernetes.
Проверка
Пользовательские ресурсы проверяются через Схемы OpenAPI v3 и вы можете добавить дополнительную проверку, используя прием веб-хуков.
Дополнительно к схеме применяются следующие ограничения:
- Эти поля не могут быть установлены:
-
определения
, -
зависимости
, -
устарело
, -
дискриминатор
, -
id
, -
образецСвойства
, -
Только чтение
, -
Только запись
, -
xml
, -
$ исх.
.
-
- Поле
uniqueItems
не может иметь значениеtrue
. - Поле
additionalProperties
не может быть установлено наfalse
. - Поле
additionalProperties
является взаимоисключающим ссвойствами
.
Поле
по умолчанию
может быть установлено, когда функция По умолчанию включена, как в случае сapiextensions.k8s.io/v1
CustomResourceDefinitions.По умолчанию в GA с 1.17 (бета с 1.16 сCustomResourceDefaulting
ворота функций включен, что происходит автоматически для многих кластеров для бета-функций).Остальные сведения см. В разделе структурных схем. ограничения и функции CustomResourceDefinition.
Схема определена в CustomResourceDefinition. В следующем примере CustomResourceDefinition применяет следующие проверки к настраиваемому объекту:
-
спец.cronSpec
должен быть строкой и иметь форму, описываемую регулярным выражением. -
spec.replicas
должно быть целым числом и иметь минимальное значение 1 и максимальное значение 10.
Сохраните CustomResourceDefinition в
resourcedefinition.yaml
:apiVersion: apiextensions.k8s.io/v1 вид: CustomResourceDefinition метаданные: имя: crontabs.stable.example.com спецификация: группа: stable.example.com версии: - название: v1 обслужено: верно хранение: правда схема: # openAPIV3Schema - это схема для проверки настраиваемых объектов.(\ d + | \ *) (/ \ d +)? (\ s + (\ d + | \ *) (/ \ d +)?) {4} $ ' изображение: тип: строка реплики: тип: целое число минимум: 1 максимум: 10 область: пространство имен имена: множественное число: crontabs единственное число: crontab вид: CronTab shortNames: - ct
и создайте его:
kubectl apply -f resourcedefinition.yaml
Запрос на создание настраиваемого объекта типа CronTab отклоняется, если в его полях есть недопустимые значения.В следующем примере настраиваемый объект содержит поля с недопустимыми значениями:
-
spec.cronSpec
не соответствует регулярному выражению. -
спец. Реплики
больше 10.
Если вы сохраните следующий YAML в
my-crontab.yaml
:apiVersion: "stable.example.com/v1" вид: CronTab метаданные: имя: мой-новый-cron-объект спецификация: cronSpec: "* * * *" изображение: my-awesome-cron-image реплик: 15
и попытайтесь создать его:
kubectl apply -f my-crontab.ямл
, то вы получите сообщение об ошибке:
CronTab "my-new-cron-object" недействителен: []: недопустимое значение: map [string] interface {} {"apiVersion": "stable.example.com/v1", "kind": "CronTab "," метаданные ": карта [строка] interface {} {" name ":" my-new-cron-object "," namespace ":" default "," deletionTimestamp ": interface {} (nil)," deletionGracePeriodSeconds " : (* int64) (nil), "creationTimestamp": "2017-09-05T05: 20: 07Z", "uid": "e14d79e7-91f9-11e7-a598-f0761cb232d1", "clusterName": ""}, " spec ": map [string] interface {} {" cronSpec ":" * * * * "," image ":" my-awesome-cron-image "," replicas ": 15}}: Список ошибок проверки: спец.(\ d + | \ *) (/ \ d +)? (\ s + (\ d + | \ *) (/ \ d +)?) {4} $ ' спец. реплик в теле должно быть меньше или равно 10
Если поля содержат допустимые значения, запрос на создание объекта принимается.
Сохраните следующий YAML в
my-crontab.yaml
:apiVersion: "stable.example.com/v1" вид: CronTab метаданные: имя: мой-новый-cron-объект спецификация: cronSpec: "* * * * * / 5" изображение: my-awesome-cron-image реплик: 5
И создайте его:
kubectl apply -f my-crontab.ямл crontab "my-new-cron-object" создан
По умолчанию
Примечание: Чтобы использовать настройки по умолчанию, ваш CustomResourceDefinition должен использовать версию API
apiextensions.k8s.io/v1
.По умолчанию позволяет указать значения по умолчанию в схеме проверки OpenAPI v3:
apiVersion: apiextensions.k8s.io/v1 вид: CustomResourceDefinition метаданные: имя: crontabs.stable.example.com спецификация: группа: stable.example.com версии: - название: v1 обслужено: верно хранение: правда схема: # openAPIV3Schema - это схема для проверки настраиваемых объектов.(\ d + | \ *) (/ \ d +)? (\ s + (\ d + | \ *) (/ \ d +)?) {4} $ ' по умолчанию: "5 0 * * *" изображение: тип: строка реплики: тип: целое число минимум: 1 максимум: 10 по умолчанию: 1 область: пространство имен имена: множественное число: crontabs единственное число: crontab вид: CronTab shortNames: - ct
При этом по умолчанию используются как
cronSpec
, так иреплики
:apiVersion: «стабильный.example.com/v1 " вид: CronTab метаданные: имя: мой-новый-cron-объект спецификация: изображение: my-awesome-cron-image
ведет к
apiVersion: "stable.example.com/v1" вид: CronTab метаданные: имя: мой-новый-cron-объект спецификация: cronSpec: "5 0 * * *" изображение: my-awesome-cron-image реплик: 1
Неисправность объекта
- в запросе к серверу API с использованием значений версии запроса по умолчанию,
- при чтении из etcd с использованием значений версии хранилища по умолчанию,
- после изменения подключаемых модулей допуска непустыми патчами с использованием значений версии объекта веб-перехватчика допуска по умолчанию.
Значения по умолчанию, применяемые при чтении данных из etcd, не записываются автоматически обратно в etcd. Запрос на обновление через API необходим для сохранения этих значений по умолчанию в etcd.
Значения по умолчанию должны быть сокращены (за исключением значений по умолчанию для полей метаданных
Значения по умолчанию для метаданных
x-kubernetes-embedded-resources: истинные узлы
(или части значения по умолчанию, охватывающие метаданныеПо умолчанию и допускает значение NULL
Новое в 1.20: значений NULL для полей, которые либо не указывают флаг обнуляемого значения, либо дают ему значение
false,
будут сокращены до того, как произойдет установка по умолчанию. Если присутствует значение по умолчанию, оно будет применено. Когда значение nullable равноtrue
, значения NULL будут сохранены и не будут использоваться по умолчанию.Например, учитывая схему OpenAPI ниже:
тип: объект характеристики: спецификация: тип: объект характеристики: foo: тип: строка обнуляемый: ложь по умолчанию: "по умолчанию" бар: тип: строка обнуляемый: true баз: тип: строка
создание объекта с нулевыми значениями для
foo
иbar
иbaz
спецификации: foo: null bar: null baz: нуль
ведет к
спецификации: foo: "по умолчанию" bar: null
с
foo
сокращено и установлено по умолчанию, потому что поле не допускает значения NULL,bar
сохраняет нулевое значение из-заNULL: true
иbaz
сокращено, поскольку поле не допускает значения NULL и не имеет значения по умолчанию.Публикация схемы проверки в OpenAPI v2
CustomResourceDefinition Схемы проверки OpenAPI v3, которые являются структурными и допускают сокращение, публикуются как часть спецификации OpenAPI v2 с сервера Kubernetes API.
Инструмент командной строки kubectl использует опубликованную схему для выполнения проверки на стороне клиента (
kubectl create
иkubectl apply
), объяснения схемы (kubectl объяснять
) на настраиваемых ресурсах. Опубликованная схема также может использоваться для других целей, например, для создания клиента или создания документации.Схема проверки OpenAPI v3 преобразуется в схему OpenAPI v2, и отображаются в определениях
пути
поля в спецификации OpenAPI v2.Следующие модификации применяются во время преобразования для сохранения обратной совместимости с kubectl в предыдущей версии 1.13. Эти модификации предотвращают чрезмерную строгость kubectl и отклонение действительные схемы OpenAPI, которые он не понимает. Преобразование не изменит схему проверки, определенную в CRD, и поэтому не повлияет на проверку на сервере API.
- Следующие поля удалены, поскольку они не поддерживаются OpenAPI v2 (в будущих версиях OpenAPI v3 будет использоваться без этих ограничений)
- Поля
allOf
,anyOf
,oneOf
иnot
удаляются
- Поля
- Если задано значение
, допускающее значение NULL: true
, мы отбрасываемтип
,, допускающий значение NULL,
, элементы
Дополнительные колонки принтера
Инструмент kubectl полагается на форматирование вывода на стороне сервера. Сервер API вашего кластера решает, какой столбцы отображаются командой
kubectl get
. Вы можете настроить эти столбцы для CustomResourceDefinition. В следующем примере добавляютсяSpec
,Replicas
иAge
. столбцы.Сохраните CustomResourceDefinition в определение ресурса
.yaml
:apiVersion: apiextensions.k8s.io/v1 вид: CustomResourceDefinition метаданные: имя: crontabs.stable.example.com спецификация: группа: stable.example.com область: пространство имен имена: множественное число: crontabs единственное число: crontab вид: CronTab shortNames: - ct версии: - название: v1 обслужено: верно хранение: правда схема: openAPIV3Schema: тип: объект характеристики: спецификация: тип: объект характеристики: cronSpec: тип: строка изображение: тип: строка реплики: тип: целое число additionalPrinterColumns: - название: Spec тип: строка описание: спецификация cron, определяющая интервал запуска CronJob jsonPath:.spec.cronSpec - название: Реплики тип: целое число description: Количество заданий, запущенных CronJob. jsonPath: .spec.replicas - Назовите возраст тип: дата jsonPath: .metadata.creationTimestamp
Создание CustomResourceDefinition:
kubectl apply -f resourcedefinition.yaml
Создайте экземпляр, используя
my-crontab.yaml
из предыдущего раздела.Вызов печати на стороне сервера:
kubectl получить crontab my-new-cron-object
Обратите внимание на столбцы
NAME
,SPEC
,REPLICAS
иAGE
в выходных данных:НАЗВАНИЕ СПЕЦИФИКАЦИЯ РЕПЛИКА ВОЗРАСТ мой-новый-cron-объект * * * * * 1 7 с
Примечание: Столбец
NAME
является неявным и не требует определения в CustomResourceDefinition.Приоритет
Каждый столбец включает поле с приоритетом
-o шириной
).- Столбцы с приоритетом
0
отображаются в стандартном виде. - Столбцы с приоритетом больше
0
отображаются только в широком виде.
Тип
Поле
типа
столбца может быть любым из следующих (сравните типы данных OpenAPI v3):-
целое
- числа без плавающей запятой -
number
- числа с плавающей запятой -
струны
- струны -
логическое
-истинно
илиложно
-
дата
- отображается по-разному как время, прошедшее с этой отметки времени.
Если значение внутри CustomResource не соответствует типу, указанному для столбца, значение опущено. Используйте проверку CustomResource, чтобы убедиться, что значение типы верны.
Формат
Поле формата
столбца
может быть любым из следующих:-
внутр. 32
-
внутр 64
-
поплавок
-
двойной
-
байт
-
дата
-
дата-время
-
пароль
Формат
столбца
управляет стилем, используемым, когдаkubectl
печатает значение.Субресурсы
Пользовательские ресурсы поддерживают подресурсы
/ status
и/ scale
.Подресурсы состояния и масштабирования могут быть дополнительно включены с помощью определяя их в CustomResourceDefinition.
Подресурс статуса
Когда подресурс статуса включен, подресурс
/ статус
для настраиваемого ресурса доступен.Разделы статуса и спецификации представлены
.status
и.spec
JSONPaths соответственно внутри настраиваемого ресурса.Запросы PUT
к подресурсу/ status
принимают настраиваемый объект ресурса и игнорируют изменения чего-либо, кроме раздела состояния.Запросы PUT
к субресурсу/ status
проверяют только состояние раздела настраиваемого ресурса.PUT
/POST
/PATCH
запросы к настраиваемому ресурсу игнорируют изменения раздела состояния.Значение
.metadata.generation
увеличивается для всех изменений, кроме изменений в.metadata
или.status
.В корне схемы проверки CRD OpenAPI разрешены только следующие конструкции:
-
описание
-
пример
-
эксклюзивно Максимум
-
эксклюзивно Минимум
-
внешние документы
-
формат
-
позиции
-
максимум
-
макс. Позиции
-
макс. Длина
-
минимум
-
минЭлементы
-
мин Длина
-
кратное
-
узор
-
Объекты
-
требуется
-
название
-
тип
-
уникальный Предметы
-
Подресурс масштабирования
Когда подресурс масштабирования включен, открывается подресурс
/ масштаб
для настраиваемого ресурса.Объектautoscaling / v1.Scale
отправляется как полезная нагрузка для/ scale
.Чтобы включить субресурс масштабирования, в CustomResourceDefinition определены следующие поля.
specReplicasPath
определяет JSONPath внутри настраиваемого ресурса, который соответствуетscale.spec.replicas
.- Это обязательное значение.
- Разрешены только пути JSONPath под
.spec
и с точечной нотацией. - Если в настраиваемом ресурсе нет значения под
specReplicasPath
, подресурс/ scale
вернет ошибку при GET.
statusReplicasPath
определяет JSONPath внутри настраиваемого ресурса, который соответствуетscale.status.replicas
.- Это обязательное значение.
- Разрешены только пути JSONPath под
.status
и с точечной нотацией. - Если в настраиваемом ресурсе нет значения под
statusReplicasPath
, значение реплики состояния в подресурсе/ scale
по умолчанию будет равно 0.
labelSelectorPath
определяет JSONPath внутри настраиваемого ресурса, который соответствуетScale.Status.Selector
.- Это необязательное значение.
- Он должен быть настроен на работу с HPA.
- Разрешены только пути JSONPath под
.status
или.spec
и с точечной нотацией. - Если в настраиваемом ресурсе нет значения под меткой
labelSelectorPath
, значение селектора статуса в подресурсе/ scale
по умолчанию будет пустой строкой. - Поле, на которое указывает этот путь JSON, должно быть строковым полем (не сложной структурой селектора), которое содержит сериализованный селектор меток в строковой форме.
В следующем примере включены субресурсы состояния и масштабирования.
Сохраните CustomResourceDefinition в
resourcedefinition.yaml
:apiVersion: apiextensions.k8s.io/v1 вид: CustomResourceDefinition метаданные: имя: crontabs.stable.example.com спецификация: группа: стабильная.example.com версии: - название: v1 обслужено: верно хранение: правда схема: openAPIV3Schema: тип: объект характеристики: спецификация: тип: объект характеристики: cronSpec: тип: строка изображение: тип: строка реплики: тип: целое число положение дел: тип: объект характеристики: реплики: тип: целое число labelSelector: тип: строка # subresources описывает подресурсы для настраиваемых ресурсов.субресурсы: # status включает субресурс статуса. положение дел: {} # scale включает подресурс масштабирования. шкала: # specReplicasPath определяет JSONPath внутри настраиваемого ресурса, который соответствует Scale.Spec.Replicas. specReplicasPath: .spec.replicas # statusReplicasPath определяет JSONPath внутри настраиваемого ресурса, который соответствует Scale.Status.Replicas. statusReplicasPath: .status.replicas # labelSelectorPath определяет путь JSONPath внутри настраиваемого ресурса, который соответствует масштабированию.Статус. Селектор. labelSelectorPath: .status.labelSelector область: пространство имен имена: множественное число: crontabs единственное число: crontab вид: CronTab shortNames: - ct
И создайте его:
kubectl apply -f resourcedefinition.yaml
После создания объекта CustomResourceDefinition можно создавать настраиваемые объекты.
Если вы сохраните следующий YAML в
my-crontab.yaml
:apiVersion: «стабильный.example.com/v1 " вид: CronTab метаданные: имя: мой-новый-cron-объект спецификация: cronSpec: "* * * * * / 5" изображение: my-awesome-cron-image реплик: 3
и создайте его:
kubectl apply -f my-crontab.yaml
Затем новые конечные точки RESTful API с пространством имен создаются по адресу:
/apis/stable.example.com/v1/namespaces/*/crontabs/status
и
/apis/stable.example.com/v1/namespaces/*/crontabs/scale
Пользовательский ресурс можно масштабировать с помощью команды
kubectl scale
.Например, следующая команда устанавливает.spec.replicas
из настраиваемый ресурс, созданный выше до 5:kubectl scale --replicas = 5 crontabs / my-new-cron-object crontabs "мой-новый-cron-объект" масштабируется kubectl get crontabs my-new-cron-object -o jsonpath = '{. spec.replicas}' 5
Вы можете использовать PodDisruptionBudget для защиты пользовательских ресурсы, у которых включен субресурс масштабирования.
Категории
Категории - это список сгруппированных ресурсов, к которым принадлежит пользовательский ресурс (например,
все
). Вы можете использоватьkubectl get
для вывода списка ресурсов, принадлежащих категории.В следующем примере добавляются
все
в список категорий в CustomResourceDefinition. и показывает, как вывести настраиваемый ресурс с помощьюkubectl get all
.Сохраните следующее CustomResourceDefinition в
resourcedefinition.yaml
:apiVersion: apiextensions.k8s.io/v1 вид: CustomResourceDefinition метаданные: имя: crontabs.stable.example.com спецификация: группа: stable.example.com версии: - название: v1 обслужено: верно хранение: правда схема: openAPIV3Schema: тип: объект характеристики: спецификация: тип: объект характеристики: cronSpec: тип: строка изображение: тип: строка реплики: тип: целое число область: пространство имен имена: множественное число: crontabs единственное число: crontab вид: CronTab shortNames: - ct # категории - это список сгруппированных ресурсов, к которым принадлежит пользовательский ресурс.категории: - все
и создайте его:
kubectl apply -f resourcedefinition.yaml
После создания объекта CustomResourceDefinition можно создавать настраиваемые объекты.
Сохраните следующий YAML в
my-crontab.yaml
:apiVersion: "stable.example.com/v1" вид: CronTab метаданные: имя: мой-новый-cron-объект спецификация: cronSpec: "* * * * * / 5" изображение: my-awesome-cron-image
и создайте его:
kubectl apply -f my-crontab.ямл
Вы можете указать категорию при использовании
kubectl get
:kubectl получить все
и будет включать пользовательские ресурсы вида
CronTab
:ИМЯ ВОЗРАСТ crontabs / мой-новый-cron-объект 3s
Что дальше
Последнее изменение 20 июня 2021 г., 16:03 PST : Правильный вывод команды (c2d7782e5)Обрезка объектов для восстановления ресурсов | Приложения
Чтобы обрезать изображения, которые больше не требуются системе из-за возраста, статус или превышение пределов, администраторы могут выполнить следующую команду:
$ oc adm обрезать изображения [<параметры>]
В настоящее время для обрезки изображений необходимо сначала войти в интерфейс командной строки как пользователь с токен доступа.Пользователь также должен иметь роль кластера
system: image-pruner
или больше (например,cluster-admin
).При обрезке образов данные из интегрированного реестра удаляются, если
--prune-registry = false Используется
. Чтобы эта операция работала правильно, реестр должен быть настроен нахранилище: удалить: включено
установить наtrue
.Обрезка изображений с помощью флага
--namespace
не удаляет изображения, только изображение потоки.Изображения - это ресурсы без пространства имен. Таким образом, ограничивая обрезку конкретное пространство имен делает невозможным вычисление их текущего использования.По умолчанию интегрированный реестр кэширует метаданные больших двоичных объектов, чтобы уменьшить количество запросов к хранилищу, и увеличить скорость обработки запроса. При сокращении встроенный кэш реестра не обновляется. Изображения добавлены после обрезка, содержащая обрезанные слои, будет прервана, потому что обрезанные слои метаданные в кеше не будут отправлены.Поэтому необходимо чтобы очистить кеш после обрезки. Это можно сделать, повторно развернув реестр:
# oc patch deployment image-registry -n openshift-image-registry --type = merge --patch = "{\" spec \ ": {\" template \ ": {\" metadata \ ": {\" annotations \ ": {\" kubectl.kubernetes.io/restartedAt \ ": \" $ (date '+% Y-% m-% dT% H:% M:% SZ' -u) \ "}}}}} «
Если интегрированный реестр использует кеш Redis, необходимо очистить базу данных. вручную.
Таблица 4. Параметры конфигурации интерфейса командной строки для обрезки образов Опция Описание - все
Включить образы, которые не были отправлены в реестр, но были зеркалированы протаскивание.По умолчанию это включено. Чтобы ограничить обрезку изображениями, которые были помещен в интегрированный реестр, передайте
--all = false
.- орган сертификации
Путь к файлу центра сертификации для использования при обмене данными с Реестры, управляемые платформой OpenShift Container. По умолчанию данные центра сертификации из файла конфигурации текущего пользователя. Если предусмотрено, безопасное соединение инициирован.
--подтвердить
Указывает на необходимость обрезки вместо выполнения пробного прогона.Этот требуется действительный маршрут к интегрированному реестру образов контейнера. Если это команда запускается вне сети кластера, необходимо указать маршрут используя
--registry-url
.- принудительно незащищенный
Будьте осторожны с этой опцией. Разрешить небезопасное соединение с контейнером реестр, размещенный по протоколу HTTP или имеющий недопустимый сертификат HTTPS.
--keep-tag-revisions =
Для каждого потока изображений, не более
N
версий изображения на тег (по умолчанию3
).--keep-младше-чем = <продолжительность>
Не обрезать изображения младше
60m
).- предел превышения размера обрезки
Обрежьте каждое изображение, которое превышает наименьший предел, определенный в том же проекте.Этот флаг нельзя комбинировать с
--keep-tag-revisions
или- младше
.- url-адрес реестра
Адрес для обращения в реестр. Команда пытается использовать внутренний URL-адрес кластера, определенный из управляемых изображений и потоков изображений. В случае это не удается (реестр не может быть решен или достигнут), альтернативный путь, который работы должны быть предоставлены с использованием этого флага. Имя хоста реестра может быть с префиксом
https: //
илиhttp: //
, который обеспечивает конкретное соединение протокол.--prune-реестр
В сочетании с условиями, предусмотренными другими опциями, эта опция контролирует, соответствуют ли данные в реестре контейнерной платформе OpenShift объект API изображения удален. По умолчанию при обрезке изображения обрабатываются оба изображения. Объекты API и соответствующие данные в реестре. Эта опция полезна, когда вас интересует только удаление содержимого etcd, возможно, чтобы уменьшить количество объектов изображения (но не связаны с очисткой хранилища реестра) или намереваются сделать это отдельно, жестко обрезав реестр, возможно, во время соответствующий период обслуживания реестра.
Условия обрезки изображения
Удалите все изображения, «управляемые OpenShift Container Platform» (изображения с аннотацией
openshift.io/image.managed
), который был создан как минимум--keep-младше
мин. назад, и в настоящее время на него не ссылается:Любой под, созданный менее
- не более
минут назад.любой поток изображений, созданный менее
- на порядок моложе -
минут назад.любых работающих подов.
любых ожидающих стручков.
любые контроллеры репликации.
любые DeploymentConfigs.
любые конфигурации сборки.
любых сборок.
--keep-tag-revisions
самые последние элементы вstream.status.tags []. Items
.
Удалите все изображения, «управляемые OpenShift Container Platform» (изображения с аннотацией
опеншифт.io / image.managed
), который превышает наименьший предел, определенный в тот же проект, на который в настоящее время не ссылается:Отсутствует поддержка отсечения из внешних реестров.
При обрезке изображения все ссылки на изображение удаляются из всех потоки изображений, которые имеют ссылку на изображение в
status.tags
.Слои изображений, на которые больше не ссылаются изображения, удаляются.
Флаг
--prune-over-size-limit
нельзя комбинировать с--keep-tag-revisions
или--keep-младше
флагов.Это возвращает информация о том, что эта операция не разрешена.Разделение удаления объектов API изображений OpenShift Container Platform и данных изображений из Реестр с помощью
--prune-registry = false
с последующим резким удалением реестр сужает некоторые временные окна и безопаснее по сравнению с попыткой обрезать оба с помощью одной команды. Однако временные окна не полностью удаленный.Например, вы все еще можете создать Pod, ссылаясь на изображение как на обрезку. определяет это изображение для обрезки.Вы все равно должны отслеживать объект API созданные во время операций обрезки, которые могут ссылаться на изображения, поэтому вы можете уменьшить любые ссылки на удаленный контент.
Также имейте в виду, что повторная обрезка без параметра
--prune-registry
или с--prune-registry = true
не приводит к сокращению связанного хранилища в реестре образов. для изображений, ранее обрезанных с помощью, --prune-registry = false
. Любые изображения, обрезанные с помощью--prune-registry = false
, можно удалить только из хранилище реестра, жестко обрезав реестр.Запуск операции удаления изображения
Процедура
Чтобы увидеть, что удалит операция сокращения:
Ведение до трех версий тегов и сохранение ресурсов (изображений, изображений потоки и стручки) младше шестидесяти минут:
$ oc adm обрезка изображений --keep-tag-revisions = 3 --keep-младше-чем = 60 мес.
Обрезка каждого изображения, выходящего за установленные пределы:
$ oc adm prune images --prune-over-size-limit
Для фактического выполнения операции сокращения с параметрами из предыдущего шага:
$ oc adm обрезать изображения --keep-tag-revisions = 3 --keep-Young-than = 60m --confirm
$ oc adm обрезать изображения --prune-over-size-limit --confirm
Использование безопасных или незащищенных соединений
Безопасное соединение является предпочтительным и рекомендуемым подходом.Это сделано Протокол HTTPS с обязательной проверкой сертификата. Команда
prune
всегда пытается использовать его, если это возможно. Если это невозможно, в некоторых случаях может вернуться к небезопасному соединению, что опасно. В этом случае либо проверка сертификата пропускается или используется простой протокол HTTP.Возврат к небезопасному соединению разрешен в следующих случаях, если только
- орган сертификации
указан:Команда
prune
запускается с опцией--force-insecure
.Предоставленный
URL-адрес реестра
имеет префиксhttp: //
.Предоставленный
URL-адрес реестра
является адресом локальной ссылки илиlocalhost
.Конфигурация текущего пользователя допускает незащищенное соединение. Этот может быть вызвано тем, что пользователь вошел в систему с использованием
--insecure-skip-tls-verify
или выбрать небезопасное соединение при появлении запроса.
Если реестр защищен центром сертификации, отличным от используется OpenShift Container Platform, он должен быть указан с помощью
- сертификат-орган
флаг.В противном случае командаprune
завершится ошибкой с ошибкой ошибка.Проблемы при обрезке изображения
Изображения не обрезаются
Если ваши изображения продолжают накапливаться, и команда
prune
удаляет только небольшой часть того, что вы ожидаете, убедитесь, что вы понимаете, как обрезать изображение условия, которые должны применяться, чтобы изображение считалось кандидатом на обрезка.Убедитесь, что изображения, которые вы хотите удалить, находятся на более высоких позициях в каждом теге. истории, чем выбранный вами порог изменений тега.Например, рассмотрим старый и устаревшее изображение с именем
sha: abz
. Выполнив следующую команду в пространство именN
, где изображение помечено, изображение помечается три раза в одиночный поток изображений с именемmyapp
:$ image_name = "sha: abz" $ oc get is -n N -o go-template = '{{range $ isi, $ is: = .items}} {{range $ ti, $ tag: = $ is.status.tags}}' \ '{{range $ ii, $ item: = $ tag.items}} {{if eq $ item.image "'" $ {image_name} "\ $ '"}} {{$ is.metadata.name}}: {{$ tag.tag}} в позиции {{$ ii}} из {{len $ tag.items}} \ n '\ '{{end}} {{end}} {{end}} {{end}}' myapp: v2 на позиции 4 из 5 myapp: v2.1 на позиции 2 из 2 myapp: v2.1-май-2016 на позиции 0 из 1
При использовании параметров по умолчанию изображение никогда не обрезается, так как оно происходит в позиция
0
в историитега myapp: v2.1-май-2016
. Чтобы изображение было рассматривается для обрезки, администратор должен либо:Укажите
--keep-tag-revisions = 0
с помощью командыoc adm prune images
.Это действие эффективно удаляет все теги из всех пространств имен с лежащие в основе изображения, если они не моложе или на них не ссылаются объекты моложе указанного порога.
Удалить все
istags
, где позиция ниже порога ревизии, что означаетmyapp: v2.1
иmyapp: v2.1-may-2016
.Переместите изображение дальше в истории, запустив новые сборки, нажав на тот же
istag
, или пометив другое изображение.К сожалению, это не всегда желательно для старых тегов выпуска.
Теги, в названиях которых указана дата или время сборки определенного изображения, должны следует избегать, если изображение не должно храниться в течение неопределенного времени. Такие теги, как правило, имеют только одно изображение в своей истории, что эффективно предотвращает их никогда не обрезать.
Использование безопасного соединения для защиты от небезопасного реестра
Если вы видите сообщение, подобное приведенному ниже, в выводе
Ошибкаoadm prune images
, тогда ваш реестр не будет защищен и командаoadm удалит образы
клиент пытается использовать безопасное соединение:: ошибка связи с реестром: получить https: // 172.30.30.30: 5000 / healthz: http: сервер дал HTTP-ответ HTTPS-клиенту
Рекомендуемое решение - защитить реестр. В противном случае вы можете заставить клиент, чтобы использовать небезопасное соединение, добавив
--force-insecure
к команда, однако это не рекомендуется.
Использование небезопасного подключения к защищенному реестру
Если вы видите одну из следующих ошибок в выводе
Ошибкаoadm prune images
это означает, что ваш реестр защищен сертификатом, подписанным центр сертификации, отличный от того, который используется клиентомoadm prune images
для проверка подключения:: ошибка связи с реестром: получить http: // 172.30.30.30: 5000 / healthz: неверный HTTP-ответ "\ x15 \ x03 \ x01 \ x00 \ x02 \ x02" ошибка: ошибка связи с реестром: [Получить https://172.30.30.30:5000/healthz: x509: сертификат, подписанный неизвестным органом, получить http://172.30.30.30:5000/healthz: неверный ответ HTTP "\ x15 \ x03 \ x01 \ x00 \ x02 \ x02 "]
По умолчанию данные центра сертификации хранятся в конфигурации пользователя. файл используется; то же самое верно и для связи с главным API.
Используйте параметр
--certificate-Author
, чтобы предоставить правильный сертификат полномочия для сервера реестра образов контейнеров.Использование неправильного центра сертификации
Следующая ошибка означает, что центр сертификации, использованный для подписи сертификат защищенного реестра образов контейнера отличается от сертификата полномочия, используемые клиентом:
Ошибка: ошибка связи с реестром: получить https://172.30.30.30:5000/: x509: сертификат, подписанный неизвестным органом
Убедитесь, что вы указали нужный с флагом
--certificate-Authority
.В качестве обходного пути вместо него можно добавить флаг
--force-insecure
.Однако это не рекомендуется.db.collection.remove () - MongoDB Manual
Docs Home → MongoDB Manual
-
db.collection.remove ()
mongosh Method
Это метод
mongosh
. Это , а не документация дляNode.js
или другого языка программирования методы драйвера.В большинстве случаев методы
mongosh
работают так же, как устаревшие методы оболочкиmongo
.Однако некоторое наследие методы недоступны вmongosh
.Документацию по устаревшей оболочке
mongo
см. В документация для соответствующей версии сервера MongoDB:Для драйверов API MongoDB см. соответствующий язык Документация по драйверу MongoDB.
Удаляет документы из коллекции.
Метод
db.collection.remove ()
может иметь одно из двух синтаксисы. Методremove ()
может принимать документ запроса и необязательное логическое значениеjustOne
:db.collection.remove ( , ) Или метод может принимать документ запроса и дополнительное удаление документ опций:
db.collection.remove ( <запрос>, { justOne: , 919 сопоставление: <документ>, let: <документ> } ) 96 Тип запрос
документ
Задает критерии удаления с помощью операторов запроса.Чтобы удалить все документы в коллекции, передать пустой документ ( {}
).justOne
boolean
Необязательно. Чтобы ограничить удаление только одним документом, установите значение
true
. Пропустить используйте значение по умолчаниюfalse
и удалите все документы, соответствующие критерии удаления.writeConcern
документ
сопоставление
документ
Дополнительно.
Задает параметры сортировки для использования в операции.
Параметры сортировки позволяют пользователям указывать специфичные для языка правила для сравнения строк, такие как правила для регистр букв и знаки ударения.
Параметр сопоставления имеет следующий синтаксис:
сопоставление: { языковой стандарт: <строка>, caseLevel: , caseFirstring сила: , numericOrdering: , альтернативный: , maxVariable: , назад } При указании сопоставления поле
locale
является обязательным; все другие поля сопоставления необязательны.Для описания полей, см. Документ сопоставления.Если параметры сортировки не указаны, но в коллекции есть сортировка по умолчанию (см.
db.createCollection ()
), операция использует параметры сортировки, указанные для коллекции.Если для коллекции или для операций, MongoDB использует простое двоичное сравнение, используемое в предыдущих версии для сравнения строк.
Вы не можете указать несколько параметров сортировки для операции. Для Например, вы не можете указать разные параметры сортировки для каждого поля, или если выполняя поиск с сортировкой, вы не можете использовать одно сопоставление для найти и еще один для своего рода.
документ
Необязательно.
Задает документ со списком переменных. Это позволяет вам улучшить читаемость команд, отделив переменные от запроса текст.
Синтаксис документа:
{ : , ..., : } 7339
7339
7339
7339 Переменная установлена в значение, возвращаемое выражением, и не может быть измененным впоследствии.
Чтобы получить доступ к значению переменной в команде, используйте двойной префикс знака доллара (
$$
) вместе с именем вашей переменной в форме$$ <имя_переменной>
. Например:$$ targetTotal
.Чтобы использовать переменную для фильтрации результатов, необходимо получить доступ к переменной внутри оператора
$ expr
.Полный пример MQL с использованием
let
и переменных см. Используйте переменные в, пусть
.remove ()
возвращает объект, который содержит статус операции.Возвращает: Объект WriteResult, содержащий статус операции. Метод
remove ()
используетудалить команду
, которая использует функцию записи по умолчанию. Чтобы указать другую проблему записи, включите проблему записи в параметр options.По умолчанию
remove ()
удаляет все документы которые совпадают с выражениемjustOne
, чтобы ограничить операцию удалением одного документа. Чтобы удалить сингл документ, отсортированный в указанном порядке, используйте метод findAndModify ().При удалении нескольких документов операция удаления может чередоваться с другими операциями чтения и / или записи в коллекцию.
Вы не можете использовать метод
remove ()
с закрытой коллекцией.Вы не можете использовать метод
remove ()
на сбор временных рядов.Все
remove ()
операции для сегментированного коллекция, в которой указан параметрjustOne: true
, должна включать ключ шарда или поле_id
в спецификации запроса.remove ()
операций с указаниемjustOne: true
в сегментированной коллекции, не содержащей ни ключ шарда или поле_id
возвращают ошибку.db.collection.remove ()
может использоваться внутри многодокументных транзакций.Не указывать явно проблему записи для операции, если запускается в сделка. Чтобы использовать озабоченность записи с транзакциями, см. Транзакции и письменное беспокойство.
В большинстве случаев операция с несколькими документами требует большего стоимость производительности по сравнению с записью одного документа, а наличие многодокументных операций не должно быть замена эффективному дизайну схемы. Для многих сценариев денормализованная модель данных (встроенные документы и массивы) по-прежнему будет оптимальной для вашего данные и варианты использования.То есть для многих сценариев моделирование ваших данных соответствующим образом сведет к минимуму потребность в многодокументных сделки.
Для рассмотрения использования дополнительных транзакций (например, ограничение времени выполнения и ограничение размера журнала операций), см. также Производственные соображения.
Ниже приведены примеры метода
remove ()
.Чтобы удалить все документы в коллекции, вызовите метод
remove
с пустым документом запроса{}
. Следующая операция удаляет все документы из биоса collection:Эта операция не эквивалентна
drop ()
метод.Чтобы удалить все документы из коллекции, это может быть более эффективным использовать метод
drop ()
для удаления всего коллекцию, включая индексы, а затем воссоздайте коллекцию и перестройте индексы.Чтобы удалить документы, соответствующие критериям удаления, позвоните в
remove ()
метод сСледующая операция удаляет все документы из коллекции
продуктов
, где количество20
:дб.products.remove ({qty: {$ gt: 20}}) Следующая операция с набором реплик удаляет все документы из коллекция
продуктов
, гдеqty
больше20
и указывает проблему записиw: 2
с таймаутомwtimeout
в 5000 миллисекунд. Эта операция либо возвращает после того, как запись распространяется как на первичный, так и на один вторичный, или время ожидания истекает через 5 секунд.дб.products.remove ( {qty: {$ gt: 20}}, {writeConcern: {w: "большинство", wtimeout: 5000}} ) Чтобы удалить первый документ, соответствующий критерию удаления, вызовите
удалить метод
с запросомjustOne
присвоено значениеtrue
или1
.Следующая операция удаляет первый документ из коллекции
продуктов
, где количество20
:дб.products.remove ({qty: {$ gt: 20}}, true) Параметры сортировки позволяют пользователям указывать специфичные для языка правила для сравнения строк, такие как правила для регистр букв и знаки ударения.
Коллекция
myColl
содержит следующие документы:{_id: 1, категория: «кафе», статус: «A»} {_id: 2, категория: «кафе» , status: "a"} {_id: 3, category: "cafE", status: "a"} Следующая операция включает сопоставление опция:
дб.myColl.remove ( {категория: "кафе", статус: "A"}, {сопоставление: {locale: "fr", сила: 1}} ) Чтобы определить переменные, к которым вы можете получить доступ в другом месте команды, используйте вариант let.
Чтобы отфильтровать результаты с помощью переменной, необходимо получить доступ к переменной внутри оператора
$ expr
.Создать коллекцию
ТортАроматы
:db.cakeFlavors.insert ([ {_id: 1, аромат: "шоколад"}, {_id: 2, аромат: "клубника"}, {_id: 3, аромат: "вишня "} ]) В следующем примере определяется
переменная targetFlavor
вlet
и использует переменную для удаления аромата клубничного торта:db.cakeFlavors.remove ( {$ expr: {$ eq: ["$ аромат", "$$ targetFlavor"]}}, {let: {targetFlavor: "клубника"}} ) Команда удаления
remove ()
возвращаетWriteResult ()
объект, содержащий статус операции.В случае успехаWriteResult () Объект
содержит информацию о количестве удаленные документы:WriteResult ({"nRemoved": 4}) Если метод
remove ()
обнаруживает запись касается ошибок, результаты включаютWriteResult.writeConcernError
поле:WriteResult ({ «nRemoved»: 7, «writeConcernError»: { 641943"errmsg": "время ожидания репликации истекло", "errInfo": { "wtimeout": true, " : { «w»: «большинство», «wtimeout»: 1, «происхождение»: «getLastErrorDefaults» } 919 }) Если метод
remove ()
обнаруживает отсутствие записи ошибка, результаты включаютWriteResult.writeError
поле:WriteResult ({ "nRemoved": 0, "writeError": { "code": 243 ms ms : "неизвестный оператор верхнего уровня: $ invalidFieldName"} }) Настройка реестра | Документация Docker
Расчетное время чтения: 35 минут
Конфигурация реестра основана на файле YAML, подробно описанном ниже.Пока это поставляется с нормальными значениями по умолчанию из коробки, вам следует изучить его исчерпывающе перед переносом ваших систем в производство.
Отмена определенных опций конфигурации
В типичной настройке, когда вы запускаете реестр из официального образа, вы можете укажите переменную конфигурации из среды, передав аргументы
-e
в докерзапустите строфу
или из файла Docker с помощьюENV
инструкция.Чтобы переопределить параметр конфигурации, создайте переменную среды с именем
REGISTRY_variable
, гдепеременная
- это имя параметра конфигурации а_
(подчеркивание) представляют уровни отступа.Например, вы можете настроить корневой каталогбэкэнд хранилища
:хранилище: файловая система: корневой каталог: / var / lib / registry
Чтобы переопределить это значение, установите переменную среды следующим образом:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY = / где-то
Эта переменная заменяет значение
/ var / lib / registry
на значение/ где-то
каталог.Примечание : Создайте файл базовой конфигурации с переменными среды, которые могут быть настроенным для настройки отдельных значений.Переопределение разделов конфигурации с переменными окружения не рекомендуется.
Замена всего файла конфигурации
Если конфигурация по умолчанию не является надежной основой для вашего использования, или если вы при возникновении проблем с заменой ключей из среды вы можете указать альтернативный Файл конфигурации YAML, смонтировав его как том в контейнере.
Обычно создается новый файл конфигурации с нуля с именем
config.yml
, затем укажите это в командеdocker run
:$ docker run -d -p 5000: 5000 --restart = always --name registry \ -v `pwd` / config.yml: /etc/docker/registry/config.yml \ реестр: 2
Используйте это пример файла YAML в качестве отправной точки.
Список вариантов конфигурации
Это все параметры конфигурации реестра. Некоторые варианты в списке являются взаимоисключающими. Прочтите подробную справочную информацию о каждом вариант, прежде чем завершить настройку.
версия: 0.1 бревно: журнал доступа: отключен: правда уровень: отладка форматировщик: текст поля: услуга: реестр среда: постановка крючки: - тип: почта отключен: правда уровни: - паника параметры: smtp: адрес: почта.example.com:25 имя пользователя: mailuser пароль: пароль небезопасно: правда от: [email protected] к: - [email protected] loglevel: debug # не рекомендуется: используйте "журнал" место хранения: файловая система: корневой каталог: / var / lib / registry maxthreads: 100 лазурь: accountname: accountname accountkey: base64encodedaccountkey контейнер: имя контейнера gcs: bucket: bucketname ключевой файл: / путь / к / ключевому файлу реквизиты для входа: тип: service_account project_id: project_id_string private_key_id: private_key_id_string private_key: private_key_string client_email: client @ example.ком client_id: client_id_string auth_uri: http://example.com/auth_uri token_uri: http://example.com/token_uri auth_provider_x509_cert_url: http://example.com/provider_cert_url client_x509_cert_url: http://example.com/client_cert_url корневой каталог: / gcs / object / name / prefix размер фрагмента: 5242880 s3: accesskey: awsaccesskey secretkey: awssecretkey регион: us-west-1 regionendpoint: http: //myobjects.local bucket: bucketname encrypt: true keyid: mykeyid secure: true v4auth: правда размер блока: 5242880 размер документа: 33554432 multipartcopymaxconcurrency: 100 multipartcopythresholdsize: 33554432 корневой каталог: / s3 / объект / имя / префикс быстрый: имя пользователя: имя пользователя пароль: пароль authurl: https: // хранилище.myprovider.com/auth/v1.0 или https://storage.myprovider.com/v2.0 или https://storage.myprovider.com/v3/auth арендатор: tenantname тенантид: тенантид domain: доменное имя для Openstack Identity v3 API domainid: идентификатор домена для API Openstack Identity v3 insecureskipverify: true регион: fr контейнер: имя контейнера корневой каталог: / swift / объект / имя / префикс oss: accesskeyid: accesskeyid accesskeysecret: доступkeysecret region: название региона OSS конечная точка: необязательные конечные точки internal: дополнительная внутренняя конечная точка ведро: ведро OSS encrypt: необязательная настройка шифрования данных secure: необязательная настройка ssl chunksize: необязательный размер rootdirectory: необязательный корневой каталог inmemory: # Этот драйвер не принимает параметров удалять: включен: ложь перенаправление: отключить: ложь кеш: blobdescriptor: redis поддержание: выгрузка включен: правда возраст: 168ч интервал: 24 часа dryrun: ложь только чтение: включен: ложь авторизация: глупый: царство: глупое царство сервис: глупо-сервис токен: autoredirect: true область: область токенов сервис: токен-сервис эмитент: реестр-эмитент токена rootcertbundle: / корень / сертификаты / связка htpasswd: царство: базовое царство путь: / путь / к / htpasswd промежуточное ПО: реестр: - имя: ARegistryMiddleware параметры: foo: bar репозиторий: - имя: ARepositoryMiddleware параметры: foo: bar место хранения: - имя: cloudfront параметры: baseurl: https: // my.cloudfronted.domain.com/ частный ключ: / путь / к / pem keypairid: cloudfrontkeypairid продолжительность: 3000с ipfilteredby: awsregion awsregion: us-east-1, use-east-2 частота обновления: 12ч iprangesurl: https://ip-ranges.amazonaws.com/ip-ranges.json место хранения: - имя: перенаправление параметры: baseurl: https://example.com/ составление отчетов: ошибка: apikey: bugsnagapikey стадия выпуска: bugsnagreleasestage конечная точка: bugsnagendpoint newrelic: лицензионный ключ: newrelicensekey имя: newrelicname многословный: правда http: адрес: localhost: 5000 префикс: / мой / вложенный / реестр / хост: https: // myregistryaddress.орг: 5000 secret: asecretforlocaldevelopment relativeurls: false время слива: 60 с tls: сертификат: / путь / к / x509 / общедоступный ключ: / путь / к / x509 / private clientcas: - /path/to/ca.pem - /path/to/another/ca.pem letsencrypt: cachefile: / путь / к / кеш-файлу электронная почта: [email protected] хосты: [myregistryaddress.org] отлаживать: адрес: localhost: 5001 Прометей: включен: правда путь: / метрики заголовки: Параметры X-Content-Type: [nosniff] http2: отключено: ложь уведомления: События: includereferences: правда конечные точки: - имя: слушатель отключено: ложь url: https: // my.listener.com/event заголовки:
тайм-аут: 1 с порог: 10 отсрочка: 1 с игнорируемые промежуточные типы: - приложение / октет-поток игнорировать: медиатипы: - приложение / октет-поток действия: - тянуть Redis: адрес: localhost: 6379 пароль: asecret дБ: 0 dialtimeout: 10 мсек время чтения: 10 мс время ожидания записи: 10 мс бассейн: максидл: 16 макс. активность: 64 простоя: 300 с здоровье: Storagedriver: включен: правда интервал: 10 с порог: 3 файл: - файл: / путь / к / проверенному / файлу интервал: 10 с http: - uri: http: // server. /] + \.https?: // www \ .example \ .com / В некоторых случаях опцией конфигурации является необязательный , но он содержит дочерний опции, помеченные как , необходимы . В этих случаях вы можете опустить родительский элемент с помощью все его дети. Однако, если родитель включен, вы также должны включить все дети, отмеченные , требовали .
версия
версия: 0.1
Версия
журнал
Подраздел
log
настраивает поведение системы регистрации. Регистрация система выводит все на стандартный вывод. Вы можете настроить детализацию и формат с этим разделом конфигурации.журнал: журнал доступа: отключен: правда уровень: отладка форматировщик: текст поля: услуга: реестр среда: постановка
Параметр Требуется Описание уровень
№ Устанавливает чувствительность вывода журнала.Допустимые значения: error
,warn
,info
иdebug
. По умолчанию -, информация
.форматтер
№ Выбирает формат вывода журнала. Формат в первую очередь влияет на то, как кодируются ключевые атрибуты для строки журнала. Возможные варианты: text
,json
иlogstash
. По умолчаниютекст
.поля
№ Карта имен полей и значений.Они добавляются в каждую строку журнала для контекста. Это полезно для определения источника сообщений журнала после смешивания в других системах. журнал доступа
журнал доступа: отключен: правда
В журнале
accesslog
настраивает поведение журнала доступа система. По умолчанию система регистрации доступа выводит на стандартный вывод в Комбинированный формат журнала. Ведение журнала доступа можно отключить, установив логический флагdisabled
наtrue
.крючки
крючки: - тип: почта уровни: - паника параметры: smtp: адрес: smtp.sendhost.com:25 имя пользователя: sendername пароль: пароль небезопасно: правда от: [email protected] к: - [email protected]
Подраздел
хуков
настраивает поведение крючков регистрации. Этот подраздел включает обработчик последовательности, который вы можете использовать, например, для отправки почты.Обратитесь кloglevel
, чтобы настроить уровень печатаемых сообщений.лог-уровень
УСТАРЕЛО: Пожалуйста, используйте журнал.
loglevel: отладка
Допустимые значения:
error
,warn
,info
иdebug
. По умолчаниюинформация
.склад
хранилище: файловая система: корневой каталог: / var / lib / registry лазурь: accountname: accountname accountkey: base64encodedaccountkey контейнер: имя контейнера gcs: bucket: bucketname ключевой файл: / путь / к / ключевому файлу реквизиты для входа: тип: service_account project_id: project_id_string private_key_id: private_key_id_string private_key: private_key_string client_email: client @ example.ком client_id: client_id_string auth_uri: http://example.com/auth_uri token_uri: http://example.com/token_uri auth_provider_x509_cert_url: http://example.com/provider_cert_url client_x509_cert_url: http://example.com/client_cert_url корневой каталог: / gcs / object / name / prefix s3: accesskey: awsaccesskey secretkey: awssecretkey регион: us-west-1 regionendpoint: http: //myobjects.local bucket: bucketname encrypt: true keyid: mykeyid secure: true v4auth: правда размер блока: 5242880 размер документа: 33554432 multipartcopymaxconcurrency: 100 multipartcopythresholdsize: 33554432 корневой каталог: / s3 / объект / имя / префикс быстрый: имя пользователя: имя пользователя пароль: пароль authurl: https: // хранилище.myprovider.com/auth/v1.0 или https://storage.myprovider.com/v2.0 или https://storage.myprovider.com/v3/auth арендатор: tenantname тенантид: тенантид domain: доменное имя для Openstack Identity v3 API domainid: идентификатор домена для API Openstack Identity v3 insecureskipverify: true регион: fr контейнер: имя контейнера корневой каталог: / swift / объект / имя / префикс oss: accesskeyid: accesskeyid accesskeysecret: доступkeysecret region: название региона OSS конечная точка: необязательные конечные точки internal: дополнительная внутренняя конечная точка ведро: ведро OSS encrypt: необязательная настройка шифрования данных secure: необязательная настройка ssl chunksize: необязательный размер rootdirectory: необязательный корневой каталог в памяти: удалять: включен: ложь кеш: blobdescriptor: inmemory поддержание: выгрузка включен: правда возраст: 168ч интервал: 24 часа dryrun: ложь только чтение: включен: ложь перенаправление: отключить: ложь
Хранилище
Опция
- требуется и определяет, в каком внутреннем хранилище находится использовать.Вы должны настроить ровно один бэкэнд. Если настроить больше, реестр возвращает ошибку. Вы можете выбрать любой из этих драйверов внутреннего хранилища:Только для тестирования можно использовать хранилище
inmemory
Водитель. Если вы хотите запустить реестр из энергозависимой памяти, используйте Файловая системаДрайвер
на рамдиске.Если вы развертываете реестр в Windows, том Windows, подключенный из хост не рекомендуется. Вместо этого вы можете использовать поддержку S3 или Azure. хранилище данных.Если вы используете том Windows, длина пути
PATH от
до точка монтирования должна быть в пределахMAX_PATH
(обычно 255 символов), или возникнет эта ошибка:Ошибка протокола mkdir / XXX, и ваш реестр не будет работать должным образом.
техническое обслуживание
В настоящее время очистка при выгрузке и режим только для чтения - это единственное техническое обслуживание
выгрузка очистка
Очистка загрузки - это фоновый процесс, который периодически удаляет потерянные файлы. из каталогов загрузки реестра.Очистка загрузки включена дефолт. Чтобы настроить очистку каталога загрузки, должны быть следующие параметры: быть установлен.
Параметр Требуется Описание включено
да Установите значение true
, чтобы разрешить очистку при выгрузке. По умолчаниюистинно
.возраст
да Каталоги загрузки старше этого возраста будут удалены.По умолчанию 168ч
(1 неделя).интервал
да Интервал между очисткой каталога выгрузки. По умолчанию 24 часа
.сухой прогон
да Установите dryrun
наtrue
, чтобы получить сводную информацию о том, какие каталоги будут удалены. По умолчаниюfalse
.Примечание :
age
иinterval
- это строки, содержащие число с необязательным дробь и суффикс единицы.Примеры:45м
,2х20м
,168х
.только чтение
Если
только для чтения
раздел при обслуживаниивключен
установлен наtrue
, клиентам не будет разрешено писать в реестр. Этот режим полезен для временно запретить запись в внутреннее хранилище, чтобы сборка мусора прошла можно запустить. Перед запуском сборки мусора реестр должен быть перезапущен с параметромenabled только для чтения
установлено значение true.После сборки мусора Завершение прохода, реестр может быть перезапущен снова, на этот раз столько для чтения
удален из конфигурации (или установлен в false).удалить
Используйте структуру
delete
, чтобы разрешить удаление больших двоичных объектов изображений и манифестов. по дайджесту. По умолчанию он равен false, но его можно включить, написав следующее в файле конфигурации:удалить: включен: правда
кэш
Использовать кэш
Структура
для включения кэширования данных, к которым осуществляется доступ в хранилище бэкэнд.В настоящее время единственный доступный кеш обеспечивает быстрый доступ к слою. метаданные, которые используют полеblobdescriptor
, если оно настроено.Вы можете установить для поля
blobdescriptor
значениеredis
илиinmemory
. Если установлено значениеredis
, Пул Redis кэширует метаданные слоя. Если установлено значениеinmemory
, карта в памяти кэширует метаданные слоя.ПРИМЕЧАНИЕ : Раньше
blobdescriptor
был известен какlayerinfo
.Хотя эти эквивалентны,layerinfo
устарел.перенаправление
Подраздел
redirect
обеспечивает конфигурацию для управления переадресацией из серверные части контента. Для серверных ВМ, которые его поддерживают, перенаправление включено дефолт. В определенных сценариях развертывания вы можете решить направить все данные через реестр, а не перенаправлять на серверную часть. Это может быть больше эффективен при использовании серверной части, которая не совмещена, или когда реестр экземпляр агрессивно кэширует.Чтобы отключить перенаправления, добавьте один флаг
disable
, установите значениеtrue
в разделе редиректа :перенаправление: отключить: правда
авторизация
авторизация: глупый: царство: глупое царство сервис: глупо-сервис токен: область: область токенов сервис: токен-сервис эмитент: реестр-эмитент токена rootcertbundle: / корень / сертификаты / связка htpasswd: царство: базовое царство путь: / путь / к / htpasswd
Опция
auth
- опционально .Возможные поставщики аутентификации включают:Вы можете настроить только одного поставщика аутентификации.
глупый
Глупый провайдер аутентификации
Authorization
в HTTP-запросе. Это не проверьте значение заголовка. Если заголовок не существует,глупый
auth отвечает ответом на вызов, повторяя область, службу и область действия для которого было отказано в доступе.Для настройки ответа используются следующие значения:
Параметр Требуется Описание область
да Область, в которой выполняется проверка подлинности сервера реестра. сервис
да Служба аутентифицируется. жетон
Аутентификация на основе токенов позволяет отделить систему аутентификации от реестр.Это устоявшаяся парадигма аутентификации с высокой степенью безопасность.
Параметр Требуется Описание область
да Область, в которой выполняется проверка подлинности сервера реестра. сервис
да Служба аутентифицируется. эмитент
да Название эмитента токена.Эмитент вставляет это в токен, поэтому он должен соответствовать значению, настроенному для эмитента. rootcertbundle
да Абсолютный путь к набору корневых сертификатов. Этот пакет содержит открытую часть сертификатов, используемых для подписи токенов аутентификации. автопереадресация
№ Если установлено значение true
, область/ auth / token /
Для получения дополнительной информации о конфигурации аутентификации на основе токенов см. Технические характеристики.
htpasswd
htpasswd аутентификация с поддержкой позволяет настроить базовую аутентификация с использованием Файл Apache htpasswd. Единственный поддерживаемый формат пароля:
бкрипт
. Записи с другими типами хешей игнорируются. Файлhtpasswd
загружается один раз при запуске. Если файл недействителен, реестр отобразит ошибку и не запустится.Предупреждение : Если файл
htpasswd
отсутствует, файл будет создан и снабжен пользователем по умолчанию и автоматически сгенерированным паролем.Пароль будет выведен на стандартный вывод.Предупреждение : используйте только схему аутентификации
htpasswd
с TLS настроен, поскольку базовая аутентификация отправляет пароли как часть HTTP заголовок.Параметр Требуется Описание область
да Область, в которой выполняется проверка подлинности сервера реестра. путь
да Путь к файлу htpasswd
для загрузки при запуске.промежуточное ПО
Структура промежуточного программного обеспечения
.Интерфейс пространства имен
, в то время как промежуточное ПО репозитория должно реализовывать Дистрибутив. Репозиторий
и промежуточное ПО хранилища должны реализовывать Драйвер. StorageDriver
.Это пример конфигурации промежуточного программного обеспечения
cloudfront
, хранилища промежуточное ПО:промежуточное ПО: реестр: - имя: ARegistryMiddleware параметры: foo: bar репозиторий: - имя: ARepositoryMiddleware параметры: foo: bar место хранения: - имя: cloudfront параметры: baseurl: https: // my.cloudfronted.domain.com/ частный ключ: / путь / к / pem keypairid: cloudfrontkeypairid продолжительность: 3000с ipfilteredby: awsregion awsregion: us-east-1, use-east-2 частота обновления: 12ч iprangesurl: https://ip-ranges.amazonaws.com/ip-ranges.json
Каждая запись промежуточного программного обеспечения имеет
имя
и опцииПоле
- это карта с подробными сведениями о настраиваемой конфигурации, необходимой для инициализировать промежуточное ПО.Он рассматривается как интерфейсmap [строка] {}
. Как таковой, он поддерживает любые желаемые интересные структуры, оставляя это на усмотрение промежуточного программного обеспечения функция инициализации, чтобы лучше всего определить, как обращаться с конкретными интерпретация вариантов.облачный интерфейс
Параметр Требуется Описание baseurl
да СХЕМА : // HOST [/ PATH]
, на которой обслуживается Cloudfront.частный ключ
да Закрытый ключ для Cloudfront, предоставленный AWS. keypairid
да Идентификатор пары ключей, предоставленный AWS. продолжительность
№ Целое число и единица измерения продолжительности сеанса Cloudfront. Допустимые единицы времени: нс
,мкс
(илимкс
),мс
,с
,м
илич
.Например,3000 с
допустимо, а3000 с
- нет. Если вы не укажете продолжительность20 м
(20 минут).IP-фильтр по
№ Строка со следующим значением: none
,aws
илиawsregion
.awsregion
№ Разделенная запятыми строка регионов AWS, доступна только в том случае, если ipfilteredby
равноawsregion
.Например,us-east-1, us-west-2
частота обновления
№ Частота обновления IP-регионов AWS, по умолчанию: 12 ч
iprangesurl
№ URL-адрес содержит информацию о диапазонах IP-адресов AWS, по умолчанию: https://ip-ranges.amazonaws.com/ip-ranges.json
Значение
ipfilteredby
может быть:Значение Описание нет
по умолчанию, не фильтровать по IP AWS
IP от AWS переходит на S3 напрямую awsregion
из определенных регионов AWS направляется напрямую в S3, используется вместе с awsregion
.перенаправление
Вы можете использовать промежуточное программное обеспечение хранилища
redirect
, чтобы указать настраиваемый URL-адрес для расположение прокси для уровня, хранимого драйвером хранилища S3.Параметр Требуется Описание baseurl
да СХЕМА: // ХОЗЯИН
, на котором обслуживаются слои.Также может содержать порт. Например,https://example.com:5443
.отчетность
сообщение: ошибка: apikey: bugsnagapikey стадия выпуска: bugsnagreleasestage конечная точка: bugsnagendpoint newrelic: лицензионный ключ: newrelicensekey имя: newrelicname многословный: правда
Опция
создания отчетов
- это опционально и настраивает ошибки и показатели. инструменты отчетности. На данный момент поддерживаются только две услуги:Допустимая конфигурация может содержать и то, и другое.
ошибка
Параметр Требуется Описание апики
да Ключ API, предоставленный Bugsnag. стадия выпуска
№ Отслеживает, где развернут реестр, используя строку типа production
,staging
илиdevelopment
.конечная точка
№ Корпоративная конечная точка Bugsnag. newrelic
Параметр Требуется Описание лицензионный ключ
да Лицензионный ключ, предоставленный New Relic. имя
№ Имя приложения New Relic. подробный
№ Установите значение true
, чтобы включить вывод отладки New Relic наstdout
.http
http: адрес: localhost: 5000 сеть: tcp префикс: / мой / вложенный / реестр / хост: https://myregistryaddress.org:5000 secret: asecretforlocaldevelopment relativeurls: false время слива: 60 с tls: сертификат: / путь / к / x509 / общедоступный ключ: / путь / к / x509 / private clientcas: - / путь / к / ca.pem - /path/to/another/ca.pem минимум tls: tls1.2 шифровальные наборы: - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 letsencrypt: cachefile: / путь / к / кеш-файлу электронная почта: [email protected] хосты: [myregistryaddress.org] отлаживать: адрес: localhost: 5001 заголовки: Параметры X-Content-Type: [nosniff] http2: отключено: ложь
Параметр
http
детализирует конфигурацию HTTP-сервера, на котором размещается реестр.Параметр Требуется Описание адрес
да Адрес, для которого сервер должен принимать соединения. Форма зависит от типа сети (см. Опцию net
). ИспользуйтеHOST: PORT
для TCP иFILE
для сокета UNIX.нетто
№ Сеть, используемая для создания прослушивающего сокета.Известные сети: unix
иtcp
.префикс
№ Если сервер не работает по корневому пути, установите для него значение префикса. Корневой путь - это раздел до v2
. Для этого требуются как предшествующие, так и завершающие слэши, например, в примере/ path /
.хост
№ Полный URL-адрес для внешнего адреса реестра.Если присутствует, он используется при создании сгенерированных URL-адресов. В противном случае эти URL-адреса являются производными от клиентских запросов. секрет
№ Случайный фрагмент данных, используемый для подписи состояния, который может храниться у клиента для защиты от подделки. Для производственных сред вы должны сгенерировать случайный фрагмент данных с помощью криптографически безопасного генератора случайных чисел. Если вы опустите секрет, реестр автоматически сгенерирует секрет при запуске. Если вы создаете кластер реестров за балансировщиком нагрузки, вы ДОЛЖНЫ обеспечить одинаковый секрет для всех реестров. relativeurls
№ Если true
, реестр возвращает относительные URL-адреса в заголовках Location. Клиент несет ответственность за разрешение правильного URL-адреса. Эта опция несовместима с Docker 1.7 и более ранними версиями.истечение времени истечения
№ Время ожидания истощения HTTP-соединений перед завершением работы после получения реестром сигнала SIGTERM TLS
Структура
tls
вhttp
: (необязательно) .Используйте это для настройки TLS для сервера. Если у вас уже есть веб-сервер, работающий на тот же хост, что и реестр, вы можете настроить TLS на этом веб-сервере и прокси-соединения с сервером реестра.Параметр Требуется Описание сертификат
да Абсолютный путь к файлу сертификата x509. ключ
да Абсолютный путь к файлу закрытого ключа x509. clientcas
№ Массив абсолютных путей к файлам CA x509. минимум
№ Минимальная допустимая версия TLS (tls1.0, tls1.1, tls1.2, tls1.3). По умолчанию tls1.2 шифровальных наборов
№ Разрешенокомплектов шифров. Пожалуйста, смотрите ниже допустимые значения и значения по умолчанию. Доступные наборы шифров:
- TLS_RSA_WITH_RC4_128_SHA
- TLS_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_128_GCM_SHA256
- TLS_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_RSA_WITH_RC4_128_SHA
- TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
Наборы шифров по умолчанию:
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_AES_128_GCM_SHA256
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_256_GCM_SHA384
letsencrypt
Структура
letsencrypt
вTLS
- (необязательно) .Используйте это для настройки Сертификаты TLS, предоставленные Давайте зашифровать.ПРИМЕЧАНИЕ : При использовании Let's Encrypt убедитесь, что внешний адрес доступный через порт
443
. По умолчанию реестр прослушивает порт5000
. Если вы запускаете реестр как контейнер, рассмотрите возможность добавления флага-p 443: 5000
в докерезапустите команду
или аналогичную настройку в облаке конфигурация. Вы также должны установить опциюhosts
в список имен хостов. которые действительны для этого реестра, чтобы избежать попыток получить сертификаты для случайных имена хостов из-за подключения злонамеренных клиентов с поддельными именами хостов SNI.Параметр Требуется Описание файл кэша
да Абсолютный путь к файлу, в котором агент Let’s Encrypt может кэшировать данные. электронная почта
да Адрес электронной почты, который использовался для регистрации в Let’s Encrypt. хостов
№ Имена хостов, разрешенные для сертификатов Let's Encrypt. отладка
Опция отладки
Раздел отладки
addr
, который указываетHOST: PORT
, на котором сервер отладки должен принимать соединения.Прометей
Опция
prometheus
определяет, включена ли также метрика Prometheus как путь к метрикам.Параметр Требуется Описание включено
№ Установите true
, чтобы включить сервер Prometheusпуть
№ Путь для доступа к метрикам, / метрики
по умолчаниюURL-адрес для доступа к метрикам:
HOST: PORT / path
, где определеноHOST: PORT
вадрес
под отладкойЗаголовки
Опция
- опционная . Используйте его, чтобы указать заголовки, которые HTTP сервер должен включать в ответы. Это можно использовать для заголовков безопасности, таких как какStrict-Transport-Security
.Параметр
заголовков
должен содержать параметр для каждого включаемого заголовка, где имя параметра - это имя заголовка, а значение параметра - список значения полезной нагрузки заголовка.Включая
X-Content-Type-Options: [nosniff]
рекомендуется, чтобы браузеры не будут интерпретировать контент как HTML, если они направлены на загрузку страницы из реестр.Этот заголовок включен в пример файла конфигурации.http2
Структура
http2
вhttp
: (необязательно) . Используйте это для управления http2 настройки для реестра.Параметр Требуется Описание отключен
№ Если true
, то поддержкаhttp2
отключена.уведомления
уведомления: События: includereferences: правда конечные точки: - имя: слушатель отключено: ложь URL: https://my.listener.com/event заголовки:
тайм-аут: 1 с порог: 10 отсрочка: 1 с игнорируемые промежуточные типы: - приложение / октет-поток игнорировать: медиатипы: - приложение / октет-поток действия: - тянуть Опция уведомлений - , необязательная , и в настоящее время может содержать один вариант,
конечные точки
.конечных точек
Конечные точки
Структура
содержит список именованных служб (URL-адресов), которые могут принимать уведомления о событиях.Параметр Требуется Описание имя
да Название службы, удобочитаемое для человека. отключены
№ Если true
, уведомления для службы отключены.url
да URL-адрес, по которому должны публиковаться события. заголовки
да Список статических заголовков, добавляемых к каждому запросу. Имя каждого заголовка является ключом ниже заголовков
, и каждое значение представляет собой список полезных данных для этого имени заголовка. Значения всегда должны быть списками.таймаут
да Значение тайм-аута HTTP.Положительное целое число и необязательный суффикс, указывающий единицу времени, который может быть нс
,мс
,мс
,с
,м
илич
. Если вы не укажете единицу времени, будет использованонс
.порог
да Целое число, указывающее, как долго ждать, прежде чем откатить сбой. отсрочка
да Как долго система отключается перед повторной попыткой после сбоя.Положительное целое число и необязательный суффикс, указывающий единицу времени, который может быть нс
,мс
,мс
,с
,м
илич
. Если вы не укажете единицу времени, будет использованонс
.игнорируемые промежуточные типы
№ Список целевых типов мультимедиа, которые следует игнорировать. События с этими целевыми типами мультимедиа не публикуются в конечной точке. игнорировать
№ События с этими типами медиа или действиями не публикуются в конечной точке. игнорировать
| Параметр | Обязательно | Описание | | ----------- | ---------- | -------------------------- ----------------------------- | |
mediatypes
| нет | Список целевых типов мультимедиа, которые следует игнорировать. События с этими целевыми типами мультимедиа не публикуются в конечной точке. | |действия
| нет | Список игнорируемых действий. События с этими действиями не публикуются в конечной точке.|событий
Структура событий
Параметр Требуется Описание включить ссылки
№ Если истинно
, включить справочную информацию в события манифеста.redis
redis: адрес: localhost: 6379 пароль: asecret дБ: 0 dialtimeout: 10 мсек время чтения: 10 мс время ожидания записи: 10 мс бассейн: максидл: 16 макс. активность: 64 простоя: 300 с
Объявите параметры для создания соединений
redis
.Экземпляры реестра может использовать экземпляр Redis для нескольких приложений. В настоящее время кеширует информация о неизменяемых BLOB-объектах. Большинство опцийredis
контролируют как реестр подключается к экземпляруredis
. Вы можете контролировать бассейн поведение с подразделом пула.Вы должны настроить Redis с политикой выселения allkeys-lru , потому что реестр не устанавливает срок действия ключей.
Параметр Требуется Описание адрес
да Адрес (хост и порт) экземпляра Redis. пароль
№ Пароль, используемый для аутентификации в экземпляре Redis. дБ
№ Имя базы данных, используемой для каждого подключения. тайм-аут
№ Тайм-аут для подключения к экземпляру Redis. время ожидания чтения
№ Тайм-аут чтения из экземпляра Redis. время ожидания записи
№ Тайм-аут для записи в экземпляр Redis. бассейн
бассейн: максидл: 16 макс. активность: 64 простоя: 300 с
Используйте эти параметры для настройки поведения пула соединений Redis.
Параметр Требуется Описание макс.
№ Максимальное количество незанятых соединений в пуле. макс. Актив
№ Максимальное количество подключений, которые могут быть открыты до блокировки запроса на подключение. простоя
№ Как долго ждать перед закрытием неактивных соединений. здоровье
здоровья: Storagedriver: включен: правда интервал: 10 с порог: 3 файл: - файл: / путь / к / проверенному / файлу интервал: 10 с http: - uri: http: // server.to.check / must / return / 200 заголовки: Авторизация: [Базовая QWxhZGRpbjpvcGVuIHNlc2FtZQ ==] код состояния: 200 тайм-аут: 3 с интервал: 10 с порог: 3 tcp: - адрес: redis-server.domain.com:6379 тайм-аут: 3 с интервал: 10 с порог: 3
Параметр работоспособности - , необязательный , и содержит настройки для периодического проверка работоспособности внутреннего хранилища драйвера хранилища, а также дополнительная периодические проверки локальных файлов, HTTP URI и / или TCP-серверов.Результат проверки работоспособности доступны в конечной точке
/ debug / health
при отладке HTTP-сервер, если включен отладочный HTTP-сервер (см. Раздел http).накопитель
Структура
storagedriver
содержит параметры для проверки работоспособности на внутреннее хранилище настроенного драйвера хранилища. Проверка работоспособности только активна когдавключен,
устанавливается наистинно
.Параметр Требуется Описание включено
да Установите значение true
, чтобы включить проверки работоспособности драйвера хранилища, илиfalse
, чтобы отключить их.интервал
№ Как долго ждать между повторениями проверки работоспособности драйвера запоминающего устройства. Положительное целое число и необязательный суффикс, указывающий единицу времени. Суффикс может быть одним из нс
,мс
,мс
,с
,м
илич
. По умолчанию10 с
, если значение не указано. Если вы указываете значение, но опускаете суффикс, значение интерпретируется как количество наносекунд.порог
№ Положительное целое число, которое представляет, сколько раз проверка должна завершиться неудачно, прежде чем состояние будет помечено как неработоспособное. Если не указано иное, единичный сбой отмечает состояние как нездоровое. файл
Структура файла
Параметр Требуется Описание файл
да Путь для проверки существования файла. интервал
№ Как долго ждать перед повторной проверкой. Положительное целое число и необязательный суффикс, указывающий единицу времени.Суффикс может быть одним из нс
,мс
,мс
,с
,м
илич
. По умолчанию10 с
, если значение не указано. Если вы указываете значение, но опускаете суффикс, значение интерпретируется как количество наносекунд.http
Структура
http
включает список HTTP URI для периодической проверкиHEAD
запросов. Если запросHEAD
не завершается или возвращает неожиданный код состояния, проверка работоспособности завершится ошибкой.Параметр Требуется Описание uri
да URI для проверки. заголовки
№ Статические заголовки для добавления к каждому запросу. Имя каждого заголовка является ключом ниже заголовков
, и каждое значение представляет собой список полезных данных для этого имени заголовка. Значения всегда должны быть списками.код состояния
№ Ожидаемый код состояния из HTTP URI. По умолчанию 200
.таймаут
№ Как долго ждать, прежде чем истечет время ожидания HTTP-запроса. Положительное целое число и необязательный суффикс, указывающий единицу времени. Суффикс может быть одним из нс
,мс
,мс
,с
,м
илич
.Если вы указываете значение, но опускаете суффикс, значение интерпретируется как количество наносекунд.интервал
№ Как долго ждать перед повторной проверкой. Положительное целое число и необязательный суффикс, указывающий единицу времени. Суффикс может быть одним из нс
,мс
,мс
,с
,м
илич
. По умолчанию10 с
, если значение не указано. Если вы указываете значение, но опускаете суффикс, значение интерпретируется как количество наносекунд.порог
№ Сколько раз проверка должна завершиться неудачно, прежде чем состояние будет помечено как неработоспособное. Если это поле не указано, единичный сбой помечает состояние как неработоспособное. tcp
Структура
tcp
включает список TCP-адресов для периодической проверки с помощью Попытки TCP-соединения. Адреса должны включать номера портов. Если подключение попытка не удалась, проверка работоспособности завершится ошибкой.Параметр Требуется Описание адрес
да TCP-адрес и порт для подключения. таймаут
№ Как долго ждать до истечения тайм-аута TCP-соединения. Положительное целое число и необязательный суффикс, указывающий единицу времени. Суффикс может быть одним из нс
,мс
,мс
,с
,м
илич
.Если вы указываете значение, но опускаете суффикс, значение интерпретируется как количество наносекунд.интервал
№ Как долго ждать между повторениями проверки. Положительное целое число и необязательный суффикс, указывающий единицу времени. Суффикс может быть одним из нс
,мс
,мс
,с
,м
илич
. По умолчанию10 с
, если значение не указано.Если вы указываете значение, но опускаете суффикс, значение интерпретируется как количество наносекунд.порог
№ Сколько раз проверка должна завершиться неудачно, прежде чем состояние будет помечено как неработоспособное. Если это поле не указано, единичный сбой помечает состояние как неработоспособное. прокси
прокси: remoteurl: https://registry-1.docker.io имя пользователя: [имя пользователя] пароль: [пароль]
Структура прокси-сервера
Параметр Требуется Описание remoteurl
да URL-адрес репозитория в Docker Hub. имя пользователя
№ Имя пользователя, зарегистрированное в Docker Hub, у которого есть доступ к репозиторию. пароль
№ Пароль, используемый для аутентификации в Docker Hub с использованием имени пользователя, указанного в username
.Чтобы включить извлечение частных репозиториев (например,
batman / robin
), укажите имя пользователя (например,batman
) и пароль для этого имени пользователя.Примечание : Эти частные репозитории хранятся в хранилище прокси-кеша.Примите соответствующие меры для защиты доступа к кешу прокси.
Совместимость
совместимость: schema1: файл подписи: /etc/registry/key.json включен: правда
Используйте структуру , совместимую с
, для настройки обработки старых и устаревших Особенности. Каждый подраздел определяет такую функцию с настраиваемым поведением.
схема1
69b92a3: Ожидание ошибка синтаксического анализа тела ответа HTTP 403: неожиданный конец ввода JSON: ""Параметр Требуется Описание файл ключа подписи
№ Закрытый ключ подписи, используемый для добавления подписей к манифестам схемы 1
.https?: // www \ .example \ .com /отключен
Флаг
disabled
отключает другие параметры в проверке, включенный
.манифесты
Используйте подраздел
манифесты
для настройки проверки манифестов. Еслиотключено
-false
, проверка ничего не позволяет.URL
Опции
разрешить
изапретить
- это список регулярные выражения, которые ограничивают URL-адреса в толкаемые манифесты.Если
allow
не задано, отправка манифеста, содержащего URL-адреса, не выполняется.Если
разрешить
установлено, отправка манифеста будет успешной только в том случае, если все URL-адреса совпадают. одно изразрешает
регулярных выражений и одно из следующих значений:-
deny
не настроено. -
deny
установлен, но ни один URL в манифесте не соответствует ни одному изdeny
обычных выражения.
Пример: конфигурация разработки
Вы можете использовать этот простой пример для локальной разработки:
версия: 0.1 бревно: уровень: отладка место хранения: файловая система: корневой каталог: / var / lib / registry http: адрес: localhost: 5000 secret: asecretforlocaldevelopment отлаживать: адрес: localhost: 5001
В этом примере выполняется настройка экземпляра реестра для работы на порту
5000
с привязкой кlocalhost
, с включенным сервером отладки/ var / lib / registry
каталог. Для ведения журнала установлен режим отладкиСм. config-example.yml для другой простой конфигурации. Оба примера обычно полезны для местных разработка.
Пример: конфигурация промежуточного программного обеспечения
В этом примере настраивается Amazon Cloudfront. как промежуточное ПО хранения в реестре. Промежуточное ПО позволяет реестру обслуживать уровни через сеть доставки контента (CDN). Это сокращает количество запросов к слой хранения.
Cloudfront требуется драйвер хранилища S3.
Это конфигурация, выраженная в YAML:
промежуточное ПО: место хранения: - имя: cloudfront отключено: ложь параметры: baseurl: http: // d111111abcdef8.cloudfront.net частный ключ: /path/to/asecret.pem keypairid: asecret Продолжительность: 60 с
Дополнительные сведения см. В справочнике по настройке Cloudfront. информация о параметрах конфигурации.
реестр, локально, образы, теги, репозиторий, распространение, конфигурацияПримечание : ключи Cloudfront существуют отдельно от других ключей AWS. Видеть документация по учетным данным AWS для дополнительной информации.
GitLab Container Registry Administration | GitLab
С помощью реестра контейнеров GitLab каждый проект может иметь свой собственное пространство для хранения образов Docker.
Подробнее о реестре Docker читайте в документации Docker.
Этот документ является руководством администратора. Чтобы узнать, как использовать GitLab Container Реестр, см. Документацию пользователя.
Включить реестр контейнеров
Установка Omnibus GitLab
Если вы установили GitLab с помощью установочного пакета Omnibus, Реестр контейнеров могут быть доступны или недоступны по умолчанию.
Реестр контейнеров автоматически включается и доступен в вашем домене GitLab, порт 5050, если:
В противном случае Реестр контейнеров не включен.Чтобы включить его:
Реестр контейнеров по умолчанию работает по протоколу HTTPS. Вы можете использовать HTTP но это не рекомендуется и выходит за рамки этого документа. Прочтите документацию по небезопасному реестру если вы хотите это реализовать.
Установки из исходников
Если вы установили GitLab из исходников:
- Реестр необходимо установить самостоятельно.
- После завершения установки, чтобы включить ее, необходимо настроить параметры реестра.
настройки в
gitlab.yml
. - Используйте образец файла конфигурации NGINX из-под
lib / support / nginx / registry-ssl
и отредактируйте его, чтобы он соответствовалхост
,порт
и пути сертификата TLS.
Содержимое
gitlab.yml
: Реестр: включен: правда хост: registry.gitlab.example.com порт: 5005 api_url: http: // localhost: 5000 / ключ: config / registry.key путь: общий / реестр эмитент: gitlab-эмитент
Где:
Параметр Описание включено
истинно
илиложно
.Включает реестр в GitLab. По умолчанию этоfalse
.хост
URL-адрес хоста, под которым работает Реестр и пользователи могут его использовать. порт
Порт, который прослушивает внешний домен реестра. api_url
Внутренний URL-адрес API, под которым доступен реестр. По умолчанию это http: // localhost: 5000
. Не изменяйте это, если вы не настраиваете внешний реестр Docker.ключ
Расположение закрытого ключа, которое представляет собой пару rootcertbundle реестра . Прочтите документацию по настройке аутентификации токена.
путь
Это должен быть тот же каталог, что и указанный в корневом каталоге реестра
. Прочтите документацию по конфигурации хранилища. Этот путь должен быть доступен для чтения пользователю GitLab, пользователю веб-сервера и пользователю реестра. Дополнительные сведения см. В разделе # configure-storage-for-the-container-registry.эмитент
Это должно быть то же значение, которое настроено в эмитента реестра
. Прочтите документацию по настройке аутентификации токена.Файл инициализации реестра не поставляется с GitLab, если вы устанавливаете его из исходного кода. Следовательно, перезапуск GitLab не приводит к перезапуску реестра. вы изменяете его настройки. Прочтите исходную документацию о том, как этого добиться.
При абсолютном минимуме убедитесь, что конфигурация вашего реестра имеет
container_registry
в качестве службы иhttps: // gitlab.example.com/jwt/auth
как царство:авторизация: токен: область: https://gitlab.example.com/jwt/auth сервис: container_registry эмитент: gitlab-эмитент rootcertbundle: / корень / сертификаты / certbundle
Если
Конфигурация домена реестра контейнеровauth
не настроен, пользователи могут извлекать образы Docker без аутентификации.Существует два способа настройки внешнего домена реестра. Или:
Поскольку для реестра контейнеров требуется сертификат TLS, стоимость может иметь значение.
Примите это во внимание перед настройкой реестра контейнеров. в первый раз.
Настроить реестр контейнеров в существующем домене GitLab
Если реестр настроен на использование существующего домена GitLab, вы можете Реестр выставь на порт. Таким образом, вы можете повторно использовать существующий GitLab TLS сертификат.
Если домен GitLab -
https://gitlab.example.com
, а порт для внешнего мира -5050
, то вам нужно установить вgitlab.rb
илиgitlab.yml
, если вы используете Omnibus GitLab или установлен GitLab из исходников соответственно.Убедитесь, что вы выбрали порт, отличный от того, который прослушивает реестр (по умолчанию
5000
), в противном случае возникают конфликты.Установка Omnibus GitLab
Ваш
/etc/gitlab/gitlab.rb
должен содержать URL-адрес реестра, а также путь к существующему сертификату TLS и ключу, используемому GitLab:registry_external_url 'https: // gitlab.example.com:5050 '
registry_external_url
прослушивает HTTPS под существующий URL-адрес GitLab, но на другом порту.Если ваш сертификат TLS отсутствует в
/etc/gitlab/ssl/gitlab.example.com.crt
и ключ не в/etc/gitlab/ssl/gitlab.example.com.key
раскомментируйте строки ниже:registry_nginx ['ssl_certificate'] = "/path/to/certificate.pem" registry_nginx ['ssl_certificate_key'] = "/ путь / к / сертификату.ключ"
Сохраните файл и перенастройте GitLab чтобы изменения вступили в силу.
Подтвердить, используя:
openssl s_client -showcerts -servername gitlab.example.com -connect gitlab.example.com:5050> cacert.pem
Если ваш поставщик сертификатов предоставляет сертификаты CA Bundle, добавьте их в файл сертификата TLS.
Администратор может захотеть, чтобы реестр контейнеров прослушивал произвольный порт, например
5678
.Однако реестр и сервер приложений находятся за балансировщиком нагрузки приложений AWS, который только слушает порты80
и443
. Администратор может просто удалить номер порта дляregistry_external_url
, поэтому предполагается HTTP или HTTPS. Затем применяются правила, отображающие нагрузку балансировщик в реестр с портов80
или443
на произвольный порт. Это важно, если пользователи полагайтесь на пример для входа в докер в реестре контейнеров.Вот пример:registry_external_url 'https://registry-gitlab.example.com' registry_nginx ['redirect_http_to_https'] = правда registry_nginx ['listen_port'] = 5678
Установок из исходников
Откройте
Реестр/home/git/gitlab/config/gitlab.yml
, найдите запись реестра и настройте его со следующими параметрами:: включен: правда хост: gitlab.example.com порт: 5050
- Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
- Внесите соответствующие изменения и в NGINX (домен, порт, путь сертификатов TLS).
Теперь пользователи должны иметь возможность входить в Реестр контейнеров с помощью своего GitLab. учетные данные с использованием:
вход в докер gitlab.example.com:5050
Настроить реестр контейнеров в собственном домене
Когда реестр настроен на использование собственного домена, вам понадобится TLS сертификат для этого конкретного домена (например,
registry.example.com
). Вам может понадобиться подстановочный сертификат, если он размещен в субдомене вашего существующего GitLab домен, напримерregistry.gitlab.example.com
.Помимо сертификатов SSL, сгенерированных вручную (объяснение здесь), сертификаты автоматически сгенерированные Let’s Encrypt также поддерживаются в установках Omnibus.
Предположим, вы хотите, чтобы реестр контейнеров был доступен по адресу
https://registry.gitlab.example.com
.Установка Omnibus GitLab
Поместите свой сертификат TLS и ключ в
/ и т.д. / gitlab / ssl / registry.gitlab.example.com.crt
и/etc/gitlab/ssl/registry.gitlab.example.com.key
и убедитесь, что у них есть правильные разрешения:chmod 600 /etc/gitlab/ssl/registry.gitlab.example.com.*
После установки сертификата TLS отредактируйте
/etc/gitlab/gitlab.rb
с помощью:registry_external_url 'https://registry.gitlab.example.com'
registry_external_url
прослушивает HTTPS.Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Если у вас есть групповой сертификат, вы должны указать путь к сертификат в дополнение к URL-адресу, в данном случае
/etc/gitlab/gitlab.rb
похоже:registry_nginx ['ssl_certificate'] = "/etc/gitlab/ssl/certificate.pem" registry_nginx ['ssl_certificate_key'] = "/etc/gitlab/ssl/certificate.key"
Установок из исходников
Откройте
Реестр/ home / git / gitlab / config / gitlab.yml
, найдите в реестрезапись
и настройте его со следующими параметрами:: включен: правда хост: registry.gitlab.example.com
- Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
- Внесите соответствующие изменения и в NGINX (домен, порт, путь сертификатов TLS).
Теперь пользователи должны иметь возможность входить в Реестр контейнеров с помощью GitLab. реквизиты для входа:
реестр входа в докер.gitlab.example.com
Отключить реестр контейнеров для всего сайта
При отключении реестра, выполнив следующие действия, вы не удалите все существующие образы Docker. Этим занимается Само приложение реестра.
Омнибус GitLab
Откройте
Реестр/etc/gitlab/gitlab.rb
и установите реестр['enable'] с
наfalse
:['enable'] = false
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Установки из источника
Откройте
/home/git/gitlab/config/gitlab.yml
, найдите запись реестра и установитьвключено
наfalse
:Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
Отключить реестр контейнеров для новых проектов по всему сайту
Если Реестр контейнеров включен, он должен быть доступен на всех новых проекты.Чтобы отключить эту функцию и позволить владельцам проекта включить Реестр контейнеров самостоятельно, выполните следующие действия.
Установка Omnibus GitLab
Отредактируйте
/etc/gitlab/gitlab.rb
и добавьте следующую строку:gitlab_rails ['gitlab_default_projects_features_container_registry'] = ложь
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Установки из источника
Откройте
/ home / git / gitlab / config / gitlab.yml
, найдитеdefault_projects_features
запись и настройте его так, чтобы дляcontainer_registry
было присвоено значениеfalse
:## Настройки функций проекта по умолчанию default_projects_features: вопросы: правда merge_requests: правда вики: правда фрагменты: false строит: правда container_registry: ложь
Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
Настроить хранилище для реестра контейнеров
примечаниеДля поддерживающих его механизмов хранения вы можете использовать управление версиями объектов для сохранения, извлечения и восстанавливать устаревшие версии каждого объекта, хранящегося в ваших корзинах.Однако это может привести к более высокое использование хранилища и затраты. Из-за того, как работает реестр, загруженные изображения сначала сохраняются в временный путь, а затем перенесен в окончательное место. Для бэкэндов объектного хранилища, включая S3 и GCS, эта передача достигается копированием с последующим удалением. При включенном управлении версиями объекта эти удаленные временные артефакты загрузки сохраняются как устаревшие версии, поэтому увеличивается размер ведра для хранения. Чтобы гарантировать удаление устаревших версий по истечении заданного времени, вам следует настроить политику жизненного цикла объекта с вашим поставщиком хранилища.
Вы можете настроить реестр контейнеров для использования различных бэкэндов хранения, настройка драйвера хранилища. По умолчанию реестр контейнеров GitLab настроен на использование драйвера файловой системы конфигурация.
Поддерживаются следующие драйверы:
Драйвер Описание файловая система
Использует путь в локальной файловой системе лазурный
Хранилище больших двоичных объектов Microsoft Azure gcs
Google Cloud Storage s3
Amazon Simple Storage Service.Обязательно настройте сегмент хранилища с правильными областями разрешений S3. Свифт
Хранилище объектов OpenStack Swift oss
Алиюн ОСС Хотя большинство служб, совместимых с S3 (например, MinIO), должны работать с реестром контейнеров, мы гарантируем поддержку только AWS S3. Поскольку мы не можем утверждать правильность сторонних реализаций S3, мы можем отлаживать проблемы, но мы не можем исправлять реестр, если проблема не воспроизводится в сегменте AWS S3.
Подробнее о параметрах конфигурации отдельных драйверов в Документы Docker Registry.
Использовать файловую систему
Если вы хотите хранить изображения в файловой системе, вы можете изменить хранилище путь к Реестру контейнеров, выполните следующие действия.
Этот путь доступен:
- Пользователь, запускающий демон реестра контейнеров.
- Пользователь, работающий с GitLab.
Все пользователи GitLab, реестра и веб-сервера должны иметь доступ к этому каталогу.
Установка Omnibus GitLab
По умолчанию изображения хранятся в Омнибусе.
/ var / opt / gitlab / gitlab-rails / shared / registry
. Чтобы изменить это:Изменить
/etc/gitlab/gitlab.rb
:gitlab_rails ['registry_path'] = "/ путь / к / реестру / хранилищу"
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Установки из источника
По умолчанию изображения хранятся в исходных установках.
/ дом / гит / гитлаб / общий / реестр
.Чтобы изменить это:Откройте
Реестр/home/git/gitlab/config/gitlab.yml
, найдите запись реестра и измените параметрpath
:: путь: общий / реестр
Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
Использовать хранилище объектов
Если вы хотите хранить изображения в хранилище объектов, вы можете изменить хранилище драйвер для реестра контейнеров.
Подробнее об использовании объектного хранилища с GitLab.
cautionGitLab не выполняет резервное копирование образов Docker, которые не хранятся на файловая система. Включите резервное копирование с помощью поставщика хранилища объектов, если желанный.
Установка Omnibus GitLab
Чтобы настроить драйвер хранилища
s3
в Омнибусе:Изменить
Реестр/etc/gitlab/gitlab.rb
:['storage'] = { 's3' => { 'accesskey' => 's3-access-key', 'secretkey' => 's3-secret-key-for-access-key', 'bucket' => 'your-s3-bucket', 'region' => 'your-s3-region', 'regionendpoint' => 'your-s3-regionendpoint' } }
Чтобы избежать использования статических учетных данных, используйте Роль IAM и опустите ключ доступа
Реестр['storage'] = { 's3' => { 'bucket' => 'your-s3-bucket', 'регион' => 'ваш-s3-регион' } }
При использовании с конечной точкой AWS S3 VPC, затем установите
Реестрregionendpoint
на адрес конечной точки VPC и установите дляpath_style
значение false:['storage'] = { 's3' => { 'accesskey' => 's3-access-key', 'secretkey' => 's3-secret-key-for-access-key', 'bucket' => 'your-s3-bucket', 'region' => 'your-s3-region', 'regionendpoint' => 'your-s3-vpc-endpoint', 'path_style' => ложь } }
-
regionendpoint
требуется только при настройке S3-совместимой службы, такой как MinIO или при использовании конечной точки AWS S3 VPC. -
your-s3-bucket
должно быть именем существующей корзины и не может включать подкаталоги. -
path_style
должно быть установлено значение true, чтобы использовать пути стиляhost / bucket_name / object
вместоbucket_name.host/object
. Установите значение false для AWS S3.
-
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Установки из источника
Настройка драйвера хранилища выполняется в созданном файле конфигурации реестра YML. когда вы развернули реестр Docker.
s3
пример драйвера хранилища:склад: s3: accesskey: 's3-access-key' # Не требуется, если используется роль IAM secretkey: 's3-secret-key-for-access-key' # Не требуется, если используется роль IAM ведро: 'ваше-s3-ведро' регион: 'ваш-s3-регион' regionendpoint: 'ваш-s3-regionendpoint' кеш: blobdescriptor: inmemory удалять: включен: правда
your-s3-bucket
должно быть именем существующей корзины и не может включать подкаталоги.Перенести в хранилище объектов без простоев
Чтобы перенести хранилище без остановки реестра контейнеров, установите реестр контейнеров. в режим только для чтения. В больших случаях для этого может потребоваться Реестр контейнеров. какое-то время находиться в режиме только для чтения. В течение этого времени, вы можете извлечь из реестра контейнеров, но не можете отправить.
- Необязательно: Чтобы уменьшить объем переносимых данных, запустите средство сборки мусора без простоя.
В этом примере используется
aws
CLI.Если вы не настроили Раньше через интерфейс командной строки вам нужно было настроить свои учетные данные, запустив командуsudo aws configure
. Поскольку пользователь, не являющийся администратором, скорее всего, не сможет получить доступ к папке реестра контейнеров, убедитесь, что вы используетеsudo
. Чтобы проверить конфигурацию учетных данных, запуститеls
в список все ковши.sudo aws --endpoint-url https://your-object-storage-backend.com s3 ls
Если вы используете AWS в качестве серверной части, вам не нужен
--endpoint-url
.Скопируйте исходные данные в корзину S3, например, с помощью интерфейса командной строки
aws
cp
илисинхронизация
команда. Обязательно сохраните папкуdocker
как папку верхнего уровня внутри корзины.sudo aws --endpoint-url https://your-object-storage-backend.com реестр синхронизации s3 s3: // mybucket
- Чтобы выполнить окончательную синхронизацию данных,
переведите Реестр контейнеров в режим
только для чтения
и перенастроить GitLab. Синхронизируйте любые изменения с момента загрузки исходных данных в корзину S3 и удалите файлы, которые существуют в целевой корзине, но не в источнике:
sudo aws --endpoint-url https://your-object-storage-backend.com Реестр синхронизации s3 s3: // mybucket --delete --dryrun
После проверки правильности выполнения команды удалите
Внимание:- сухой
flag и запустите команду.- удалить
флаг удаляет файлы, которые существуют в месте назначения, но не в источнике.Если вы поменяете местами источник и место назначения, все данные в реестре будут удалены.Убедитесь, что все файлы реестра контейнеров были загружены в хранилище объектов посмотрев на количество файлов, возвращаемое этими двумя командами:
sudo find registry -type f | wc -l
sudo aws --endpoint-url https://your-object-storage-backend.com s3 ls s3: // mybucket --recursive | wc -l
Вывод этих команд должен совпадать, за исключением содержимого в
_ загружает
каталогов и подкаталогов.- Настройте реестр для использования корзины S3 для хранения.
- Чтобы изменения вступили в силу, верните реестр
в режим чтения-записи
и перенастройте GitLab.
Отключить перенаправление для драйвера хранилища
По умолчанию пользователи, обращающиеся к реестру, настроенному с помощью удаленной серверной части, перенаправляются на серверную часть по умолчанию для драйвера хранилища. Например, реестры можно настроить с помощью драйвера хранилища
s3
, который перенаправляет запросы в удаленную корзину S3, чтобы снизить нагрузку на сервер GitLab.Однако такое поведение нежелательно для реестров, используемых внутренними хостами, которые обычно не имеют доступа к общедоступным серверам. Чтобы отключить перенаправления и загрузку прокси, установите для флага
disable
значение true, как показано ниже. Благодаря этому весь трафик всегда проходит через службу реестра. Это приводит к повышению безопасности (меньше поверхностных атак, поскольку серверная часть хранилища не является общедоступной), но к снижению производительности (весь трафик перенаправляется через службу).Установка Omnibus GitLab
Отредактируйте
Реестр/ etc / gitlab / gitlab.руб
:['storage'] = { 's3' => { 'accesskey' => 's3-access-key', 'secretkey' => 's3-secret-key-for-access-key', 'bucket' => 'your-s3-bucket', 'region' => 'your-s3-region', 'regionendpoint' => 'your-s3-regionendpoint' }, 'redirect' => { 'disable' => истина } }
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Установки из источника
Добавьте флаг
перенаправления
в файл YML конфигурации реестра:хранилище: s3: ключ доступа: 'AKIAKIAKI' secretkey: 'secret123' ведро: 'gitlab-registry-bucket-AKIAKIAKI' регион: 'ваш-s3-регион' regionendpoint: 'ваш-s3-regionendpoint' перенаправление: отключить: правда кеш: blobdescriptor: inmemory удалять: включен: правда
Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
Зашифрованные сегменты S3
Вы можете использовать шифрование на стороне сервера с AWS KMS для сегментов S3, которые имеют Шифрование SSE-S3 или SSE-KMS включено по умолчанию. Основные ключи клиента (CMK) и шифрование SSE-C не поддерживаются, так как для этого требуется отправить ключи шифрования в каждом запросе.
Для SSE-S3 необходимо включить опцию
encrypt
в настройках реестра. Как вы это делаете, зависит о том, как вы установили GitLab. Следуйте инструкциям здесь, которые соответствуют вашему методу установки.Для установок Omnibus GitLab:
Изменить
Реестр/etc/gitlab/gitlab.rb
:['storage'] = { 's3' => { 'accesskey' => 's3-access-key', 'secretkey' => 's3-secret-key-for-access-key', 'bucket' => 'your-s3-bucket', 'region' => 'your-s3-region', 'regionendpoint' => 'your-s3-regionendpoint', 'encrypt' => истина } }
Сохраните файл и перенастройте GitLab чтобы изменения вступили в силу.
Для установок из источника:
Отредактируйте файл YML конфигурации реестра:
хранилище: s3: ключ доступа: 'AKIAKIAKI' secretkey: 'secret123' ведро: 'gitlab-registry-bucket-AKIAKIAKI' регион: 'ваш-s3-регион' regionendpoint: 'ваш-s3-regionendpoint' encrypt: true
Сохраните файл и перезапустите GitLab чтобы изменения вступили в силу.
Ограничения по хранению
В настоящее время нет ограничений по хранению, что означает, что пользователь может загрузить бесконечное количество образов Docker произвольных размеров.Этот параметр должен быть настраивается в будущих выпусках.
Изменить внутренний порт реестра
Сервер реестра по умолчанию прослушивает localhost на порту
5000
, это адрес, для которого сервер реестра должен принимать соединения. В приведенных ниже примерах мы устанавливаем порт реестра5001
.Омнибус GitLab
Откройте
Реестр/etc/gitlab/gitlab.rb
и установите реестр['registry_http_addr']
:['registry_http_addr'] = "localhost: 5001"
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Установки из источника
Откройте файл конфигурации вашего сервера реестра и отредактируйте
http: addr
значение:http: адрес: localhost: 5001
Сохраните файл и перезапустите сервер реестра.
Отключить реестр контейнеров для каждого проекта
Если в вашем экземпляре GitLab включен реестр, но он вам не нужен для проект, вы можете отключить его в настройках вашего проекта.
Использовать внешний реестр контейнеров с GitLab в качестве конечной точки аутентификации
Если вы используете внешний реестр контейнеров, некоторые функции, связанные с реестр контейнеров может быть недоступен или иметь неотъемлемые риски.
Для работы интеграции внешний реестр должен быть настроен на используйте JSON Web Token для аутентификации в GitLab. В конфигурация времени выполнения внешнего реестра должен иметь следующие записи:
авторизация: токен: область: https: // gitlab.example.com/jwt/auth сервис: container_registry эмитент: gitlab-эмитент rootcertbundle: / корень / сертификаты / certbundle
Без этих записей вход в реестр не может пройти аутентификацию с помощью GitLab. GitLab также не знает имена вложенных изображений в иерархии проекта, например
registry.example.com/group/project/image-name:tag
илиregistry.example.com/group/project/my/image-name:tag
и распознает толькоregistry.example.com/group/project:tag
.Омнибус GitLab
Вы можете использовать GitLab как конечную точку аутентификации с внешним реестром контейнеров.
Откройте
/etc/gitlab/gitlab.rb
и установите необходимые конфигурации:gitlab_rails ['registry_enabled'] = true gitlab_rails ['registry_api_url'] = "https: //
: 5000" gitlab_rails ['registry_issuer'] = "издатель gitlab" -
gitlab_rails ['registry_enabled'] = true
необходим для включения GitLab Функции реестра контейнеров и конечная точка аутентификации.GitLab в комплекте Служба реестра контейнеров не запускается, даже если она включена. -
gitlab_rails ['registry_api_url'] = "http: //
необходимо изменить в соответствии с хостом, на котором установлен реестр. Также необходимо указать: 5000" https
, если внешний реестр настроен на использование TLS. Подробнее на Документация реестра Docker.
-
Пара сертификат-ключ требуется для GitLab и внешнего контейнера. реестр для безопасного общения.Вам необходимо создать сертификат-ключ пара, настраивая внешний реестр контейнеров с общедоступным сертификат (
rootcertbundle
) и настройку GitLab с закрытым ключом. Для этого добавьте в/etc/gitlab/gitlab.rb
следующее:# реестр ['internal_key'] должен содержать содержимое настраиваемого ключа # файл. Разрывы строк в ключевом файле должны быть помечены символом `\ n`. # Пример: registry ['internal_key'] = "--- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ RSA --- \ nMIIEpQIBAA \ n" # При желании определить собственный файл для Omnibus GitLab для записи содержимого № реестра ['internal_key'] в.gitlab_rails ['registry_key_path'] = "/custom/path/to/registry-key.key"
Каждый раз, когда выполняется реконфигурация, файл, указанный в
registry_key_path
заполняется содержимым, указанным вinternal_key
. Если файл не указан, Omnibus GitLab по умолчанию использует/var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key
и заполняет Это.Чтобы изменить URL-адрес реестра контейнера, отображаемый в контейнере GitLab Страницы реестра, установите следующие конфигурации:
gitlab_rails ['registry_host'] = "реестр.gitlab.example.com " gitlab_rails ['registry_port'] = "5005"
Сохраните файл и перенастройте GitLab чтобы изменения вступили в силу.
Установки из источника
Откройте
/home/git/gitlab/config/gitlab.yml
и отредактируйте параметры конфигурации в реестре## Реестр контейнеров реестр: включен: правда хост: "registry.gitlab.example.com" порт: "5005" api_url: "https: //
: 5000" путь: / var / lib / registry ключ: / путь / к / ключевому файлу эмитент: gitlab-эмитент Узнайте больше о том, что означают эти параметры.
Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
Настройка уведомлений реестра контейнеров
Вы можете настроить реестр контейнеров для отправки уведомлений веб-перехватчиков в реакция на события, происходящие в реестре.
Подробнее о параметрах конфигурации уведомлений реестра контейнеров в Документация по уведомлениям в Docker Registry.
Вы можете настроить несколько конечных точек для реестра контейнеров.
Установка Omnibus GitLab
Чтобы настроить конечную точку уведомлений в Омнибусе:
Изменить
Реестр/etc/gitlab/gitlab.rb
:['уведомления'] = [ { 'name' => 'test_endpoint', 'url' => 'https://gitlab.example.com/notify', 'timeout' => '500 мс', 'threshold' => 5, 'backoff' => '1 с', 'заголовки' => { "Авторизация" => ["AUTHORIZATION_EXAMPLE_TOKEN"] } } ]
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Установки из источника
Настройка конечной точки уведомлений выполняется в созданном файле YML конфигурации реестра. когда вы развернули реестр Docker.
Пример:
уведомления: конечные точки: - имя: слушатель отключено: ложь URL: https://my.listener.com/event заголовки:
тайм-аут: 500 порог: 5 отсрочка: 1000 Запустить политику очистки сейчас
Внимание! Если вы используете распределенную архитектуру и Sidekiq работает на другом узле, очистка политики не работают.Чтобы исправить это, вы должны настроить файлgitlab.rb
на узлах Sidekiq, чтобы укажите правильный URL-адрес реестра и скопируйте файлregistry.key
на каждый узел Sidekiq. Для большего информацию, см. конфигурацию Sidekiq страница.Чтобы уменьшить объем дискового пространства реестра контейнеров, используемого данным проектом, администраторы могут очищать теги изображений и запустите сборку мусора.
Чтобы удалить теги изображений с помощью политики очистки, выполните следующие команды в Консоль GitLab Rails:
# Числовой идентификатор проекта, реестр контейнеров которого нужно очистить P =
# Числовой идентификатор разработчика, сопровождающего или владельца в этом проекте U = # Получить необходимые детали / объекты user = Пользователь.find_by_id (U) project = Project.find_by_id (P) policy = ContainerExpirationPolicy.find_by (идентификатор_проекта: P) # Прокрутите каждый репозиторий контейнеров project.container_repositories.find_each do | repo | помещает repo.attributes # Запустить очистку тега помещает Projects :: ContainerRepository :: CleanupTagsService.new (проект, пользователь, policy.attributes.except ("created_at", "updated_at")). execute (repo) конец Вы также можете запускать очистку по расписанию.
Сборка мусора реестра контейнеров
Реестр контейнеровможет использовать значительный объем дискового пространства.Чтобы прояснить некоторые неиспользуемые слои, реестр включает команду сборки мусора.
GitLab предлагает набор API для управления реестром контейнеров и помощи процессу. удаления неиспользуемых тегов. В настоящее время это раскрывается с помощью API, но в будущем эти элементы управления должны быть перенесены в интерфейс GitLab.
Сопровождающие проекта могут массовое удаление тегов реестра контейнеров периодически на основе их собственных критериев, однако это само по себе не перерабатывает данные, он только отсоединяет теги от манифестов и изображений.Чтобы утилизировать контейнер Данные реестра во всем экземпляре GitLab, вы можете использовать встроенную команду предоставляется
gitlab-ctl
.Предварительные требования:
- У вас должен быть установлен GitLab с помощью пакета Omnibus или облачная нативная диаграмма.
- Вы должны установить реестр в режим только для чтения. Запуск сборки мусора вызывает простои реестра контейнеров. Когда вы запускаете эту команду на экземпляре в среде, где другие экземпляры все еще записывают в хранилище реестра, указанные манифесты удаляются.
Понимание слоев с адресацией по содержанию
Рассмотрим следующий пример, в котором вы сначала создаете образ:
# Создает образ с содержимым sha256: 111111 docker build -t my.registry.com/my.group/my.project:latest. docker push my.registry.com/my.group/my.project:latest
Теперь вы перезаписываете
: последний
новой версией:# Создает образ с содержимым sha256: 222222 docker build -t my.registry.com/my.group/my.project:latest. docker push my.registry.com/my.group/my.project:latest
Теперь тег
: latest
указывает на манифестsha256: 222222
. Однако из-за архитектура реестра, эти данные все еще доступны при извлечении imagemy.registry.com/my.group/my.project@sha256:111111
, хотя это больше не доступен напрямую через тег: latest
.Утилизация неиспользованных тегов
Перед запуском встроенной команды обратите внимание на следующее:
- Встроенная команда останавливает реестр перед запуском сборки мусора.
- Выполнение команды сбора мусора занимает некоторое время, в зависимости от количество имеющихся данных.
- Если вы изменили расположение файла конфигурации реестра, вы должны укажите его путь.
- После завершения сборки мусора реестр должен запуститься автоматически.
Если вы не меняли расположение файла конфигурации по умолчанию, запустите:
sudo gitlab-ctl реестр-сборщик мусора
Для выполнения этой команды требуется некоторое время, в зависимости от количества слои, которые вы сохранили.
Если вы изменили расположение реестра контейнеров
config.yml
:sudo gitlab-ctl реестр-сборщик мусора /path/to/config.yml
Вы также можете удалить все немаркированные манифесты и слои без ссылок, хотя это гораздо более разрушительная операция, и сначала вам следует понять последствия.
Удаление непомеченных манифестов и слоев без ссылок
ВниманиеЭто деструктивная операция.
Реестр контейнеров GitLab следует тому же рабочему процессу по умолчанию, что и распространение Docker: сохранять манифесты без тегов и все слои, даже те, на которые нет прямых ссылок.Все содержание можно получить доступ с помощью контекстных адресных идентификаторов.
Однако в большинстве рабочих процессов вас не волнуют немаркированные манифесты и старые слои, если они не являются напрямую на который ссылается помеченный манифест. Команда
registry-garbage-collect
поддерживает-m
, позволяющий удалить все манифесты и слои, на которые нет ссылок. недоступен напрямую через тегsudo gitlab-ctl реестр-сборщик мусора -m
Поскольку это более разрушительная операция, по умолчанию это поведение отключено.Вы, вероятно, ожидаете такой работы, но перед этим убедитесь, что что вы сделали резервную копию всех данных реестра.
Когда команда используется без флага
-m
, Реестр контейнеров удаляет только те слои, на которые не ссылаются никакие манифесты, с тегами или без них.Выполнение сборки мусора без простоев
Вы можете выполнить сборку мусора, не останавливая реестр контейнеров, поместив это в режиме только для чтения и без использования встроенной команды.В больших случаях это может потребовать, чтобы Реестр контейнеров какое-то время находился в режиме только для чтения. В течение этого времени, вы можете получить данные из реестра контейнеров, но не можете толкать.
По умолчанию путь к хранилищу реестра это
/ var / opt / gitlab / gitlab-rails / shared / registry
.Чтобы включить режим только для чтения:
В
Реестр/etc/gitlab/gitlab.rb
укажите режим только для чтения:['storage'] = { 'filesystem' => { 'rootdirectory' => "<путь_к_вашему_регистру>" }, 'maintenance' => { 'readonly' => { 'enabled' => истина } } }
Сохраните и перенастройте GitLab:
sudo gitlab-ctl перенастроить
Эта команда устанавливает реестр контейнеров в режим только для чтения.
Затем запустите одну из команд сбора мусора:
# Утилизация неиспользуемых тегов sudo / opt / gitlab / встроенный / bin / сборщик мусора реестра /var/opt/gitlab/registry/config.yml # Удаление неиспользуемых слоев, на которые не ссылаются манифесты sudo / opt / gitlab / встроенный / bin / сборщик мусора реестра -m /var/opt/gitlab/registry/config.yml
Эта команда запускает сборку мусора, которая может занять некоторое время.
После этого в файле
Реестр/ etc / gitlab / gitlab.rb
верните его в режим чтения-записи:['storage'] = { 'filesystem' => { 'rootdirectory' => "<путь_к_вашему_регистру>" }, 'maintenance' => { 'readonly' => { 'enabled' => ложь } } }
Сохраните и перенастройте GitLab:
sudo gitlab-ctl перенастроить
Запуск сборки мусора по расписанию
В идеале вы хотите регулярно запускать сборку мусора реестра на еженедельно в то время, когда реестр не используется.Самый простой способ - добавить новое задание crontab, которое оно запускается периодически. раз в неделю.
Создайте файл под
/etc/cron.d/registry-garbage-collect
:ОБОЛОЧКА = / bin / sh ПУТЬ = / usr / local / sbin: / usr / local / bin: / sbin: / bin: / usr / sbin: / usr / bin # Запускать каждое воскресенье в 04:05. 5 4 * * 0 корень gitlab-ctl реестр-сборщик мусора
Вы можете добавить флаг
-m
для удаления немаркированных манифестов и слоев без ссылок.Настройка GitLab и реестра для работы на отдельных узлах (Omnibus GitLab)
По умолчанию пакет предполагает, что обе службы работают на одном узле.Для того, чтобы GitLab и Registry работали на отдельных узлах, отдельная конфигурация необходимо для Registry и GitLab.
Настройка реестра
Ниже вы найдете параметры конфигурации, которые вы должны установить в
/etc/gitlab/gitlab.rb
, для запуска реестра отдельно от GitLab:- Реестр
['registry_http_addr']
, по умолчанию устанавливается программно. Должен быть доступен веб-серверу (или LB). - Реестр
['token_realm']
, по умолчанию устанавливается программно.Задает конечную точку, используемую для аутентификации, обычно это URL-адрес GitLab. Эта конечная точка должна быть доступна для пользователя. - Реестр
['http_secret']
, случайная строка. Случайный фрагмент данных, используемый для подписи состояния, который может храниться у клиента для защиты от взлома. - Реестр
['internal_key']
, по умолчанию создается автоматически. Содержимое ключа, который GitLab использует для подписи токенов. Их ключ создается на сервере реестра, но не будет там использоваться. -
gitlab_rails ['registry_key_path']
, по умолчанию устанавливается программно. Это путь, по которому содержимоеinternal_key
будет записано на диск. - Реестр
['internal_certificate']
, по умолчанию создается автоматически. Содержимое сертификата, который GitLab использует для подписи токенов. - Реестр
['rootcertbundle']
, по умолчанию устанавливается программно. Путь к сертификату. Это путь, по которомуinternal_certificate
содержимое будет записано на диск. - Реестр
['health_storagedriver_enabled']
, по умолчанию устанавливается программно. Настройте, включены ли проверки работоспособности настроенного драйвера хранилища. -
gitlab_rails ['registry_issuer']
, значение по умолчанию. Этот параметр должен быть одинаковым для Registry и GitLab.
Настройка GitLab
Ниже вы найдете параметры конфигурации, которые вы должны установить в
/etc/gitlab/gitlab.rb
, для запуска GitLab отдельно от реестра:-
gitlab_rails ['registry_enabled']
, должно быть установлено значениеtrue
.Этот параметр будет сигнал GitLab о том, что он должен разрешать запросы API реестра. -
gitlab_rails ['registry_api_url']
, по умолчанию устанавливается программно. Это внутренний URL-адрес реестра, с которым пользователям не нужно взаимодействовать,registry ['registry_http_addr']
со схемой. -
gitlab_rails ['registry_host']
, например.registry.gitlab.example
. Конечная точка реестра без схемы, адрес, который отображается конечному пользователю. -
gitlab_rails ['порт_описания']
.Порт конечной точки реестра, видимый конечному пользователю. -
gitlab_rails ['registry_issuer']
должен соответствовать издателю в конфигурации реестра. -
gitlab_rails ['registry_key_path']
, путь к ключу, который соответствует сертификату на Сторона реестра. -
gitlab_rails ['internal_key']
, содержимое ключа, который GitLab использует для подписи токенов.
Архитектура реестра контейнеров GitLab
Реестр GitLab - это то, что пользователи используют для хранения своих собственных образов Docker.Из-за этого Реестр обращен к клиенту, а это означает, что мы открываем его напрямую. на веб-сервере (или балансировщиках нагрузки, сокращенно LB).
Поток, описанный на диаграмме выше:
- Пользователь запускает
docker login registry.gitlab.example
на своем клиенте. Он достигает веб-сервера (или LB) через порт 443. - Веб-сервер подключается к внутреннему пулу реестра (по умолчанию через порт 5000). Поскольку пользователь
не предоставил действительный токен, реестр возвращает код HTTP 401 и URL (
token_realm
из Конфигурация реестра) где его взять.Это указывает на API GitLab. - Затем клиент Docker подключается к GitLab API и получает токен.
- API подписывает токен ключом реестра и передает его клиенту Docker
- Теперь клиент Docker снова входит в систему с токеном, полученным от API. Теперь он может отправлять и извлекать образы Docker.
Ссылка: https://docs.docker.com/registry/spec/auth/token/
Обмен данными между GitLab и реестром
Реестрне имеет возможности для внутренней аутентификации пользователей, поэтому он полагается на GitLab для проверки учетных данных.Связь между Registry и GitLab Зашифрованный TLS. Ключ используется GitLab для подписи токенов, пока сертификат используется Реестром для проверки подписи. По умолчанию создается пара ключей самозаверяющего сертификата. для всех установок. При необходимости это можно изменить.
GitLab взаимодействует с реестром, используя закрытый ключ реестра. Когда реестр запрос гаснет, создается новый кратковременный (10 минут) токен, ограниченный пространством имен и подписан закрытым ключом.Затем реестр проверяет соответствие подписи сертификату реестра. указывается в его конфигурации и допускает операцию. Обработка фоновых заданий GitLab (через Sidekiq) также взаимодействует с реестром. Эти задания обращаются напрямую к реестру для обработки удаления изображений.
Поиск и устранение неисправностей
Перед тем, как перейти к следующим разделам, рассмотрим несколько основных способов устранения неполадок:
Убедитесь, что системные часы на вашем клиенте Docker и сервере GitLab был синхронизирован (например, через NTP).
Если вы используете реестр с поддержкой S3, дважды проверьте, что IAM разрешения и учетные данные S3 (включая регион) верны. Увидеть образец политики IAM Больше подробностей.
Проверьте журналы реестра (например,
/ var / log / gitlab / registry / current
) и производственные журналы GitLab. на наличие ошибок (например/var/log/gitlab/gitlab-rails/production.log
). Возможно, вы сможете найти подсказки там.
Использование самозаверяющих сертификатов с Реестром контейнеров
Если вы используете самозаверяющий сертификат в своем реестре контейнеров, вы могут возникнуть проблемы во время заданий CI, например:
Ответ от демона об ошибке: Получить реестр.example.com/v1/users/: x509: сертификат, подписанный неизвестным органом
Демон Docker, выполняющий команду, ожидает сертификат, подписанный признанным центром сертификации, таким образом ошибка выше.
Хотя GitLab не поддерживает использование самозаверяющих сертификатов с контейнером Реестр из коробки, можно заставить работать указание демону Docker доверять самозаверяющим сертификатам, монтирование демона Docker и установка
Privileged = false
в GitLab Runnerконфиг.toml
файл. УстановкаPrivileged = true
имеет приоритет над демоном Docker:[runners.docker] image = "рубин: 2.6" привилегированный = ложный volume = ["/var/run/docker.sock:/var/run/docker.sock", "/ cache"]
Дополнительная информация по этому поводу: выпуск 18239.
unauthorized: требуется аутентификация
при отправке больших изображенийПример ошибки:
docker push gitlab.example.com/myproject/docs:latest Нажатие относится к репозиторию [gitlab.example.com/myproject/docs] 630816f32edb: Подготовка 530d5553aec8: Подготовка ... 4b0bab9ff599: Ожидание d1c800db26c7: Ожидание 42755cf4ee95: Ожидание unauthorized: требуется аутентификация
GitLab имеет срок действия токена по умолчанию для реестра 5 минут. При нажатии изображения большего размера или изображения, отправка которых занимает более 5 минут, пользователи могут столкнуться с этой ошибкой.
Администраторы могут увеличить срок действия токена в разделе Админ> Настройки> CI / CD> Реестр контейнеров> Срок действия токена авторизации (в минутах) 9000 8.
Попытка входа в Docker не удалась: «токен, подписанный ненадежным ключом»
Реестриспользует GitLab для проверки учетных данных Если реестр не может подтвердить допустимые попытки входа в систему, вы получите следующее сообщение об ошибке:
# docker login gitlab.company.com:4567 Имя пользователя: пользователь Пароль: Ответ от демона об ошибке: попытка входа на https://gitlab.company.com:4567/v2/ завершилась неудачно со статусом: 401 Unauthorized
И, более конкретно, это отображается в файле журнала
/ var / log / gitlab / registry / current
:level = info msg = "токен, подписанный ненадежным ключом с ID:" TOKE: NL6Q: 7PW6: EXAM: PLET: OKEN: BG27: RCIB: D2S3: EXAM: PLET: OKEN "" level = warning msg = "контекст авторизации ошибки: недопустимый токен" go.version = go1.12.7 http.request.host = "gitlab.company.com:4567" http.request.id = 74613829-2655-4f96-8991-1c9fe33869b8 http.request.method = ПОЛУЧИТЬ http.request.remoteaddr = 10.72. 11.20 http.request.uri = "/ v2 /" http.request.useragent = "docker / 19.03.2 go / go1.12.8 git-commit / 6a30dfc kernel / 3.10.0-693.2.2.el7.x86_64 os / linux arch / amd64 UpstreamClient (Docker-Client / 19.03.2 \ (linux \)) "
GitLab использует содержимое двух сторон пары ключей сертификата для шифрования токена аутентификации. для реестра.Это сообщение означает, что это содержимое не выровнено.
Проверить, какие файлы используются:
Вывод этих команд
openssl
должен совпадать, что доказывает совпадение пары сертификат-ключ:openssl x509 -noout -modulus -in /var/opt/gitlab/registry/gitlab-registry.crt | openssl sha256 openssl rsa -noout -modulus -in /var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key | openssl sha256
Если две части сертификата не совпадают, удалите файлы и запустите
gitlab-ctl reconfigure
для восстановления пары.Если вы переопределили автоматически созданную самоподписанную пару с помощью ваши собственные сертификаты и убедитесь, что их содержимое совпадает, вы можете удалить «реестр» в вашем/etc/gitlab/gitlab-secrets.json
и запуститеgitlab-ctl reconfigure
.AWS S3 с ошибкой реестра GitLab при отправке больших образов
При использовании AWS S3 с реестром GitLab может возникнуть ошибка при нажатии большие изображения. Найдите в журнале реестра следующую ошибку:
level = error msg = "ответ завершился с ошибкой" err.code = unknown err.detail = "неожиданный EOF" err.message = "unknown error"
Для устранения ошибки укажите значение
chunksize
в конфигурации реестра. Начните со значения от25000000
(25 МБ) до50000000
(50 МБ).Для установок Омнибус
Изменить
Реестр/etc/gitlab/gitlab.rb
:['storage'] = { 's3' => { 'accesskey' => 'АКИАКИАКИ', 'secretkey' => 'secret123', 'bucket' => 'gitlab-registry-bucket-AKIAKIAKI', 'chunksize' => 25000000 } }
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Для установок из источника
Отредактируйте конфигурацию
/ gitlab.yml
:хранилище: s3: ключ доступа: 'AKIAKIAKI' secretkey: 'secret123' ведро: 'gitlab-registry-bucket-AKIAKIAKI' размер блока: 25000000
Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
Поддержка старых клиентов Docker
Начиная с GitLab 11.9, мы начали выпуск версии 2.7.1 реестра контейнеров Docker, который по умолчанию отключает манифест schema1. Если вы все еще используете старые клиенты Docker (1.9 или более ранние), вы можете столкнуться с ошибкой при отправке изображений. См. Более подробную информацию в omnibus-4145.
Вы можете добавить параметр конфигурации для обратной совместимости.
Для установок Омнибус
Изменить
Реестр/etc/gitlab/gitlab.rb
:['compatibility_schema1_enabled'] = true
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Для установок из источника
Отредактируйте файл конфигурации YML, созданный при развертывании реестра. Добавьте следующий фрагмент:
совместимость: schema1: включен: правда
Перезапустите реестр, чтобы изменения вступили в силу.
Ошибка подключения Docker
Ошибка подключения Docker может возникнуть, если в любой группе есть специальные символы, название проекта или филиала.Специальные символы могут включать:
- Верхний знак подчеркивания
- Конечный дефис / тире
- Двойной дефис / тире
Чтобы обойти это, вы можете изменить групповой путь, изменить путь к проекту или изменить название филиала. Другой вариант - создать правило push для предотвращения это на уровне экземпляра.
Ошибки отправки изображения
При получении ошибок или «повторных попытках» зацикливается при попытке отправить образ, но
логин в докере
работает нормально, вероятно, проблема с заголовками, пересылаемыми в реестр NGINX.По умолчанию рекомендуется Конфигурации NGINX должны справиться с этим, но это может произойти в пользовательских настройках, где SSL выгружено на сторонний обратный прокси.Эта проблема обсуждалась в выпуске проекта Docker и простое решение - включить относительные URL-адреса в реестре.
Для установок Омнибус
Изменить
Реестр/etc/gitlab/gitlab.rb
:['env'] = { "REGISTRY_HTTP_RELATIVEURLS" => верно }
Сохраните файл и перенастройте GitLab, чтобы изменения вступили в силу.
Для установок из источника
Отредактируйте файл конфигурации YML, созданный при развертывании реестра. Добавьте следующий фрагмент:
Сохраните файл и перезапустите GitLab, чтобы изменения вступили в силу.
Включить сервер отладки реестра
Для диагностики проблем можно использовать сервер отладки реестра контейнеров. Конечная точка отладки может отслеживать показатели и состояние, а также выполнять профилирование.
cautionКонфиденциальная информация может быть доступна из конечной точки отладки. Доступ к конечной точке отладки должен быть заблокирован в производственной среде.
Дополнительный сервер отладки можно включить, задав адрес отладки реестра. в вашей конфигурации
gitlab.rb
.реестр ['debug_addr'] = "localhost: 5001"
После добавления параметра перенастройте GitLab, чтобы применить изменение.
Используйте curl для запроса вывода отладки с сервера отладки:
curl "localhost: 5001 / отладка / здоровье" curl "локальный: 5001 / отладка / vars"
Доступ к образам Docker старой схемы v1
Поддержка Docker Registry v1 API, включая манифесты изображений схемы V1, было:
Больше нельзя отправлять или извлекать образы v1 из реестра контейнеров GitLab.
Если у вас были образы v1 в реестре контейнеров GitLab, но вы не обновляли их (следуя шаги, которые рекомендует Docker) перед обновлением GitLab 13.9 эти образы больше не доступны. Если вы попытаетесь их вытащить, появляется эта ошибка:
-
Ошибка, ответ от демона: недействительный манифест: манифест схемы 1 не поддерживается
Для самоуправляемых экземпляров GitLab вы можете восстановить доступ к этим изображениям, временно понизив версию Реестр контейнеров GitLab до версии ниже
v3.0.0-gitlab
. Выполните следующие действия, чтобы восстановить доступ к этим изображениям:- Понизьте реестр контейнеров до
v2.13.1-gitlab
. - Обновите любые образы v1.
- Отменить возврат к более ранней версии реестра контейнеров.
Нет необходимости переводить реестр в режим только для чтения во время процесса обновления образа. Гарантировать, что вы не полагаетесь на какие-либо новые функции, представленные после
v3.0.0-gitlab
. Такие особенности недоступен в процессе обновления.См. Полный журнал изменений реестра для дополнительной информации.В следующих разделах приведены дополнительные сведения о каждом методе установки.
Установки штурвала
Для установок Helm Chart:
- Заменить
image.tag
параметр конфигурации сv2.13.1-gitlab
. - Перезагрузка.
- Выполнение шагов обновления образов).
- Вернуть параметр
image.tag
к предыдущему значению.
Никаких других изменений конфигурации реестра не требуется.
Установки омнибуса
Для установок Омнибус:
Временно замените двоичный файл реестра, поставляемый с GitLab 13.9+, на один до
v3.0.0-gitlab
. Для этого загрузите предыдущую версию образа Docker для контейнера GitLab. Реестр, напримерv2.13.1-gitlab
. Затем вы можете получить двоичный файл реестра/ bin / registry
:id = $ (docker создать реестр.gitlab.com/gitlab-org/build/cng/gitlab-container-registry:v2.13.1-gitlab) docker cp $ id: / bin / registry-2.13.1-gitlab докер rm $ id
Заменить двоичный файл, встроенный в установку Омнибуса, расположенный по адресу
/ opt / gitlab / embedded / bin / registry
, сregistry-2.13.1-gitlab
. Обязательно начните с поддержки загрузите исходный двоичный файл, встроенный в Омнибус, и восстановите его после выполнения обновление образа) шаги. Ты должен остановиться службу реестра перед заменой своего двоичного файла и сразу после этого запустить.Нет реестра необходимы изменения конфигурации.
Установки источника
Для исходных установок найдите двоичный файл реестра
v3.0.0-gitlab
, как описано для установок Omnibus. Обязательно начните с резервного копирования исходного двоичного файла реестра и восстановите его после выполнения обновление изображений) шаги.Обновление изображений
Следуйте инструкциям, рекомендованным Docker для обновления образов v1.Самый простой вариант - вытащить эти образы и снова отправить их в реестр, с использованием версии клиента Docker выше v1.12. Docker автоматически конвертирует изображения перед их отправкой в реестр. После этого все ваши изображения v1 должны быть доступны как изображения v2.
Расширенный поиск и устранение неисправностей
Мы используем конкретный пример, чтобы проиллюстрировать, как диагностировать проблему с настройкой S3.
Неожиданная ошибка 403 во время отправки
Пользователь попытался включить реестр с поддержкой S3.Вход в докер
Шаг
пошел отлично. Однако при нажатии изображения на выходе было:Отправка относится к репозиторию [s3-testing.myregistry.com:5050/root/docker-test/docker-image] dc5e59c14160: Нажатие [================================================ ====>] 14,85 КБ 03c20c1a019a: Нажатие [================================================ ====>] 2.048 КБ a08f14ef632e: Нажатие [================================================ ====>] 2.048 КБ 228
4c88: Нажатие 2.048 кБ 6a8ecde4cc03: отправка [==>] 9,901 МБ / 205,7 МБ 5f70bf18a086: Распространение 1,024 КБ 737f40e80b7f: Ожидание 82b57dbc5385: Ожидание 19429b698a22: ОжиданиеЭта ошибка неоднозначна, так как неясно, исходит ли 403 Приложение GitLab Rails, Docker Registry или что-то еще. В этом случае, поскольку мы знаем, что, поскольку вход в систему был успешным, нам, вероятно, нужно посмотреть при общении клиента с Реестром.
Описан REST API между клиентом Docker и реестром. в документации Docker. Обычно можно было бы просто используйте Wireshark или tcpdump, чтобы захватить трафик и посмотреть, куда все пошло неправильный. Однако, поскольку все коммуникации между клиентами и серверами Docker выполняются через HTTPS, довольно сложно быстро расшифровать трафик, даже если вы знаете секретный ключ. Что мы можем сделать вместо этого?
Один из способов - отключить HTTPS, настроив небезопасный Реестр. Это может привести к дыра в безопасности и рекомендуется только для локального тестирования.Если у тебя есть производственной системы и не можете или не хотите этого делать, есть другой способ: используйте mitmproxy, что расшифровывается как Man-in-the-Middle Proxy.
mitmproxy
mitmproxy позволяет размещать прокси между вашими клиент и сервер для проверки всего трафика. Одна морщина заключается в том, что ваша система необходимо доверять сертификатам mitmproxy SSL, чтобы это работало.
Следующие инструкции по установке предполагают, что вы используете Ubuntu:
- Установите mitmproxy.
- Запустите
mitmproxy --port 9000
, чтобы сгенерировать его сертификаты. Введите CTRL - C , чтобы выйти. Установите сертификат из
~ / .mitmproxy
в вашу систему:sudo cp ~ / .mitmproxy / mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/mitmproxy-ca-cert.crt sudo update-ca-сертификаты
В случае успеха в выходных данных должно быть указано, что сертификат был добавлен:
Обновление сертификатов в / etc / ssl / certs... 1 добавлено, 0 удалено; сделано. Запуск хуков в /etc/ca-certificates/update.d....done.
Чтобы проверить правильность установки сертификатов, запустите:
Эта команда запускает mitmproxy на порту
9000
. В другом окне запустите:curl --proxy "http: // localhost: 9000" "https://httpbin.org/status/200"
Если все настроено правильно, информация отображается в окне mitmproxy и Команды curl не генерируют ошибок.
Запуск демона Docker с прокси
Чтобы Docker мог подключаться через прокси, вы должны запустить демон Docker с правильные переменные среды. Самый простой способ - выключить Docker (например,
sudo initctl stop docker
) а затем запустите Docker вручную. Как root, запустите:экспорт HTTP_PROXY = "http: // localhost: 9000" экспорт HTTPS_PROXY = "https: // localhost: 9000" docker daemon --debug
Эта команда запускает демон Docker и проксирует все соединения через mitmproxy.
Запуск клиента Docker
Теперь, когда у нас запущены mitmproxy и Docker, мы можем попытаться войти в систему и нажмите изображение контейнера. Для этого вам может потребоваться запустить как root. Например:
вход в докер s3-testing.myregistry.com:5050 docker push s3-testing.myregistry.com:5050/root/docker-test/docker-image
В приведенном выше примере мы видим следующую трассировку в окне mitmproxy:
На изображении выше показано:
- Первоначальные запросы PUT прошли успешно с кодом состояния 201.
- 201 перенаправил клиента в корзину S3.
- Запрос HEAD к ведру AWS сообщил о 403 несанкционированном доступе.
Что это значит? Это убедительно свидетельствует о том, что пользователь S3 не имеет права разрешения на выполнение запроса HEAD.