Ingress nginx
svc๋ฅผ ingress๋ก ์ธ๋ถ์ ์คํ
regex
https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/
priority
In NGINX, regular expressions follow a first match policy, ๊ทธ๋ฌ๋ฏ๋ก ingress nginx๊ฐ ์ ๊ท์์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ญ์์ผ๋ก ์ ๋ ฌ์ ํํ controller์ ์ ๋ฐ์ดํธํฉ๋๋ค.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress-1
spec:
rules:
- host: test.com
http:
paths:
- path: /foo/bar
backend:
serviceName: service1
servicePort: 80
- path: /foo/bar/
backend:
serviceName: service2
servicePort: 80์ด ๊ฐ์ ํ์ผ์ด ๋๊ฐ๋ฉด ์๋์ ๊ฐ์ด ์ ๋ ฌ
test.com/foo/bar/1 matches ~* ^/foo/bar/.+ and will go to service 3.
test.com/foo/bar/ matches ~* ^/foo/bar/ and will go to service 2.
test.com/foo/bar matches ~* ^/foo/bar and will go to service 1.
ํ ์คํธ๋ฅผ ์ํด ๋ค์๊ณผ๊ฐ์ yaml์ ๋ง๋ค์ด์ ์ ์ฉํ์ฟ๋ค.
๊ฒฐ๊ณผ ์์ฑ๋ ํ์ผ์ด๋ค. ๊ฒฐ๋ก ๋ถํฐ ์ด์ผ๊ธฐํ๋ฉด ingress์ rewrite๋ฅผ ์ฐ๋ฉด ๊ทธ ์ธ๊ทธ๋ ์ค์๋ง ์ ์ฉ์ด ๋๋ค. ์๋๋ณด๋ฉด /api๋ถ๋ถ์๋ง rewrite $1 ๊ฐ ์ ์ฉ๋์ด ์๋ค.
์ฃผ์์ฌํญ
์๋์ ๊ฐ์ด ๋ง๋ค๋ฉด ๋ฌธ์ ๊ฐ ์์์ ์๋ค.
์์ฑ๋ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
test.com/foo/bar/bar ์ด๊ฑธ ์์ฒญํ๋ฉด ^/foo/bar/[A-Z0-9]{3} ์ฌ๊ธฐ์ ๊ฑธ๋ ค๋ฒ๋ฆฐ๋ค. ์ํ๋๋๋ก ์๋๋ค.
๋ ์๊ณ ์ถ์ผ๋ฉด ๋ค์ ๋งํฌ๋ฅผ ์ฝ์ด๋ณด๋ฉด๋๋ค.
log - 2022-09-11
๋ก๊ทธ๋ฅผ ์ปค์คํฐ๋ง์ด์ฆ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ด๋ จ ๋ํ๋จผํธ๋ ๋ค์์์ ์ป์์ ์๋ค.
log-format์ ํฐ ๋์์ด ์๋์๋ค. ๊ทธ๋์ 2๋ฒ์ ์ฐธ๊ณ ํด์ ์งํํ๋ค.
configmap์ ์ถ๊ฐํ๋ฉด ๋๋๊ฒ์ธ๋ฐ helm์ ์ฌ์ฉํ๋ค๋ณด๋ ์ด๋์ ์ถ๊ฐํ๋์ง ์ํ์ด ์์ด์ ๊ณ ์ํ๋ค.
heml์ฐจํธ์ ๋ณด๋ฉด ๋ค์ ๋ถ๋ถ์ด ์๋ค.
์ฃผ์์ฒ๋ฆฌํ ์๋์ฒ๋ผ ์ถ๊ฐ configmap๊ด๋ จ ๋ด์ฉ์ ์ถ๊ฐํ๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ๊ฑด log-format-upstream์ ์์ ํด์ผ๋๋ค.

์๋ ๋ณด์ด๋ log-format-stream์ ๊ฐ์ง๊ณ ์๋ฌด๋ฆฌ ํด๋ ์ ์ฉ๋์ง๊ฐ ์์๋ค. log-format-upstream์ ์ฌ์ฉํ๋๊ฑธ ๋ณด๊ณ ์ ์ฉํด๋ณด๋ ์ ๋์๋ค.
๊ธฐ๋ณธ๊ฐ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋์ ๊ฒฝ์ฐ๋ ๋ก๊ทธ์ ingress name์ ์ถ๊ฐ๋ก ๋ฃ๊ณ ์ถ์๋ค. ํ์ธํด๋ณด๋ 1๋ฒ ๋ฌธ์์์ ์ถ๊ฐ๋ก ์ฌ์ฉํ ์ ์๋ค๊ณ ํ๋ค.

๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํ๋ค.
๋์ ๊ฒฝ์ฐ๋ ๊ณ ๊ฐ ์์ดํผ๋ ์ค์ํ ์ํฉ์ด ์๋๊ณ ๋ก์ปฌ ์๊ฐ๋ ์ค์์น ์์์ ์ ๊ฑฐํ๊ณ ์ธ๊ทธ๋ ์ค ์ด๋ฆ์ ๋งจ ์ฒ์์ ๋ฃ์ด์ฃผ๊ณ ๋๋จธ์ง๋ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋์ค๋๊ฒ์ ํ์ธํ๋ค.
loki์์ ํ์ธํด๋ณด๊ธฐ
์ด์ ๋ก๊ทธ๋ฅผ ๋กํค์์ ํ์ธํด๋ณด์.
์ด๋ ๊ฒ ํ๋ฉด ingress name๋ณ๋ก ํํฐ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
grafana dash board
์๋์ฒ๋ผ dashboard๋ฅผ ๋ง๋ค์ด ๋ณด์๋ค.
์์ ๋ ๊ทธ๋ํ๋ ํ๋ก๋ฉํ ์ฐ์ค์์ ๋ฉํธ๋ฆญ์ ๊ฐ์ ธ์์ ํํํ๊ณ ๋ง์ง๋ง ํ ์ด๋ธ์ ๋กํค์์ ๋ก๊ทธ๋ฅผ ๊ฐ์ ธ์์ ๋ฟ๋ ค์ค๋ค.

์๋ฌ๊ฐ ๋ฐ์ํ ๋ ์ด์ ๋ก๊ทธ๋ ํจ๊ป ๋ณผ์๊ฐ ์์ด์ ์ข๋ค.
๋ฐ์๋ณด๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
log-format vs log-format-upstream
์์ง ์ ๋ชจ๋ฅด๋๋ฐ ์ด ๋ค์ด์ด๊ทธ๋จ์ด ์ข ๋์์ด ๋๋๋ฏ.

์ด๊ฑธ ํ๋ฒ ์ ์ฝ์ด๋ด์ผ๊ฒ๋ค. https://www.nginx.com/blog/logging-upstream-nginx-traffic-cdn77/ ๊ทธ๋์ ๋ ingress-nginx๋ ์ upstream๋ก๊ทธ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ ๊ฐ? ํ๋ก์๋๊น ๋ง๋๊ฒ๋ ๊ฐ๊ณ ...
helmchart ์ฌ์ฉ์ค configmap์ค์
helmchart๋ฅผ ์ฌ์ฉ์ค์ configmap์ ์ค์ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋งค๋ด์ผ๋ฑ์ด ์ ๋ถ configmap๋ง ๋์ค๋ฉด ๋ค์์ฒ๋ผ ํ์.
helm chart ์ config์ ์ค์ ์ ๋ฃ์ผ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ ์ฌ์ฉํ ์ ์๋ ํญ๋ชฉ๋ค์ ๋ค์ ํ์ด์ง์์ ํ์ธํ๋ค.
๊ฝค ๋ง์ ์ต์ ๋ค์ด ์ฌ๊ธฐ์์ ์ฒ๋ฆฌํ ์ ์๋ค.
values ํ์ผ์ ๋ณ๊ฒฝํ argocd์์ ๋ก๋ฉ์ ํ๊ฑฐ๋ ์ ์ฉ์ ํ๋ฉด pod์ ์๋์ผ๋ก config๊ฐ reload๊ฐ ๋๋ค. ์ค์ํ๊ฒ์ pod๊ฐ ์ฌ์์ ๋์ง ์๋๋ค. ์ค์ ๋ง ์๋์ผ๋ก ๋ฆฌ๋ก๋ ๋๋ค.
๋ง์ฝ ์ค์ ์ด ์๋ชป๋๋ฉด test fail ๋๋ฉด์ ๋ฆฌ๋ก๋ฉ ํ์ง ์๋๋ค.
todo
log-format-upstream ๊ณผ log-format์ ์ฐจ์ด์ ํ์ ํ๊ธฐ
dashboard๋ฅผ kube-prometheus์์ ๋ฃ์ด์ค์ผํ๋ค.
Last updated
Was this helpful?