SSD Nodes Learn
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-07-25

Traefik v2 నుండి v3 కి మైగ్రేషన్: ఏమి మారుతుంది

Traefik v3 స్టాటిక్ కాన్ఫిగ్‌లో swarmMode లేదా pilot ఉంటే స్టార్ట్ కాదు. deprecated static option found ఎర్రర్ ఫిక్ చేసి, ipWhiteList ను ipAllowList గా మార్చి, రూల్స్ మైగ్రేట్ చేయండి.

Traefik v2 మరియు v3 మధ్య ఏమి మారుతుంది

Traefik v2 నుండి v3కి వలస ప్రక్రియ ఎక్కువగా పేర్లు మార్చే పనే. ఈ పేరు మార్పుల్లో ప్రధానమైనది ipWhiteList మిడిల్‌వేర్ ipAllowListగా మారడం. దీనికి మించి, v3 రౌటర్ రూల్ సింటాక్స్‌ను కఠినతరం చేస్తుంది (PathPrefix దాని regex ఫీచర్‌లను కోల్పోతుంది, అనేక మ్యాచర్‌లకు పేరు మారుతుంది లేదా తొలగించబడతాయి), కొన్ని ప్రొవైడర్‌లు మరియు ఆప్షన్‌లను పూర్తిగా తొలగిస్తుంది, మిగతా ప్రతిదీ అలాగే పనిచేస్తుంది: ఎంట్రీపాయింట్‌లు, ACME సర్టిఫికేట్ సెటప్, Docker లేబుల్స్ వర్క్‌ఫ్లో, మరియు మీ acme.json అన్నీ అలాగే కొనసాగుతాయి. v3 ఒక కాంపాటిబిలిటీ మోడ్‌ను కూడా అందిస్తుంది. ఇది v2 రూల్ సింటాక్స్‌ను పని చేసేలా ఉంచుతుంది. కాబట్టి ముందుగా బైనరీని అప్‌గ్రేడ్ చేయండి. తర్వాత ఒకే రిస్క్ తో ఒక్క సాయంత్రంలో కాకుండా, ఒక్కో సర్వీసుకు ఒక్కో రూల్‌గా రాయండి.

ఈ గైడ్ Traefik రివర్స్ ప్రాక్సీ గైడ్ నుండి లేబుల్ ఆధారిత Docker Compose సెటప్‌ను ఊహిస్తుంది. ఆ పేజీ v3-స్థానికం; ఇది ఇంకా traefik:v2 ట్యాగ్‌ను రన్ చేస్తున్న బాక్స్ కోసం ఉంది.

పేరు మార్పులు మరియు తొలగింపులు

  • ipWhiteList ఇప్పుడు ipAllowList అయింది, HTTP మరియు TCP మిడిల్‌వేర్ రెండింటికీ. లోపల ఉన్న ఎంపికలలో మార్పు లేదు, కాబట్టి sourcerange దాని ఖచ్చితమైన అర్థాన్ని నిలుపుకుంటుంది. ప్రస్తుత v3 విడుదలలు, v3.5 తో సహా, పాత పేరును ప్రత్యామ్నాయంగా అంగీకరిస్తూనే ఉన్నాయి మరియు జాబితాను అమలు చేస్తూనే ఉన్నాయి, కాబట్టి ఈ ఒక్క పేరు మార్పు దేనినీ ఆపదు. అయినప్పటికీ దాన్ని మార్చండి: ఆ ప్రత్యామ్నాయం తొలగింపుకు షెడ్యూల్ చేయబడింది, మరియు అది పెద్దగా కాకుండా నిశ్శబ్దంగా డిప్రికేషన్ జాబితా నుండి తొలగిపోతుంది.
  • providers.docker.swarmMode=true తొలగించబడింది. Swarm దాని స్వంత ప్రొవైడర్‌ను పొందుతుంది, దీనిని providers.swarm.endpoint గా ఆకృతీకరించారు.
  • pilot విభాగం పూర్తిగా తొలగించబడింది.
  • experimental.http3 తొలగించబడింది. HTTP/3 ఎంట్రీపాయింట్‌పై నేరుగా ప్రారంభించబడుతుంది.
  • tls.caOptional ప్రొవైడర్‌ల నుండి మరియు forwardAuth మిడిల్‌వేర్ నుండి తొలగించబడింది.
  • InfluxDB v1 మెట్రిక్స్ ప్రొవైడర్, Rancher ప్రొవైడర్, మరియు Marathon ప్రొవైడర్ తొలగించబడ్డాయి.
  • ట్రేసింగ్ OpenTelemetryకి మార్చబడింది. ప్రత్యేక ట్రేసింగ్ బ్యాకెండ్‌లు, వాటిలో Jaeger మరియు Zipkin ఇంటిగ్రేషన్‌లు తొలగించబడ్డాయి, మరియు v3 బదులుగా OTLP (OpenTelemetry ప్రొటోకాల్) ఎక్స్‌పోర్ట్ చేస్తుంది.
  • headers మిడిల్‌వేర్ లోపల డిప్రికేటెడ్ ssl* ఎంపికలు (sslRedirect, sslHost, మరియు మిగిలినవి) తొలగించబడ్డాయి. ఎంట్రీపాయింట్ రీడైరెక్షన్‌లు మరియు redirectScheme మిడిల్‌వేర్ అవి స్థానం తీసుకున్నాయి.

