docker pull nginx:latest
https://hyeo-noo.tistory.com/385
#우분투 리눅스
sudo snap install helm --classic
일반적으로 사용하는 helm의 stable repo가 업데이트를 중단했고,
k8s는 빠르게 업데이트 되는 중이다.
stable/nginx-ingress는 사용하기엔 너무 옛날 버전이라서,
k8s에서 따로 배포하는 ingress-nginx repo를 사용해 ingress-controller를 설정해 보았다.
cd ~
mkdir k8s/nginx
cd nginx
nginx pod와 service 생성
# nginx.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx:1.16
name: nginx
resources: {}
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: nginxsvc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
Service의 Type은 ClusterIP로 설정한다.
kubectl apply -f mynginx.yaml
helm repo 추가
GitHub - kubernetes/ingress-nginx: NGINX Ingress Controller for Kubernetes
NGINX Ingress Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.
github.com
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Ingress namespace 생성
kubectl create ns ingress-nginx
helm repo update & search
helm repo update
helm search repo ingress-nginx
helm install ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx
kubectl get pod -n ingress-nginx
kubectl get svc -n ingress-nginx
ingress가 구동되었다.
ingress-controller 생성
# mynginx-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
name: mynginx-ingress
spec:
rules:
# - host: -> domain이 없는 경우 생략 가능
- http:
paths:
- path: /nginx
pathType: Prefix
backend:
service:
name: nginxsvc
port:
number: 80
위에거 대신
https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters
Bare metal clusters
kubectl apply -f mynginx-ingress.yaml
kubectl get ing
추가사항
Error from server (InternalError): error when creating "aomd-ingress.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=10s": context deadline exceeded
ingress controller 가 제대로 생성되지 않고, 위와 같은 에러가 발생한다면
동작에 직접적인 영향을 미치지 않는 webhook을 제거하면 된다.
kubectl delete validatingwebhookconfiguration ingress-nginx-admission
연결 확인
https://www.youtube.com/watch?v=9TMIetXb6Pw&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=29
service - nodeport
외부에서 로드발랜싱으로 포트포워딩을 하려면 포트가 정해져있어야하기때문에
이부분 수정함
nodeport기반의 서비스에서
외부 워커노드에 30100으로 들어오면(고정된 포트) 80포트로 웹서비스로 연결되도록
외부 워커노드에 30200으로 들어오면(고정된 포트) 443포트로 웹서비스로 연결되도록
controller가 running중이고 ?...??
걍 원래 저 홈페이지대로....
cd ~
mkdir webserver
cd webserver
vi index.html
namespace바꾸
kubectl config set-context --current --namespace=ingress-nginx
댓글