欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Kubernetes使用ingress配置https集群(十五)-創(chuàng)新互聯(lián)

[TOC]

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、隆子網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為隆子等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、背景

1.1 需求

我們有這樣的一個(gè)需求,就是把 Pod 集群升級(jí)為 https,目前的辦法就是要么每個(gè)容器配置 https,然后前端通過 Service 進(jìn)行調(diào)度,但是這樣配置起來會(huì)比較麻煩,以及每個(gè)容器的建立都通過 https ,也增加了建立連接的負(fù)擔(dān)。

我們需要一種這樣的改造,就是客戶端連接到 Service 是通過 https,而 Service 向后端 Pod 的調(diào)度通過 http,這樣可以極大的優(yōu)化我們的集群,這里我們就需要用到 Kubernetes 的另外一種資源 Ingress。

Kubernetes 使用 ingress 配置 https 集群(十五)

1.2 Ingress

Ingress 就是一個(gè)負(fù)載均衡的應(yīng)用,它和 Service 的不同之處在于,Service 只可以支持 4 層的負(fù)載均衡,而 Ingress 是支持 7 層的負(fù)載均衡,支持 http 和 https,包括通過主機(jī)名的訪問已經(jīng)路徑訪問的過濾。

那為什么不直接使用 Nginx?這是因?yàn)樵?K8S 集群中,如果每加入一個(gè)服務(wù),我們都在 Nginx 中添加一個(gè)配置,其實(shí)是一個(gè)重復(fù)性的體力活,只要是重復(fù)性的體力活,我們都應(yīng)該通過技術(shù)將它干掉。

Ingress就可以解決上面的問題,其包含兩個(gè)組件Ingress ControllerIngress

  • Ingress:將Nginx的配置抽象成一個(gè)Ingress對(duì)象,每添加一個(gè)新的服務(wù)只需寫一個(gè)新的Ingress的yaml文件即可;
  • Ingress Controller:將新加入的 Ingress 轉(zhuǎn)化成 Nginx 的配置文件并使之生效,包含 Contour、F5、HAProxy、Istio、Kong、Nginx、Traefik,官方推薦我們使用 Nginx。

Kubernetes 使用 ingress 配置 https 集群(十五)

1.3 環(huán)境介紹

我們是采用了三臺(tái)服務(wù)器的一個(gè)集群,部署文檔請(qǐng)查看我之前的博文。

IP 角色
192.168.1.200k8s-master
192.168.1.201k8s-node01
192.168.1.202k8s-node02
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   117s   v1.13.0
node01   Ready    <none>   52s    v1.13.0
node02   Ready    <none>   42s    v1.13.0

二、安裝部署

我們這里只針對(duì)上面架構(gòu)圖中的域名www.wzlinux.com改造成https。

我們將以官方的標(biāo)準(zhǔn)腳本為基礎(chǔ)進(jìn)行搭建,參考請(qǐng)戳官方文檔。官方文檔中要求執(zhí)行如下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml

2.1、創(chuàng)建后端 Pod 應(yīng)用

我們創(chuàng)建一個(gè)控制器wzlinux-deploy.yaml,內(nèi)容如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: wzlinux-dep
spec:
  replicas: 3
  template:
    metadata:
      labels:
        run: wzlinux
    spec:
      containers:
      - name: wzlinux
        image: wangzan18/mytest:v1
        ports:
        - containerPort: 8080

創(chuàng)建好之后查看如下:

[root@master ingress]# kubectl get pod
NAME                           READY   STATUS    RESTARTS   AGE
wzlinux-dep-78d5d86c7c-fj8f5   1/1     Running   0          53m
wzlinux-dep-78d5d86c7c-hr6gd   1/1     Running   0          53m
wzlinux-dep-78d5d86c7c-jqf59   1/1     Running   0          53m

2.2 創(chuàng)建后端 Pod Service

測(cè)試好 Pod 一些正常之后,我們?yōu)檫@一組 Pod 創(chuàng)建一個(gè) Service,文件wzlinux-svc.yaml內(nèi)容如下:

apiVersion: v1
kind: Service
metadata:
  name: wzlinux-svc