ఈ తొలగింపులు కనిపించే దానికన్నా చాలా ముఖ్యమైనవి, ఎందుకంటే Traefik దాని స్టాటిక్ కాన్ఫిగరేషన్‌లో తెలియని ఎంపిక ఉన్నప్పుడు ప్రారంభించడానికి తిరస్కరిస్తుంది. మిగిలిపోయిన pilot లేదా swarmMode లైన్ బూట్ సమయంలో మిగిలిన దాన్ని పేర్కొంటూ incompatible deprecated static option found సందేశంతో కంటైనర్‌ను ఆపివేస్తుంది; Traefik ఎప్పుడూ వినని ఎంపిక (టైపో, లేదా tls.caOptional) దాన్ని field not found తో ఆపివేస్తుంది. మీరు ఇమేజ్ ట్యాగ్‌ను తాకే ముందు స్టాటిక్ కాన్ఫిగరేషన్‌ను శుభ్రపరచండి.

Traefik నిజంగా తెలియని మిడిల్‌వేర్ పేరు (టైపో, లేదా ప్రత్యామ్నాయం కాకుండా తొలగించబడిన పేరు) వేరే విధంగా విఫలమవుతుంది: దాన్ని సూచించే రౌటర్ రౌట్‌కు బదులుగా ఎర్రర్‌తో లోడ్ అవుతుంది, డాష్‌బోర్డ్ దాన్ని గుర్తిస్తుంది, మరియు API middleware "offce@docker" does not exist ని నివేదిస్తుంది. ఆ హోస్ట్‌పేరుకు వచ్చే అభ్యర్థనలు 404 పొందుతాయి ఎందుకంటే రౌటర్ ఎప్పుడూ ప్రారంభం కాలేదు. ప్రస్తుత v3లో ipwhitelist ఈ వర్గంలో లేదని గమనించండి: అది డిప్రికేటెడ్ ప్రత్యామ్నాయంగా మిగిలిపోతుంది, కాబట్టి పేరు మార్చని లేబుల్ నిశ్శబ్దంగా పనిచేస్తూనే ఉంటుంది.

నియమ వాక్య రచనలో మార్పులు

వాస్తవ పునఃరచన నియమాల ద్వారానే జరుగుతుంది. v3 లోని మార్పులు:

  • మ్యాచర్‌ల లోపల విలువల చుట్టూ బ్యాక్‌టిక్‌లు తప్పనిసరి. v2 డబుల్ కోట్స్‌ను కూడా అంగీకరించింది; v3 అంగీకరించదు, కాబట్టి Host("app.example.com") ని Host(app.example.com) గా మార్చాలి.
  • PathPrefix ఇక రెగ్యులర్ ఎక్స్‌ప్రెషన్‌లను లేదా {id}-శైలి ప్లేస్‌హోల్డర్‌లను అర్థం చేసుకోదు. PathPrefix(/api/{version:v[0-9]+}) వంటి v2 నియమాన్ని 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 తొలగించబడింది. v3 లో అదే విషయాన్ని మ్యాచ్ చేసే Host ని ఉపయోగించండి.
  • రెండు కొత్త మ్యాచర్‌లు ఉన్నాయి: ఒకటి 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 సింటాక్స్‌లో ఉన్నాయి, మరియు వలస స్థిర ఆకృతికి ప్లస్‌గా ఇమేజ్ ట్యాగ్‌కు పరిమితమవుతుంది.

ఏమి మార్పు లేకుండా ఉంటుంది

