Kubernetes - Ingress 實作測試紀錄
Published in:2022-10-12 | category: Kubernetes


Docker file包製作

mkdir dockerfile/ && cd dockerfile/
    
vim Dockerfile


#/bin/bash
  
FROM nginx
ARG HTML
    
 #Change nginx config
RUN rm /usr/share/nginx/html/index.html
COPY ./$HTML /usr/share/nginx/html/index.html


製作測試頁 (綠)

vim green.html

  
   <!DOCTYPE html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   </head>
   <body style="background-color: green; color:#fff">
     <h1>2022/10/12 ---Ingress-test</h1>
     <table>
         <tbody>
               <tr>
                   <td>Author</td>
                   <td>: Laurance</td>
               </tr>
               <tr>
                   <td>Article Link</td>
                   <td>: <a href="https://note.laurance.ml" target="_blank">2022/10/12 ---Ingress-test</a></td>
               </tr>
               <tr>
                   <td>Topic</td>
                   <td>: <a href="https://note.laurance.ml" target="_blank">2022/10/12 ---Ingress-test</a></td>
               </tr>
         </tbody>
     </table>
   </body>
   </html>


製作測試頁 (紅)

vim red.html

  
   <!DOCTYPE html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   </head>
   <body style="background-color: red; color:#fff">
     <h1>2022/10/12 ---Ingress-test</h1>
     <table>
         <tbody>
               <tr>
                   <td>Author</td>
                   <td>: Laurance</td>
               </tr>
               <tr>
                   <td>Article Link</td>
                   <td>: <a href="https://note.laurance.ml" target="_blank">2022/10/12 ---Ingress-test</a></td>
               </tr>
               <tr>
                   <td>Topic</td>
                   <td>: <a href="https://note.laurance.ml" target="_blank">2022/10/12 ---Ingress-test</a></td>
               </tr>
         </tbody>
     </table>
   </body>
   </html>


使用 docker build 建立 image

docker build --build-arg HTML=green.html -t laurance/green .
    
docker build --build-arg HTML=red.html -t laurance/red .


更改 TAG 名稱為 docker 用戶名 / image 名稱

docker tag laurance/red ihatemis/red
    
docker tag laurance/green ihatemis/green


上傳至 Docker hub ,需要先 docker login

docker push ihatemis/red:latest
    
docker push ihatemis/green:latest


Deplyment

vim ingress.deployment.yaml

   
   #apiVersion: extensions/v1beta1
   apiVersion: apps/v1
   kind: Deployment
   metadata:
       name: red-nginx
       namespace: simple2
   spec:
     selector:
       matchLabels:
         app: red-nginx
     replicas: 4
     template:
       metadata:
         labels:
           app: red-nginx
       spec:
         containers:
         - name: nginx
           image: ihatemis/red:latest
           ports:
           - containerPort: 80
---   
   #apiVersion: extensions/v1beta1
   apiVersion: apps/v1
   kind: Deployment
   metadata:
       name: green-nginx
       namespace: simple2
   spec:
     selector:
       matchLabels:
         app: green-nginx
     replicas: 2
     template:
       metadata:
         labels:
           app: green-nginx
       spec:
         containers:
         - name: nginx
           image: ihatemis/green:latest
           ports:
           - containerPort: 80

建立 ingress.deployment.yaml

kubectl apply -f ingress.deployment.yaml 


service

vim ingress.service.yaml

   
   apiVersion: v1
   kind: Service
   metadata:
     name: green-service
     namespace: simple2
   spec:
     type: NodePort
     selector:
       app: green-nginx
     ports:
       - protocol: TCP
         port: 80    
    ---
   apiVersion: v1
   kind: Service
   metadata:
     name: red-service
     namespace: simple2
   spec:
     type: NodePort
     selector:
       app: red-nginx
     ports:
       - protocol: TCP
         port: 80

建立 ingress.service.yaml

kubectl apply -f ingress.service.yaml


Ingress

vim ingress.yaml

   
   #apiVersion: extensions/v1beta1
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: web
     namespace: simple2
     annotations:
       nginx.ingress.kubernetes.io/rewrite-target: /
   spec:
     rules:
     - host: green.ingress.com
       http:
         paths:
           - path: /
             pathType: Prefix
             backend:
               service:
                 name: green-service
                 port:
                   number: 80
     - host: red.ingress.com
       http:
         paths:
           - path: /
             pathType: Prefix
             backend:
               service:
                 name: red-service
                 port:
                   number: 80

建立 kubectl apply -f ingress.yaml

kubectl apply -f ingress.yaml 


將域名綁至 HOSTS 測試

172.16.0.223 red.ingress.com green.ingress.com


訪問 http://red.ingress.com



訪問 http://green.ingress.com




Prev:
Kubernetes - ERROR-unable to create new content is being terminated
Next:
Kubernetes - ERROR-Metric client health check failed