spec:
  selector:
    run: wzlinux
  ports:
  - port: 80
    targetPort: 8080

這個(gè) Service 并不是我們用了代理訪問 Pod 的,只是用來ingress-controller來進(jìn)行選擇控制使用的,所以上圖描述為虛線。

[root@master ingress]# kubectl get svc
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP    58m
wzlinux-svc   ClusterIP   10.106.219.230   <none>        8080/TCP   50m
[root@master ingress]# curl 10.106.219.230:8080
Hello Kubernetes bootcamp! | Running on: wzlinux-dep-78d5d86c7c-fj8f5 | v=1

2.3、創(chuàng)建 ingress 資源

為了實(shí)現(xiàn)過濾以及 https 功能,我們需要?jiǎng)?chuàng)建 ingress 資源文件,ingress controller 把其中的資源加載到 nginx 里面,資源文件wzlinux-ingress.yaml文件內(nèi)容如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: wzlinux-ingress
spec:
  rules:
  - host: www.wzlinux.com
    http:
      paths:
      - path:
        backend:
          serviceName: wzlinux-svc
          servicePort: 8080

我們這里先不改為 https,先使用虛擬主機(jī)域名過濾模式,創(chuàng)建好資源之后查看

[root@master ingress]# kubectl get ingress
NAME              HOSTS             ADDRESS   PORTS   AGE
wzlinux-ingress   www.wzlinux.com             80      37m

可以看到配置了域名www.wzlinux.com,其他地址訪問將返回404。

2.4、為 Nginx Pod 創(chuàng)建 Service

我們可以查看部署的 Nginx Pod 容器,我們?cè)O(shè)定的 ingress 資源會(huì)被 controller 更新到里面,我們可以查看如下:

[root@master ingress]# kubectl get pod -n ingress-nginx
NAME                                        READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-766c77b7d4-dlcpf   1/1     Running   0          31m

為了是外網(wǎng)可以訪問到這個(gè) Nginx Pod,我們需要為其再創(chuàng)建一個(gè) Service,文件ingress-nginx.yaml,文件內(nèi)容如下:

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    targetPort: 80
    nodePort: 30080
  - name: https
    port: 443
    targetPort: 443
    nodePort: 30443
  selector:
    app.kubernetes.io/name: ingress-nginx

測(cè)試是否正常,記得在/etc/hosts中把域名執(zhí)行的IP改為node節(jié)點(diǎn)的地址。

[root@master ~]# curl 192.168.1.200:30080
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h2>404 Not Found</h2></center>
<hr><center>nginx/1.15.6</center>
</body>
</html>
[root@master ~]# curl www.wzlinux.com:30080
Hello Kubernetes bootcamp! | Running on: wzlinux-dep-78d5d86c7c-hr6gd | v=1

可以看到通過域名訪問正常調(diào)度到后端,其他地址訪問返回404,目前整個(gè)流程已經(jīng)測(cè)試完成,下面我們升級(jí)為 https。

三、升級(jí)為 https

3.1 首先我們要制作證書

關(guān)于證書大家可以使用 openssl 制作,創(chuàng)建私有:

openssl genrsa -out wzlinux.key 2048

制作自簽證書。

openssl req -new -x509 -key wzlinux.key -out wzlinux.crt -subj /C=CN/ST=Shanghai/L=Shanghai/O=DevOps/CN=www.wzlinux.com

不過我這里使用阿里云的官方免費(fèi)證書,大家可以到阿里云進(jìn)行申請(qǐng)。
Kubernetes 使用 ingress 配置 https 集群(十五)

Kubernetes 使用 ingress 配置 https 集群(十五)
制作好證書之后下載即可,里面包含公鑰和私鑰。

3.2、創(chuàng)建 secret 資源

可以使用 yaml 文件創(chuàng)建,文件名稱wzlinux-secret.yaml內(nèi)容如下:

apiVersion: v1
kind: Secret
data:
  tls.crt: base64 encoded cert
  tls.key: base64 encoded key
metadata:
  name: wzlinux-secret
  namespace: default
type: Opaque

