Henu
개발냥발
Henu
전체 방문자
오늘
어제
  • 분류 전체보기 (411)
    • DevOps (52)
      • Kubernetes (19)
      • Docker (14)
      • AWS (3)
      • Nginx (4)
      • Linux (4)
      • ArgoCD (1)
      • CN (2)
      • NATS (0)
      • Git (5)
    • Back-End (30)
      • Django (18)
      • Spring (5)
      • JPA (1)
      • MSA (5)
    • CS (87)
      • SystemSoftware (20)
      • OS (25)
      • Computer Architecture (16)
      • Network (23)
      • Database (2)
    • Lang (21)
      • Java (9)
      • Python (4)
      • C# (8)
    • Life (12)
    • 블록체인 (2)
    • Algorithm (204)
      • BOJ (160)
      • 프로그래머스 (19)
      • LeetCode (4)
      • SWEA (1)
      • 알고리즘 문제 해결 전략 (8)
      • DS, algorithms (7)
      • Checkio (5)
    • IT (2)

블로그 메뉴

  • GitHub
  • 글쓰기
  • 관리자

공지사항

  • Free!

인기 글

태그

  • 프로그래머스
  • Kubernetes
  • docker
  • DFS
  • BFS
  • Network
  • 다이나믹 프로그래밍
  • boj
  • django
  • 백트래킹

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Henu

개발냥발

[kubernetes] Helm으로 nginx ingress controller 설치하기
DevOps/Kubernetes

[kubernetes] Helm으로 nginx ingress controller 설치하기

2022. 4. 4. 09:38

일반적으로 사용하는 helm의 stable repo가 업데이트를 중단했고,

k8s는 빠르게 업데이트 되는 중이다.

 

stable/nginx-ingress는 사용하기엔 너무 옛날 버전이라서, 

k8s에서 따로 배포하는 ingress-nginx repo를 사용해 ingress-controller를 설정해 보았다.

 

 

 

nginx pod와 service 생성

# mynginx.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: mynginx
  name: mynginx
spec:
  containers:
  - image: nginx:1.16
    name: mynginx
    resources: {}
  restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: nginxsvc
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: mynginx

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

 

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

 

 

연결 확인

 

참조

 

인그레스(Ingress)

FEATURE STATE: Kubernetes v1.19 [stable] 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이며, 일반적으로 HTTP를 관리함. 인그레스는 부하 분산, SSL 종료, 명칭 기반의 가상 호스팅을 제공

kubernetes.io

 

 

Installation Guide - NGINX Ingress Controller

Installation Guide There are multiple ways to install the NGINX ingress controller: with Helm, using the project repository chart; with kubectl apply, using YAML manifests; with specific addons (e.g. for minikube or MicroK8s). On most Kubernetes clusters,

kubernetes.github.io

 

 

Rewrite - NGINX Ingress Controller

Rewrite This example demonstrates how to use Rewrite annotations. Prerequisites You will need to make sure your Ingress targets exactly one Ingress controller by specifying the ingress.class annotation, and that you have an ingress controller running in yo

kubernetes.github.io

 

'DevOps > Kubernetes' 카테고리의 다른 글

Kubeadm 으로 K8s 설치하기 with 자동화 스크립트  (3) 2022.06.10
[kubernetes] ubuntu에 kubeadm으로 K8s 설치하기 (cgroup, coredns 해결)  (0) 2022.04.05
[Kubernetes] No Ingressclass resource with name nginx found 문제 해결하기 (Helm stable repo)  (0) 2022.03.31
[kubernetes] #10 쿠버네티스 영속성 데이터와 볼륨  (0) 2022.03.14
[kubernetes] #9 쿠버네티스 Ingress 란?  (0) 2022.03.09
    'DevOps/Kubernetes' 카테고리의 다른 글
    • Kubeadm 으로 K8s 설치하기 with 자동화 스크립트
    • [kubernetes] ubuntu에 kubeadm으로 K8s 설치하기 (cgroup, coredns 해결)
    • [Kubernetes] No Ingressclass resource with name nginx found 문제 해결하기 (Helm stable repo)
    • [kubernetes] #10 쿠버네티스 영속성 데이터와 볼륨

    티스토리툴바