Traefik v2 నుండి v3 కి మారేటప్పుడు వచ్చే సమస్యలు
Traefik v3 లో swarmMode లేదా pilot వంటి పాత ఆప్షన్లు పనిచేయవు. incompatible deprecated static option error ని ఎలా పరిష్కరించాలో మరియు మీ రూల్స్ను ఎలా మార్చుకోవాలో ఈ గైడ్లో చూడండి.
Traefik v2 మరియు v3 మధ్య మార్పులు ఏమిటి
Traefik v2 నుంచి v3 కి మారడం అనేది ప్రధానంగా పేర్ల మార్పుకు సంబంధించిన ప్రక్రియ. ఇందులో ముఖ్యమైనది ipWhiteList మిడిల్వేర్ పేరు ipAllowList గా మారడం. దీనితో పాటు, v3 లో రౌటర్ రూల్ సింటాక్స్ మరింత కఠినతరం చేయబడింది (PathPrefix లో regex ఫీచర్లు తొలగించబడ్డాయి, కొన్ని మ్యాచర్లు పేరు మార్చబడ్డాయి లేదా తొలగించబడ్డాయి). కొన్ని ప్రొవైడర్లు మరియు ఆప్షన్లను పూర్తిగా తొలగించినప్పటికీ, మిగిలినవన్నీ అంటే entrypoints, ACME సర్టిఫికేట్ సెటప్, Docker లేబుల్స్ వర్క్ఫ్లో మరియు మీ acme.json అన్నీ యథావిధిగా పనిచేస్తాయి. v3 లో v2 రూల్ సింటాక్స్ను సపోర్ట్ చేసే కంపాటబిలిటీ మోడ్ కూడా ఉంది. కాబట్టి, మీరు ఒకే రాత్రిలో రిస్క్ తీసుకోకుండా, ముందుగా బైనరీని అప్గ్రేడ్ చేసి, ఆపై ఒక్కో సర్వీసును విడివిడిగా అప్డేట్ చేసుకోవచ్చు.
ఈ గైడ్ Traefik రివర్స్ ప్రాక్సీ గైడ్ లోని లేబుల్-ఆధారిత Docker Compose సెటప్ను ప్రాతిపదికగా తీసుకుంటుంది. ఆ పేజీ v3 కి అనుగుణంగా ఉంటుంది; ఈ గైడ్ మాత్రం ఇంకా traefik:v2 ట్యాగ్తో నడుస్తున్న సర్వర్ల కోసం ఉద్దేశించబడింది.
పేర్లు మార్చడం మరియు తొలగించడం
ipWhiteListఇప్పుడుipAllowListగా మారింది, ఇది HTTP మరియు TCP middleware రెండింటికీ వర్తిస్తుంది. దీనిలోని ఆప్షన్లు మారలేదు, కాబట్టిsourcerangeదాని అసలు అర్థాన్ని అలాగే కలిగి ఉంటుంది. ప్రస్తుత v3 releases, v3.5 తో సహా, పాత పేరును deprecated alias గా అంగీకరిస్తాయి మరియు జాబితాను అమలు చేస్తూనే ఉంటాయి, కాబట్టి ఈ పేరు మార్పు వల్ల ఎటువంటి అంతరాయం కలగదు. ఏది ఏమైనప్పటికీ పేరు మార్చండి: ఈ alias ను తొలగించడానికి షెడ్యూల్ చేయబడింది, మరియు ఇది deprecation జాబితా నుండి ఎటువంటి హెచ్చరిక లేకుండా తొలగించబడుతుంది.providers.docker.swarmMode=trueతొలగించబడింది. Swarm కు ఇప్పుడు ప్రత్యేకమైన provider ఉంది, దీనినిproviders.swarm.endpointగా కాన్ఫిగర్ చేయాలి.pilotవిభాగం పూర్తిగా తొలగించబడింది.experimental.http3తొలగించబడింది. HTTP/3 ఇప్పుడు నేరుగా entrypoint లోనే ఎనేబుల్ చేయబడుతుంది.tls.caOptionalను providers మరియు forwardAuth middleware నుండి తొలగించారు. ఒకవేళ ఆ middleware self-hosted Authentik SSO ముందు ఉంటే,caOptionalలైన్ను తొలగించడమే దానికి సంబంధించిన పూర్తి మైగ్రేషన్, ఎందుకంటే forwardAuth అడ్రస్, trusted headers, మరియు వాటి వెనుక ఉన్న outpost అన్నీ v3 లో ఒకేలా పనిచేస్తాయి.- InfluxDB v1 metrics provider, Rancher provider, మరియు Marathon provider తొలగించబడ్డాయి.
- Tracing ఇప్పుడు OpenTelemetry కి మారింది. ప్రత్యేకమైన tracing backends, అంటే Jaeger మరియు Zipkin integrations వంటివి తొలగించబడ్డాయి, మరియు v3 ఇప్పుడు OTLP (OpenTelemetry protocol) ద్వారా ఎగుమతి చేస్తుంది.
- Headers middleware లోని deprecated
ssl*ఆప్షన్లు (sslRedirect,sslHost, మరియు మిగిలినవి) తొలగించబడ్డాయి. వీటి స్థానంలో Entrypoint redirections మరియు redirectScheme middleware వచ్చాయి.
ఈ తొలగింపులు చాలా ముఖ్యమైనవి, ఎందుకంటే Traefik తన static configuration లో తెలియని ఆప్షన్ ఉన్నప్పుడు ప్రారంభం కాదు. మిగిలిపోయిన pilot లేదా swarmMode లైన్, బూట్ సమయంలో కంటైనర్ను ఆపివేసి, ఆ మిగిలిపోయిన ఆప్షన్ పేరుతో incompatible deprecated static option found సందేశాన్ని చూపిస్తుంది; Traefik కు అస్సలు తెలియని ఆప్షన్ (టైపింగ్ తప్పు లేదా tls.caOptional) అయితే field not found సందేశంతో ఆగిపోతుంది. image tag ను మార్చడానికి ముందే static configuration ను శుభ్రం చేయండి.
Traefik కు తెలియని middleware పేరు (టైపింగ్ తప్పు లేదా alias కాకుండా తొలగించబడిన పేరు) భిన్నంగా విఫలమవుతుంది: దాన్ని సూచించే router, route కు బదులుగా error తో లోడ్ అవుతుంది, dashboard లో అది మార్క్ చేయబడుతుంది, మరియు API middleware "offce@docker" does not exist అని రిపోర్ట్ చేస్తుంది. ఆ hostname కు వచ్చే అభ్యర్థనలకు 404 వస్తుంది, ఎందుకంటే router అసలు ప్రారంభం కాలేదు. ప్రస్తుత v3 లో ipwhitelist ఈ వర్గంలోకి రాదని గమనించండి: ఇది deprecated alias గా కొనసాగుతుంది, కాబట్టి పేరు మార్చని label కూడా పనిచేస్తూనే ఉంటుంది.
నియమాల సింటాక్స్ మార్పులు
నియమాలలోనే అసలైన రీరైటింగ్ జరుగుతుంది. v3లో వచ్చిన మార్పులు ఇక్కడ ఉన్నాయి:
- మ్యాచర్లలోని విలువల చుట్టూ బ్యాక్టిక్స్ (backticks) తప్పనిసరి. v2లో డబుల్ కోట్స్ కూడా అంగీకరించబడేవి; v3లో అవి పనిచేయవు, కాబట్టి Host("app.example.com") అనేది Host(
app.example.com) గా మారాలి. PathPrefixఇకపై రెగ్యులర్ ఎక్స్ప్రెషన్లను లేదా{id}-శైలి ప్లేస్హోల్డర్లను అర్థం చేసుకోదు. v2లోని PathPrefix(/api/{version:v[0-9]+}) వంటి నియమం, Go రెగ్యులర్ ఎక్స్ప్రెషన్ సింటాక్స్లో వ్రాసినPathRegexpమ్యాచర్గా మారాలి.- మ్యాచర్లు ఇప్పుడు ఒకే విలువను తీసుకుంటాయి. v2లో Host(
app.example.com,www.example.com) అనుమతించబడేది; v3లో Host(app.example.com) || Host(www.example.com) అని వ్రాయాలి.Header,HeaderRegexp,Query, మరియుQueryRegexpమినహాయింపులు, ఇవి ఇప్పటికీ పేరుతో పాటు ఒక విలువను తీసుకుంటాయి. HeadersమరియుHeadersRegexpపేర్లుHeaderమరియుHeaderRegexpగా మార్చబడ్డాయి.HostHeaderతొలగించబడింది. దీనికి బదులుగాHostఉపయోగించండి, ఇది v3లో అదే పనిని చేస్తుంది.- రెండు కొత్త మ్యాచర్లు ఉన్నాయి:
QueryRegexp, మరియు నియమం లోపల క్లయింట్ అడ్రస్ను మ్యాచ్ చేయడానికిClientIP.
శుభవార్త ఏమిటంటే: బ్యాక్టిక్స్తో వ్రాసిన సాధారణ Host(app.example.com) నియమం ఇప్పటికే v3 సింటాక్స్కు అనుగుణంగా ఉంటుంది. చాలా చిన్న Compose సెటప్లు సరిగ్గా దీనినే ఉపయోగిస్తాయి, అంటే చాలా లేబుల్లు ఎటువంటి మార్పులు లేకుండానే మైగ్రేట్ అవుతాయి.
ప్రారంభించే ముందు మీ లేబుల్లను ఆడిట్ చేయండి
మైగ్రేషన్ పరిమాణాన్ని మీరు ఒకే సెర్చ్తో అంచనా వేయవచ్చు, ఎందుకంటే ప్రతి బ్రేకింగ్ లేబుల్ మార్పు grep ద్వారా కనుగొనగలిగే ఒక పద్ధతిని వదిలివేస్తుంది:
grep -rnE 'ipwhitelist|HostHeader|Headers\(|PathPrefix\(`[^`]*\{|Host\(`[^`]*`,' docker-compose*.ymlప్రతి హిట్ అంటే మీరు ఎడిట్ చేయాల్సిన ఒక లైన్. ipwhitelist అనేది ipallowlist గా మారుతుంది. HostHeader అనేది Host గా మారుతుంది. Headers అనేది Header గా మారుతుంది. PathPrefix లోపల ఉన్న {...} ప్లేస్హోల్డర్ ఒక PathRegexp మ్యాచర్గా మారుతుంది. Host() లోపల ఉన్న కామా, || తో కలపబడిన రెండు Host() మ్యాచర్లుగా మారుతుంది. సున్నా హిట్స్ అంటే మీ లేబుల్లు ఇప్పటికే v3 సింటాక్స్లో ఉన్నాయని అర్థం, అప్పుడు మైగ్రేషన్ అనేది స్టాటిక్ కాన్ఫిగరేషన్ మరియు ఇమేజ్ ట్యాగ్కు మాత్రమే పరిమితమవుతుంది. స్క్రీన్ నిండా హిట్స్ కనిపిస్తే, ఈ బాక్స్కు ఇదే సరైన ప్రాక్సీనా అని ఆలోచించడానికి ఇది సరైన సమయం, మరియు Traefik, Nginx మరియు Caddy లతో ఎలా పోలుతుంది అనే అంశం, ఇతర రెండు ప్రాక్సీలు ప్రతి అప్లికేషన్కు కోరే అవసరాలతో పోలిస్తే ఈ రీరైటింగ్ ఖర్చు ఎంత ఉంటుందో వివరిస్తుంది.
ఏవి మారవు
Entrypoints మరియు వాటి HTTP-to-HTTPS redirect, రెండు రకాల challenge రకాలను కలిగిన ACME resolvers, exposedByDefault, router మరియు service labels, loadbalancer.server.port, అలాగే dashboard అన్నీ v2 లో పనిచేసినట్లే v3 లో కూడా పనిచేస్తాయి. v2 ద్వారా సృష్టించబడిన acme.json ను v3 కూడా చదువుతుంది కాబట్టి, మీ certificates కూడా అలాగే కొనసాగుతాయి. మీరు ప్రారంభించే ముందు ఫైల్ను బ్యాకప్ తీసుకోండి, ఎందుకంటే ఒకవేళ rollback జరిగినప్పుడు అది పోతే, మీరు నేరుగా Let's Encrypt యొక్క duplicate-certificate rate limit సమస్యను ఎదుర్కోవాల్సి వస్తుంది:
cp ./letsencrypt/acme.json ./letsencrypt/acme.json.v2-backupవలస మార్గం (Migration path)
దశ 1: ప్రస్తుతం మీరు నడుపుతున్న వాటిని పిన్ చేయండి. ఏదైనా traefik:latest లేదా traefik:v2 ట్యాగ్ను మీరు ప్రస్తుతం ఉపయోగిస్తున్న ఖచ్చితమైన రిలీజ్కు మార్చండి (ఉదాహరణకు traefik:v2.11), మరియు మొత్తం compose డైరెక్టరీని git లోకి commit చేయండి. తర్వాతి ప్రతి దశను checkout ద్వారా వెనక్కి తీసుకోవచ్చు. docker compose up -d <service> తో ఒకే సర్వీస్ను రీక్రియేట్ చేయడం మీకు అలవాటు లేకపోతే, Docker Compose ప్రాథమిక మార్గదర్శిని ఈ వలసకు అవసరమైన కార్యకలాపాలను వివరిస్తుంది.
దశ 2: స్టాటిక్ కాన్ఫిగరేషన్ను శుభ్రం చేసి, compatibility mode ను ఆన్ చేయండి. v3 లో తొలగించిన ప్రతి ఆప్షన్ను (pilot, swarmMode, tls.caOptional, experimental.http3) తొలగించండి, ఆపై రూల్స్ను డిఫాల్ట్గా v2 సింటాక్స్గా పరిగణించమని v3 కి చెప్పండి. traefik.yml లో:
core:
defaultRuleSyntax: v2లేదా compose command: జాబితాలో ఫ్లాగ్గా: --core.defaultRuleSyntax=v2. Compatibility mode కేవలం రూల్ సింటాక్స్కు మాత్రమే వర్తిస్తుంది. ఇది తొలగించిన ఆప్షన్లను తిరిగి తీసుకురాదు మరియు మిడిల్వేర్ పేర్లను మీ కోసం మార్చదు.
దశ 3: మిడిల్వేర్ పేరు మార్పులకు సిద్ధం చేయండి. మీ compose ఫైళ్లలో పాత పేర్ల కోసం వెతకండి: grep -rn ipwhitelist docker-compose*.yml. ప్రతి ipwhitelist లేబుల్ను ipallowlist కి మార్చండి, కానీ ఈ మార్పును ఇప్పుడే అమలు చేయవద్దు, ఎందుకంటే v2 లో కొత్త పేరు ఉండదు. ఈ మార్పులు తర్వాతి దశలో జరిగే మార్పుతో కలిపి అమలు చేయాలి. (ఒకవేళ ఏదైనా మిగిలిపోతే, ప్రస్తుత v3 పాత పేరును deprecated alias గా గుర్తిస్తుంది, కాబట్టి జాబితా అమలులో ఉంటుంది; దీన్ని అర్ధరాత్రి కాకుండా తర్వాతి పాస్లో సరిచేయండి.)
దశ 4: ఇమేజ్ ట్యాగ్ను మార్చండి. Traefik ఇమేజ్ను ప్రస్తుత v3 రిలీజ్కు సెట్ చేయండి, రాసే సమయానికి అది traefik:v3.5, ఆపై:
docker compose up -d
docker compose logs -f traefikCompatibility mode ఆన్లో ఉన్నందున, మీ v2 రూల్స్ పనిచేస్తూనే ఉంటాయి. అలాగే up -d ద్వారా మీరు పేరు మార్చిన మిడిల్వేర్ లేబుల్స్ ఉన్న సర్వీసులు రీక్రియేట్ చేయబడతాయి కాబట్టి, ఆ రౌటర్లు సరిగ్గా పనిచేస్తాయి. ఆరోగ్యకరమైన లాగ్లో field not found లైన్ మరియు does not exist లైన్ ఉండకూడదు.
ఈ దశలో ఏర్పడే విరామం గురించి నిజాయితీగా ఉండండి. v3 కి తెలియని మిడిల్వేర్ పేరును (టైపో లేదా తొలగించిన ఆప్షన్) సూచించే రౌటర్, కొత్త Traefik ప్రారంభమైనప్పటి నుండి దాని యాప్ కంటైనర్ రీక్రియేట్ అయ్యే వరకు పనిచేయదు. ఒకే బాక్స్పై ఇది docker compose up -d జాబితాను పూర్తి చేయడానికి పట్టే కొన్ని సెకన్లు మాత్రమే. ఒక రూట్ అస్సలు ఆగకూడదు అనుకుంటే, మార్పుకు ముందే ఆ రౌటర్ యొక్క middlewares లేబుల్ నుండి పేరు మార్చిన మిడిల్వేర్ను తొలగించి, ఆ తర్వాత తిరిగి జోడించండి. ఆ నిమిషం పాటు IP allow list లేకుండా ఆ రూట్ పనిచేయగలదో లేదో ముందే నిర్ణయించుకోండి.
దశ 5: సర్వీస్ వారీగా రూల్స్ను వలస చేయండి. ఒకసారి ఒక యాప్ చొప్పున పని చేయండి: దాని రూల్ను v3 సింటాక్స్లోకి మార్చండి, ఆ సర్వీస్ను మాత్రమే docker compose up -d app తో రీక్రియేట్ చేయండి మరియు ముందుకు వెళ్లే ముందు పరీక్షించండి. ఒక సర్వీస్కు మీరు ఇంకా మార్చలేని రూల్ ఉంటే, ఆ రౌటర్కు traefik.http.routers.app.ruleSyntax=v2 లేబుల్ను ఇచ్చి ముందుకు సాగండి.
దశ 6: Compatibility mode ను ఆఫ్ చేయండి. ప్రతి రూల్ v3 సింటాక్స్లో ఉన్నప్పుడు, defaultRuleSyntax మరియు ఏదైనా ruleSyntax లేబుల్స్ను తొలగించండి, Traefik ను రీస్టార్ట్ చేయండి, మరియు ప్రతి రౌటర్ డాష్బోర్డ్లో గ్రీన్గా కనిపిస్తుందో లేదో నిర్ధారించుకోండి. Compatibility mode ఆన్లో ఉంచి అలవాటు పడకండి: Traefik v3.4 లో ఈ రెండు ఆప్షన్లను deprecated గా ప్రకటించింది మరియు తర్వాతి మేజర్ వెర్షన్లో వాటిని తొలగిస్తుంది, కాబట్టి ఇవి కేవలం తాత్కాలిక వంతెనలు మాత్రమే, గమ్యస్థానాలు కావు.
ముందు మరియు తర్వాత: ఒక సర్వీస్ లేబుల్స్
ఒకేసారి అన్ని ముఖ్యమైన మార్పులను కలిగి ఉన్న ఒక అప్లికేషన్ ఇక్కడ ఉంది: ఇది మల్టీ-వాల్యూ Host, ఒక PathPrefix ప్లేస్హోల్డర్ మరియు ఒక ipWhiteList మిడిల్వేర్ను కలిగి ఉంటుంది. v2 బ్లాక్:
app:
image: app:1.4
restart: unless-stopped
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.app.rule=Host(`app.example.com`,`www.example.com`) && PathPrefix(`/api/{version:v[0-9]+}`)
- traefik.http.routers.app.entrypoints=websecure
- traefik.http.routers.app.tls.certresolver=le
- traefik.http.routers.app.middlewares=office
- traefik.http.middlewares.office.ipwhitelist.sourcerange=10.0.0.0/24
- traefik.http.services.app.loadbalancer.server.port=8080మరియు అదే సర్వీస్ v3కి మైగ్రేట్ చేయబడింది:
app:
image: app:1.4
restart: unless-stopped
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.app.rule=(Host(`app.example.com`) || Host(`www.example.com`)) && PathRegexp(`^/api/v[0-9]+`)
- traefik.http.routers.app.entrypoints=websecure
- traefik.http.routers.app.tls.certresolver=le
- traefik.http.routers.app.middlewares=office
- traefik.http.middlewares.office.ipallowlist.sourcerange=10.0.0.0/24
- traefik.http.services.app.loadbalancer.server.port=8080రెండు లేబుల్స్ మారాయి. ఈ నియమం దాని మల్టీ-వాల్యూ Hostని || ద్వారా అనుసంధానించబడిన రెండు మ్యాచర్లుగా విభజించింది మరియు ప్లేస్హోల్డర్ను PathRegexp కోసం మార్చింది, అలాగే మిడిల్వేర్ లేబుల్ ipwhitelistని ipallowlist కోసం మార్చుకుంది. ఎంట్రీపాయింట్, సర్టిఫికేట్ రిజాల్వర్, రూటర్-టు-మిడిల్వేర్ వైరింగ్ మరియు సర్వీస్ పోర్ట్ మారలేదు.
Dashboard తో ప్రతి సేవను పరీక్షించండి
ప్రతి మార్పు తర్వాత, dashboard లోని HTTP routers పేజీని తెరవండి. ప్రతి router ఆకుపచ్చ రంగులో ఉండాలి. error badge ఉన్న router దాని ఖచ్చితమైన సమస్యను తెలియజేస్తుంది; సాధారణంగా ఇది కొత్త పేరుతో లేని middleware లేదా v3 వెర్షన్ అర్థం చేసుకోలేని rule వల్ల జరుగుతుంది. ఆ తర్వాత, ఒక్కో hostname చొప్పున బయటి నుంచి నిర్ధారించుకోండి:
curl -sI https://app.example.com/api/v1/status200 లేదా మీ అప్లికేషన్ యొక్క సాధారణ redirect వస్తే, routing మరియు TLS రెండూ సరిగ్గా పనిచేస్తున్నాయని అర్థం. Traefik నుంచి 404 వస్తే, router ప్రారంభం కాలేదని అర్థం; dashboard కు తిరిగి వెళ్లి అక్కడ ఉన్న error ను చదవండి. మీరు పని చేస్తున్నప్పుడు రెండవ terminal లో docker compose logs -f traefik ను తెరిచి ఉంచండి, ఎందుకంటే container restart అయిన ప్రతిసారీ parsing వైఫల్యాలు అక్కడ కనిపిస్తాయి.
Rollback విశ్వసనీయత
ప్రతి సేవ v3 పై విజయవంతంగా రన్ అయ్యే వరకు మరియు క్షుణ్ణంగా పరీక్షించే వరకు v2 compose ఫైల్, దాని static configuration, మరియు acme.json బ్యాకప్ను అలాగే ఉంచండి. Rollback చేయడం అంటే migration కు ముందున్న commit కి తిరిగి వెళ్లి docker compose up -d రన్ చేయడం. ఇది కేవలం image tag మాత్రమే కాకుండా మొత్తం ఫైల్కు వర్తించాలి, ఎందుకంటే v3-only లేబుల్స్ v2లో పనిచేయవు; v2 లేబుల్స్ v3లో ఎలాగైతే పనిచేయవో, ఇవి కూడా అలాగే విఫలమవుతాయి: ipallowlist అనేది v2లో ఉండదు, మరియు PathRegexp మ్యాచర్ కూడా అక్కడ parse అవ్వదు. ఒకవేళ ఈ ప్రక్రియలో acme.json పోయినా లేదా పాడైనా, v2ని ప్రారంభించే ముందే బ్యాకప్ కాపీని restore చేయండి. తద్వారా, rollback చేసేటప్పుడు Let's Encrypt రేట్ లిమిట్ అయిపోకుండా, ఒకేసారి ఐదు సర్టిఫికెట్లను మళ్లీ జారీ చేయాల్సిన అవసరం ఉండదు.
FAQ
Traefik v3 కోసం ప్రతి router rule ను తిరిగి రాయాలా?
అవసరం లేదు. Backticks తో రాసిన సాధారణ Host(app.example.com) rule రెండు వెర్షన్లలోనూ పనిచేస్తుంది, ఇది చాలా వరకు Compose సెటప్లకు సరిపోతుంది. కేవలం v2-మాత్రమే ఉన్న ఫీచర్లను వాడినప్పుడు మాత్రమే తిరిగి రాయాల్సి ఉంటుంది: Path మరియు PathPrefix లోపల regex లేదా placeholders, ఒకే Host() లో అనేక hostnames, backticks కు బదులుగా quotes వాడటం, లేదా తొలగించబడిన Headers, HeadersRegexp, మరియు HostHeader matchers వాడినప్పుడు మాత్రమే మార్పులు అవసరం.
Traefik v3 లో ipWhiteList కు ఏమైంది?
దీనిని ipAllowList గా పేరు మార్చారు, దీని configuration లో ఎటువంటి మార్పు లేదు. కాబట్టి, traefik.http.middlewares.office.ipwhitelist.sourcerange=10.0.0.0/24 వంటి v2 label ను ipallowlist తో అదే లైన్లో మార్చుకోవచ్చు. v3.5 తో సహా ప్రస్తుత v3 releases, పాత పేరును deprecated alias గా అంగీకరిస్తాయి. కాబట్టి పేరు మార్చని label కూడా allowlist ను అమలు చేస్తుంది. అయితే, దీనిని తాత్కాలికంగా మాత్రమే భావించాలి; ఈ alias ను భవిష్యత్తులో తొలగిస్తారు. Traefik కు తెలియని middleware పేరు వాడితే, అది router error ను ఇచ్చి 404 ను చూపిస్తుంది. Dashboard లో error కనిపిస్తుంది మరియు ఆ hostname కు వచ్చే అభ్యర్థనలు 404 ను పొందుతాయి.
Traefik v3 ఇప్పటికీ v2 rule syntax ను చదవగలదా?
అవును. మీరు migrate అవుతున్నప్పుడు v2 syntax ను default గా ఉంచడానికి static configuration లో core.defaultRuleSyntax: v2 ను సెట్ చేయండి. Default ను తిరిగి మార్చిన తర్వాత, మిగిలిపోయిన వాటి కోసం per-router ruleSyntax=v2 label ను వాడండి. ఇవి రెండింటినీ తాత్కాలికంగానే పరిగణించండి: Traefik వీటిని v3.4 లో deprecated గా ప్రకటించింది మరియు తదుపరి major version లో వీటిని తొలగిస్తుంది.
Upgrade తర్వాత నా Let's Encrypt certificates అలాగే ఉంటాయా?
అవును. Traefik v3, v2 రాసిన acme.json ఫైల్ను చదువుతుంది, కాబట్టి binary మారినంత మాత్రాన certificates మళ్ళీ జారీ చేయబడవు. ఏదేమైనా, ప్రారంభించే ముందు ఆ ఫైల్ను సురక్షితమైన చోట కాపీ చేయండి. ఎందుకంటే rollback చేసినప్పుడు లేదా acme.json ఉన్న volume తొలగిపోయినప్పుడు, అన్ని certificates ఒకేసారి మళ్ళీ జారీ చేయాల్సి వస్తుంది. Let's Encrypt ఒకే రకమైన hostnames కోసం వారానికి ఐదు duplicate certificates కు మాత్రమే అనుమతిస్తుంది.
Upgrade తర్వాత Traefik v3 ఎందుకు ప్రారంభం కావడం లేదు?
చాలా సందర్భాలలో static configuration లో v3 తొలగించిన option ఉండటం వల్ల ఇలా జరుగుతుంది. తనకు తెలియని options ఉంటే Traefik ప్రారంభం కాదు. బాగా తెలిసిన పాత ఆప్షన్ల (pilot, providers.docker.swarmMode, experimental.http3) విషయంలో, log లో incompatible deprecated static option found అని వచ్చి ఆ తప్పుకు కారణమైన దాని పేరును చూపిస్తుంది. tls.caOptional వంటి v3 కు తెలియని వాటి కోసం, అది node తో పాటు field not found అని చూపిస్తుంది. వాటిని తొలగించి లేదా మార్చి, container ను మళ్ళీ ప్రారంభించండి.