因?yàn)榫幋a的密碼太長,我們這里直接使用命令行進(jìn)行創(chuàng)建吧,操作比較簡單。

kubectl create secret tls wzlinux-secret --cert=wzlinux.crt --key=wzlinux.key

查看創(chuàng)建好的 secret。

[root@master ingress]# kubectl describe secret wzlinux-secret
Name:         wzlinux-secret
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  kubernetes.io/tls

Data
====
tls.crt:  1996 bytes
tls.key:  1675 bytes

3.3 更改 ingress 資源

重新編輯wzlinux-ingress.yaml,增加一個(gè) tls 字段:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: wzlinux-ingress
spec:
  tls:
  - hosts:
    - www.wzlinux.com
    secretName: wzlinux-secret
  rules:
  - host: www.wzlinux.com
    http:
      paths:
      - path:
        backend:
          serviceName: wzlinux-svc
          servicePort: 8080

3.4 瀏覽器訪問驗(yàn)證

打開瀏覽器,記得修改好 hosts 域名解析。
Kubernetes 使用 ingress 配置 https 集群(十五)

四、ingress 資源介紹

4.1、通過訪問路徑過濾

foo.bar.com -> 178.91.123.132 -> / foo    service1:4200
                                 / bar    service2:8080

配置文件我們?cè)O(shè)置為如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: simple-fanout-example
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /foo
        backend:
          serviceName: service1
          servicePort: 4200
      - path: /bar
        backend:
          serviceName: service2
          servicePort: 8080

4.2、基于名稱解析的虛擬主機(jī)

foo.bar.com --|                 |-> foo.bar.com s1:80
              | 178.91.123.132  |
bar.foo.com --|                 |-> bar.foo.com s2:80

配置文件內(nèi)容格式如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: name-virtual-host-ingress
spec:
  rules:
  - host: first.bar.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 80
  - host: second.foo.com
    http:
      paths:
      - backend:
          serviceName: service2
          servicePort: 80
  - http:
      paths:
      - backend:
          serviceName: service3
          servicePort: 80

4.3、https

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tls-example-ingress
spec:
  tls:
  - hosts:
    - sslexample.foo.com
    secretName: testsecret-tls
  rules:
    - host: sslexample.foo.com
      http:
        paths:
        - path: /
          backend:
            serviceName: service1
            servicePort: 80

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁標(biāo)題:Kubernetes使用ingress配置https集群(十五)-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://aaarwkj.com/article16/ccdddg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站設(shè)計(jì)定制開發(fā)、品牌網(wǎng)站制作、電子商務(wù)、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
伊人久久大香线蕉av网站 | 一区二区三区熟妇人妻视频| 亚洲一区二区美女av| 国产午夜激情自拍视频| 丰满少妇在线观看网站| 国产精品三级高清在线| 最新日本欧美一区二区| 国产成人亚洲精品另类动态| 亚洲国产精品va在线香蕉| 一区二区三区日韩欧美在线| 亚洲av少妇高潮流白浆在线| 美女视频一区二区三区在线观看| 亚洲精品国产熟女高潮| 成人黄片在线免费播放| 夫妻性生活短是什么原因| 国产日韩欧美一区二区三区四区| 日韩欧美国产午夜精品| 国产一区日本二区欧美三区| 国产精品兄妹在线观看91| 精品国产一区二区三区av在线| 国产亚洲一区二区三区乱码| 亚洲国产韩国精品在线| 亚洲91无专砖码高清观看| 999久久免费精品国产| 欧美日韩国产一下老妇| 青青草原在线视频一区| 熟女av一区二区三区四区| 美女午夜福利一区二区| 亚洲精品日韩国产3区| 久久 久久国内精品亚洲| 天天干夜夜操操操操| 日韩av裸体在线播放| 国产欧美日韩另类在线| 美女口爆吞精一区二区| 亚洲精品紧身裙女教师av| 蜜桃国产精品视频网站| 九九热在线免费观看精品视频| 亚洲av日韩av高潮| 国产美女无遮挡免费网站| 日本91免费在线观看| 日韩亚洲天堂视频免费观看|