部署ingress及使用


一、下載yaml文件
https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
# 國內需要修改鏡像


#修改amndatory.yaml文件(211行)使用宿主機網絡:hostNetwork: true serviceAccountName: nginx-ingress-serviceaccount hostNetwork: true #添加這行 containers:

二、導入yaml文件 kubectl apply -f mandatory.yaml #查看 [root@k8s-m yaml]# kubectl get pods -n ingress-nginx NAME READY STATUS RESTARTS AGE nginx-ingress-controller-766c77b7d4-nn4c7 1/1 Running 0 49s 三、# 創建一個基於service和Deployment [root@k8s-m yaml]# cat ingress-deploy-demo.yaml apiVersion: v1 kind: Service metadata: name: nginx-svc spec: selector: #標簽選擇 name: nginx ports: - port: 80 #服務器端口 name: http #名稱 targetPort: 80 #容器端口 protocol: TCP #協議,默認TCP --- apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx-deploy spec: replicas: 3 selector: matchLabels: name: nginx template: metadata: labels: name: nginx spec: containers: - name: nginx image: nginx:alpine #鏡像 ports: - name: http containerPort: 80 #容器端口 #導入yaml文件 [root@k8s-m yaml]# kubectl apply -f ingress-deploy-demo.yaml service/nginx-svc unchanged deployment.apps/my-nginx-deploy created #查看 [root@k8s-m yaml]# kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx-deploy-799879696c-7rlhl 1/1 Running 0 41s my-nginx-deploy-799879696c-99v5g 1/1 Running 0 41s my-nginx-deploy-799879696c-ljqjd 1/1 Running 0 41s [root@k8s-m yaml]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 44m nginx-svc ClusterIP 10.96.182.50 <none> 80/TCP 3m43s # 創建一個 基於 my-nginx-deploy的 ingress [root@k8s-m yaml]# cat nginx-ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-nginx spec: rules: - host: haha.zhang.com http: paths: - backend: serviceName: nginx-svc servicePort: 80 #查看 [root@k8s-m yaml]# kubectl get ingress NAME HOSTS ADDRESS PORTS AGE ingress-nginx haha.zhang.com 80 21s #測試 [root@k8s-m yaml]# curl haha.zhang.com -I HTTP/1.1 200 OK Server: nginx Date: Thu, 20 Dec 2018 07:01:18 GMT Content-Type: text/html Connection: keep-alive Keep-Alive: timeout=20 X-DIS-Request-ID: e21475c0d2fa20399819dbb15f21304a P3P: CP="NON DSP COR ADMa OUR IND UNI COM NAV INT" Cache-Control: no-cache

  

HTTPS

[root@k8s-m yaml]# cat ssl-www.yaml 
apiVersion: v1
kind: Service
metadata:
  name: ssl-www
  namespace: default
spec:
  selector:
    app: myhttps
  ports:
  - name: http
    targetPort: 80
    port: 80
  - name: https
    targetPort: 443
    port: 443
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deploy
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myhttps
  template:
    metadata:
      labels:
        app: myhttps
    spec:
      containers:
      - name: myhttps
        image: nginx:alpine
        ports:
        - name: http
          containerPort: 80
        - name: https
          containerPort: 443
#導入
kubectl  apply -f ssl-www.yaml
二、創建ssl的證書
# 創建一個基於自身域名的證書
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout hahassl.zhang.me-key.key -out hahassl.zhang.me.pem -subj "/CN=hahassl.zhang.me"
 
 
# 導入 域名的證書到secret 中
kubectl create secret tls hahassl-secret  --cert hahassl.zhang.me.pem --key hahassl.zhang.me-key.key
#查看
[root@k8s-m x2]# kubectl  get secret -n kube-system|grep haha
hahassl-secret                                   kubernetes.io/tls                     2      42s
#配置https的ingress
[root@k8s-m yaml]# cat https-ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: https-www
spec:
  tls:
  - hosts:
    - hahassl.zhang.me
    secretName: hahassl-secret
  rules:
  - host: hahassl.zhang.me
    http:
      paths:
      - path: /
        backend:
          serviceName: ssl-www 
          servicePort: 443
        backend:
          serviceName: ssl-www
          servicePort: 80
#導入
 kubectl apply -f   https-ingress.yaml 

#配置hosts解析(解析為宿主機的公網ip)

#訪問
[root@k8s-m yaml]# curl -k -I https://hahassl.zhang.me
HTTP/1.1 200 OK
Server: nginx/1.15.6 Date: Sat, 29 Dec 2018 05:48:00 GMT Content-Type: text/html Content-Length: 612 Connection: keep-alive Vary: Accept-Encoding Last-Modified: Wed, 26 Dec 2018 23:21:49 GMT ETag: "5c240d0d-264" Accept-Ranges: bytes Strict-Transport-Security: max-age=15724800; includeSubDomains

 

#瀏覽器訪問

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM