Kubernetes部署SpringCloud(三) 使用 Ingress-nginx 暴露服務


之前部署的zuul以及basic-info-api 都僅僅在於flannel 網絡內可以訪問.

現在來使用Ingress-nginx 對外暴露服務

以下用到的一些docker鏡像,是存在我私有倉庫的,請自行替換

創建命名空間namespace.yaml 或者直接 kubectl create namespace ingress-nginx

apiVersion: v1
kind: Namespace
metadata:
  name: ingress-nginx

執行

kubectl apply -f namespace.yaml

創建 default-backend.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: default-http-backend
  labels:
    app: default-http-backend
  namespace: ingress-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: default-http-backend
  template:
    metadata:
      labels:
        app: default-http-backend
    spec:
      terminationGracePeriodSeconds: 60
      containers:
      - name: default-http-backend
        # Any image is permissible as long as:
        # 1. It serves a 404 page at /
        # 2. It serves 200 on a /healthz endpoint
        image: 192.168.91.137:5000/defaultbackend:1.4
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
        ports:
        - containerPort: 8080
        resources:
          limits:
            cpu: 10m
            memory: 20Mi
          requests:
            cpu: 10m
            memory: 20Mi
---

apiVersion: v1
kind: Service
metadata:
  name: default-http-backend
  namespace: ingress-nginx
  labels:
    app: default-http-backend
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: default-http-backend

執行

kubectl create -f default-backend.yaml

創建without-rbac.yaml

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx 
spec:
#  replicas: 1
  selector:
    matchLabels:
      app: ingress-nginx
  template:
    metadata:
      labels:
        app: ingress-nginx
      annotations:
        prometheus.io/port: '10254'
        prometheus.io/scrape: 'true' 
    spec:
      terminationGracePeriodSeconds: 60
      hostNetwork: true
      containers:
      - name: nginx-ingress-controller
        image: 192.168.91.137:5000/nginx-ingress-controller:0.11.0
        ports:
        - name: http
          containerPort: 80
          hostPort: 80
        - name: https
          containerPort: 443
          hostPort: 443
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
          initialDelaySeconds: 10
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
          - name: KUBERNETES_MASTER
            value: http://192.168.91.144:8080
        args:
          - /nginx-ingress-controller
          - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
          - --configmap=$(POD_NAMESPACE)/nginx-configuration
          - --apiserver-host=http://192.168.91.144:8080

執行

kbuectl create -f without-rbac.yaml

創建 zuul-ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: zuul-ingress
  namespace: ms
spec:
  rules:
  - host: ms
    http:
      paths:
      - path: /
        backend:
          serviceName: zuul
          servicePort: 8200

執行

kubectl create -f zuul-ingress.yaml

修改host 添加 虛擬域名 ms

測試 ms直接指向 zuul 服務,然后轉發到basic-info-api服務的 getHost

 


免責聲明!

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



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