ఎంట్రీపాయింట్‌లు మరియు వాటి HTTP-to-HTTPS రీడైరెక్ట్, రెండు ఛాలెంజ్ రకాలతో ACME రిజాల్వర్‌లు, exposedByDefault, రౌటర్ మరియు సర్వీస్ లేబుల్‌లు, loadbalancer.server.port, మరియు డాష్‌బోర్డ్ అన్నీ v2 లో పనిచేసిన విధంగానే v3 లో కూడా పనిచేస్తాయి. మీ సర్టిఫికేట్‌లు కూడా అలాగే ఉంటాయి, ఎందుకంటే v3 అనేది v2 రాసిన acme.json ను చదువుతూనే ఉంటుంది. ఏదేమైనా మీరు ప్రారంభించడానికి ముందు ఆ ఫైల్‌ను బ్యాకప్ చేయండి, ఎందుకంటే దాన్ని కోల్పోయే రోల్‌బ్యాక్ అనేది నేరుగా Let's Encrypt డూప్లికేట్-సర్టిఫికేట్ రేట్ లిమిట్‌లోకి చేరుకుంటుంది:

cp ./letsencrypt/acme.json ./letsencrypt/acme.json.v2-backup

వలస మార్గం

దశ 1: మీరు నేడు నడుపుతున్నది ఏమిటో నిర్ధారించండి. ఏదైనా traefik:latest లేదా traefik:v2 ట్యాగ్‌ను మీరు ఉన్న ఖచ్చితమైన విడుదలకు మార్చండి, ఉదాహరణకు traefik:v2.11, మరియు మొత్తం compose డైరెక్టరీని gitకి కమిట్ చేయండి. తర్వాత ప్రతి దశ checkoutతో వెనక్కి తీసుకోవడానికి వీలవుతుంది. docker compose up -d <service>తో ఒకే సర్వీస్‌ను రీక్రియేట్ చేయడం ఇంకా మీకు అలవాటు కాకపోతే, Docker Compose ప్రాథమిక మార్గదర్శి ఈ వలస ఆధారపడే కార్యకలాపాలను వివరిస్తుంది.

దశ 2: స్టాటిక్ కాన్ఫిగరేషన్‌ను శుభ్రపరచండి మరియు కంపాటిబిలిటీ మోడ్‌ను ఆన్ చేయండి. v3 డ్రాప్ చేసిన ప్రతి ఆప్షన్‌ను తీసేయండి (pilot, swarmMode, tls.caOptional, experimental.http3), తర్వాత v3కి రూల్స్‌ను డిఫాల్ట్‌గా v2 సింటాక్స్‌గా పరిగణించమని చెప్పండి. traefik.ymlలో:

core:
  defaultRuleSyntax: v2

లేదా compose command: జాబితాలో ఫ్లాగ్‌గా: --core.defaultRuleSyntax=v2. కంపాటిబిలిటీ మోడ్ రూల్ సింటాక్స్‌ను మాత్రమే కవర్ చేస్తుంది. అది తీసివేసిన ఆప్షన్‌లను తిరిగి తెచ్చేది కాదు, మరియు అది మిడిల్‌వేర్‌లను మీ కోసం రీనేమ్ చేసేది కాదు.

దశ 3: మిడిల్‌వేర్ రీనేమ్‌లను సిద్ధం చేయండి. మీ compose ఫైళ్లలో పాత పేర్ల కోసం సెర్చ్ చేయండి: grep -rn ipwhitelist docker-compose*.yml. ప్రతి ipwhitelist లేబుల్‌ను ipallowlistకి సవరించండి, కానీ మార్పును ఇంకా వర్తింపజేయవద్దు, ఎందుకంటే కొత్త పేరు v2లో ఉండదు. ఈ సవరణలు తదుపరి దశలోని ఫ్లిప్‌తో పాటు పంపబడతాయి. (ఒకటి జారిపోతే, ప్రస్తుత v3 పాత పేరును డిప్రికేటెడ్ ఎలియాస్‌గా గౌరవిస్తుంది కాబట్టి, జాబితా ఎన్‌ఫోర్స్ చేయడం కొనసాగుతుంది; దాన్ని 2am వద్ద కాకుండా తదుపరి పాస్‌లో ఫిక్స్ చేయండి.)

దశ 4: ఇమేజ్ ట్యాగ్‌ను ఫ్లిప్ చేయండి. Traefik ఇమేజ్‌ను ప్రస్తుత v3 విడుదలకు సెట్ చేయండి, ఈ రచన సమయంలో traefik:v3.5, తర్వాత:

