Каманда змяшчае адзін радок абыходу ў агульны файл асяроддзя. curl ідзе напрамую, іншая праграма выкарыстоўвае проксі, а кантэйнер паводзіць сябе яшчэ інакш. Агульны файл размяркоўваў адны і тыя ж сімвалы. Але ён не размяркоўваў адзін агульны аналізатар.

Доўгатэрміновы аб'ект — гэта палітыка: якія пункты прызначэння павінны быць прамымі і пры якіх умовах? Трымайце яе асобна ад радка, патрэбнага кожнай праграме.

Спачатку апішыце чаканыя маршруты

Выкарыстоўвайце прадстаўнічыя адрасы, уключаючы межы, а не толькі простыя поспехі:

Форма пункта прызначэнняПытанне да ўладальніка палітыкі
Бацькоўскі даменЦі павінен ён абыходзіцца, ці толькі яго даччыныя?
ПаддаменЦі наследуе ён той жа маршрут?
Літаральны прыватны IPЦі дасягальны гэты адрас напрамую з гэтага кліента?
Той жа сэрвіс пад імем хостаЦі павінны супадаць запыты па імені і па адрасе?
Іншы порт сэрвісуЦі ахоплівае выключэнне хост ці адзін слухач?

Затым вызначце спажыўцоў: дэман, які выцягвае вобраз, праграма ўнутры кантэйнера, HTTP-бібліятэка мовы і інтэрактыўны браўзер могуць быць асобнымі запісамі. Канфігурацыя проксі кліента Docker можа запаўняць значэнні асяроддзя кантэйнера, не прымушаючы кожнага кліента ўнутры рэалізоўваць тыя ж правілы супастаўлення.

Перакладайце, а не капіруйце наўздагад

Адзін дакументаваны прыклад рэальнай розніцы — мяжа бацькоўскага дамена. Выключэнне дамена ў curl ахоплівае названы дамен і адпаведныя даччыныя. Палітыка асяроддзя .NET адрознівае голас імя ад формы паддамена з кропкай у пачатку. Універсальнае правіла заўсёды дадаваць кропку ў пачатку не можа надзейна выразіць абедзве палітыкі.

Падтрымка дыяпазонаў IP таксама залежыць ад спажыўца і яго версіі. Машына з новым асобным curl можа па-ранейшаму запускаць праграму, злучаную са старэйшым libcurl, або кліента, які цалкам выкарыстоўвае іншую бібліятэку. Выпуск аперацыйнай сістэмы не з'яўляецца поўным інвентаром кліентаў.

Для кожнага спажыўца запішыце падтрымоўваны інтэрфейс канфігурацыі і найменшае выражэнне меркаваных маршрутаў. Кароткі яўны спіс хостаў можа быць лепшым за разумны шаблон, сэнс якога ніхто не можа растлумачыць.

Трымайце доказы канфігурацыі асобна ад доказаў злучэння

Разгледжаная налада або API рашэнняў маршрутызацыі можа паказаць, што выбрала праграма. Вынік запыту затым паказвае, ці быў гэты маршрут прыдатны. У .NET, HttpClient.DefaultProxy.IsBypassed дае гэтую праверку з боку канфігурацыі, калі прадвызначаны проксі з'яўляецца палітыкай, якая выкарыстоўваецца. Не дыягнастуйце недасягальны прамы сэрвіс як збой аналізатара абыходу толькі таму, што час запыту скончыўся.

Захоўвайце межныя пункты прызначэння пры абнаўленні кліента або базавага вобраза. Яны робяць будучыя змены сумяшчальнасці бачнымі, не патрабуючы ад усёй каманды зноў выявіць, чаму файл змяшчае два падобныя запісы дамена.

Падобныя артыкулы