docker compose up -d
docker compose logs -f traefik

కంపాటిబిలిటీ మోడ్ ఆన్‌లో ఉన్నందున, మీ v2 రూల్స్ మ్యాచ్ అవుతూనే ఉంటాయి, మరియు up -d మీరు రీనేమ్ చేసిన మిడిల్‌వేర్ లేబుల్స్ ఉన్న సర్వీస్‌లను కూడా రీక్రియేట్ చేసినందున, ఆ రౌటర్‌లు క్లీన్‌గా అప్ అవుతాయి. ఆరోగ్యకరమైన లాగ్‌లో field not found లైన్ ఉండదు మరియు does not exist లైన్ ఉండదు.

ఈ దశ తెరిచే విండో గురించి మీతో నిజాయితీగా ఉండండి. v3 నిజంగా తెలియని మిడిల్‌వేర్ పేరును సూచించే రౌటర్ (టైపో, లేదా తీసివేసిన ఆప్షన్) కొత్త Traefik ప్రారంభమైన క్షణం నుండి దాని యాప్ కంటైనర్ రీక్రియేట్ అయ్యే వరకు డౌన్ అవుతుంది, ఇది ఒక బాక్స్‌లో docker compose up -dకు జాబితా ద్వారా పని చేయడానికి కావలసిన కొన్ని సెకన్లు. ఒక రూట్ నిజంగా బ్లింక్ చేయలేకపోతే, ఫ్లిప్‌కు ముందు ఆ రౌటర్ middlewares లేబుల్ నుండి రీనేమ్ చేసిన మిడిల్‌వేర్‌ను తీసేయండి మరియు తర్వాత తిరిగి జోడించండి, మరియు మధ్యలో ఉన్న నిమిషం పాటు ఆ రూట్ దాని IP అలో జాబితా లేకుండా జీవించగలదో లేదో ముందుగా నిర్ణయించండి.

దశ 5: రూల్స్‌ను సర్వీస్ వారీగా వలస పంపండి. ఒక్క యాప్ ఒక్క సారి పని చేయండి: దాని రూల్‌ను v3 సింటాక్స్‌కు రాయండి, ఆ సర్వీస్‌ను మాత్రమే docker compose up -d appతో రీక్రియేట్ చేయండి, మరియు ముందుకు సాగే ముందు దాన్ని టెస్ట్ చేయండి. ఒక సర్వీస్‌కు మీరు ఇంకా రాయలేని రూల్ ఉంటే, ఆ ఒక్క రౌటర్‌కు ఎస్కేప్ హ్యాచ్ లేబుల్ traefik.http.routers.app.ruleSyntax=v2 ఇవ్వండి మరియు ముందుకు సాగండి.

దశ 6: కంపాటిబిలిటీ మోడ్‌ను ఆఫ్ చేయండి. ప్రతి రూల్ v3 సింటాక్స్‌లో ఉన్నప్పుడు, defaultRuleSyntax మరియు ఏదైనా ruleSyntax లేబుల్‌లను తొలగించండి, Traefikను రీస్టార్ట్ చేయండి, మరియు ప్రతి రౌటర్ డాష్‌బోర్డ్‌లో ఇంకా గ్రీన్‌గా చూపిస్తున్నదని నిర్ధారించుకోండి. కంపాటిబిలిటీ మోడ్ ఆన్‌తో స్థిరపడకండి: Traefik రెండు ఆప్షన్‌లను v3.4లో డిప్రికేట్ చేసింది మరియు తదుపరి మేజర్ వెర్షన్‌లో వాటిని తొలగిస్తుంది, కాబట్టి అవి ఒక వారధి, గమ్యం కాదు.

మార్పుకు ముందు, తర్వాత: ఒక సర్వీసు లేబుల్స్

ఇక్కడ ఒక యాప్ ఉంది, అది ప్రతి ప్రసిద్ధ మార్పును ఒకేసారి కలిగి ఉంది: ఒక మల్టీ-వాల్యూ 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తో మార్చింది. ఎంట్రీపాయింట్, సర్టిఫికేట్ రిజాల్వర్, రౌటర్-టు-మిడిల్‌వేర్ వైరింగ్, మరియు సర్వీస్ పోర్ట్ మారలేదు.

డాష్‌బోర్డ్‌తో ప్రతి సర్వీసును పరీక్షించండి

ప్రతి మార్పు తర్వాత, డాష్‌బోర్డ్‌లోని HTTP రౌటర్ల పేజీని తెరవండి. ప్రతి రౌటర్ పచ్చగా ఉండాలి. ఎర్రర్ బ్యాడ్జ్ ఉన్న రౌటర్ దాని సరైన సమస్యను చూపిస్తుంది. అది సాధారణంగా కొత్త పేరుతో లేని మిడిల్‌వేర్ కావచ్చు. లేదా v3 పార్స్ చేయలేని రూల్ కావచ్చు. తర్వాత బయటి నుండి ఒక్కో హోస్ట్‌నేమ్‌ను నిర్ధారించండి:

curl -sI https://app.example.com/api/v1/status

200 లేదా మీ యాప్‌కు అసలైన రీడైరెక్ట్ అంటే రౌటింగ్, TLS రెండూ సజావుగా పనిచేశాయి. Traefik నుండి వచ్చిన 404 అంటే ఆ రౌటర్ పనిచేయలేదు. డాష్‌బోర్డ్‌కు తిరిగి వెళ్లి దాని ఎర్రర్‌ను చదవండి. మీరు పనిచేసేటప్పుడు రెండవ టెర్మినల్‌లో docker compose logs -f traefik ను తెరిచి ఉంచండి. ఎందుకంటే కంటైనర్ రీస్టార్ట్ అయిన క్షణంలోనే ప్రతి పార్సింగ్ వైఫల్యం అక్కడ కనిపిస్తుంది.

రోల్‌బ్యాక్ స్పష్టత

ప్రతి సర్వీస్ v3 పై రౌట్ అయ్యే వరకు మరియు వాస్తవంగా పనిచేసిన వరకు v2 కంపోజ్ ఫైల్‌ను, దాని స్టాటిక్ కాన్ఫిగరేషన్‌ను, మరియు acme.json బ్యాకప్‌ను ఉంచండి. రోల్‌బ్యాక్ అంటే మైగ్రేషన్‌కు ముందున్న కమిట్‌ను చెక్ అవుట్ చేయడం మరియు docker compose up -d నడపడం. అది మొత్తం ఫైల్ అయి ఉండాలి, కేవలం ఇమేజ్ ట్యాగ్ కాదు. ఎందుకంటే v3-మాత్రమే ఉన్న లేబుల్‌లు v2 కింద సరైనవి కావు, అదే విధంగా v2 లేబుల్‌లు v3 కింద సరైనవి కావు: ipallowlist అనేది v2 లో ఉండదు, మరియు PathRegexp మ్యాచర్ కూడా అక్కడ పార్స్ కాదు. మార్గమధ్యంలో acme.json పోయినా లేదా దెబ్బతిన్నా, v2 ని ప్రారంభించడానికి ముందు బ్యాకప్ కాపీని రిస్టోర్ చేయండి. దీనివల్ల రోల్‌బ్యాక్ ఒకేసారి ఐదు సర్టిఫికెట్‌లను మళ్లీ జారీ చేసుకుని మీ Let's Encrypt రేట్ లిమిట్‌ను వాడేయదు.

FAQ

Traefik v3 కోసం ప్రతి రూటర్ నియమాన్ని నేను తిరిగి రాయాలా?

లేదు. బ్యాక్‌టిక్‌లతో రాసిన సాధారణ Host(app.example.com) నియమం రెండు వెర్షన్‌లలోనూ చెల్లుతుంది, మరియు అది చాలా Compose సెటప్‌లను కవర్ చేస్తుంది. ఒక నియమం v2-మాత్రమే ఉన్న ఫీచర్‌లను ఉపయోగించినప్పుడు మాత్రమే తిరిగి రాయడం అవసరం: Path మరియు PathPrefix లోపల regex లేదా ప్లేస్‌హోల్డర్‌లు, ఒకే Host() లోపల అనేక హోస్ట్‌పేర్లు, బ్యాక్‌టిక్‌ల బదులుగా కోట్స్, లేదా తొలగించబడిన Headers, HeadersRegexp, మరియు HostHeader మ్యాచర్‌లు.

Traefik v3 లో ipWhiteList కి ఏమి జరిగింది?

దాని పేరు ipAllowList గా మార్చబడింది, లోపల కాన్ఫిగరేషన్ మార్చబడలేదు, కాబట్టి traefik.http.middlewares.office.ipwhitelist.sourcerange=10.0.0.0/24 వంటి v2 లేబుల్ దానిలో ipallowlist తో అదే వరుసగా మారుతుంది. ప్రస్తుత v3 రిలీజ్‌లు, v3.5 తో సహా, పాత పేరును డిప్రికేటెడ్ ఎలియాస్‌గా ఇప్పటికీ అంగీకరిస్తాయి, కాబట్టి పేరు మార్చని లేబుల్ అలాగే అనుమతి జాబితాను నిశ్శబ్దంగా అమలు చేస్తూనే ఉంటుంది. దాన్ని తాత్కాలిక సమయంగా భావించండి, పేరు మార్చకూడదని వదిలివేయడానికి కారణంగా కాదు: ఆ ఎలియాస్ తొలగించడానికి షెడ్యూల్ చేయబడింది, మరియు Traefik నిజంగా తెలియని మిడిల్‌వేర్ పేరు రౌటర్ ఎర్రర్ మరియు 404 తో బదులుగా బిగ్గరగా విఫలమవుతుంది. డాష్‌బోర్డ్ ఆ ఎర్రర్‌ను చూపిస్తుంది, మరియు ఆ హోస్ట్‌పేరుకు వచ్చే అభ్యర్థనలు 404 అందిస్తాయి.

Traefik v3 ఇంకా v2 నియమ సింటాక్స్‌ను చదవగలదా?

అవును. మైగ్రేట్ చేసేటప్పుడు v2 సింటాక్స్‌ను డిఫాల్ట్‌గా ఉంచడానికి స్టాటిక్ కాన్ఫిగరేషన్‌లో core.defaultRuleSyntax: v2 సెట్ చేయండి, మరియు డిఫాల్ట్‌ను తిరిగి మార్చిన తర్వాత వ్యక్తిగత మిగిలిపోయిన వాటి కోసం ప్రతి-రూటర్ ruleSyntax=v2 లేబుల్‌ను ఉపయోగించండి. రెండింటినీ తాత్కాలికంగా భావించండి: Traefik అవి v3.4 లో డిప్రికేట్ చేసింది మరియు తదుపరి ప్రధాన వెర్షన్‌లో వాటిని తొలగిస్తుంది.

నా Let's Encrypt సర్టిఫికెట్‌లు అప్‌గ్రేడ్ తర్వాత నిలుస్తాయా?

అవును. Traefik v3 అనేది v2 రాసిన acme.json ఫైల్‌ను చదవడం కొనసాగిస్తుంది, కాబట్టి బైనరీ మారిందనే కారణంగా సర్టిఫికెట్‌లు మళ్లీ జారీ చేయబడవు. ఏదేమైనా మీరు ప్రారంభించడానికి ముందు ఫైల్‌ను ఎక్కడైనా సురక్షితంగా కాపీ చేయండి, ఎందుకంటే రోల్‌బ్యాక్ లేదా acme.json కోల్పోయే తొలగించబడిన వాల్యూమ్ ఒకేసారి ప్రతి సర్టిఫికెట్‌ను మళ్లీ జారీ చేయవలసిన అవసరాన్ని కలిగిస్తుంది, మరియు Let's Encrypt ఒకే హోస్ట్‌పేర్ల సమితికి వారానికి ఐదు డూప్లికేట్ సర్టిఫికెట్‌లను మాత్రమే అనుమతిస్తుంది.

అప్‌గ్రేడ్ తర్వాత Traefik v3 ప్రారంభించడంలో ఎందుకు విఫలమవుతుంది?

దాదాపు ఎల్లప్పుడూ స్టాటిక్ కాన్ఫిగరేషన్‌లో v3 తొలగించిన ఎంపిక ఇంకా ఉండటం వల్ల, మరియు Traefik గుర్తించని ఎంపికలపై ప్రారంభించడానికి నిరాకరించడం వల్ల. సుపరిచిత మిగిలిన వాటికి (pilot, providers.docker.swarmMode, experimental.http3) లాగ్ incompatible deprecated static option found అని చెబుతుంది మరియు సమస్యకారకుడిని పేర్కొంటుంది; v3 ఎప్పుడూ వినని వాటికి, ఉదాహరణకు tls.caOptional, అది నోడ్‌తో field not found అని చెబుతుంది. ప్రతి ఒక్కదాన్ని తొలగించండి లేదా భర్తీ చేయండి, తర్వాత కంటైనర్‌ను మళ్లీ ప్రారంభించండి.