Kubernetes addons 之 Ingress Controllers部署

Ingress

管理群集中服務(wù)的外部訪問的API對象烛缔,通常是HTTP荧库。
Ingress可以提供負(fù)載平衡汁果,SSL 終止和基于名稱的虛擬主機(jī)矮燎。

Ingress是什么

Ingress定血, Kubernetes v1.1開始增加的,暴露集群 services 的 http和https的路由诞外。流量路由規(guī)則的控制是定義在Ingress resource。

  internet
      |
 [ Ingress ]
 --|-----|--
 [ Services ]

Ingress可以給service提供集群外部訪問的URL灾票、負(fù)載均衡峡谊、SSL終止、基于名稱的虛擬主機(jī)刊苍。 Ingress controller 負(fù)責(zé)實(shí)現(xiàn)Ingress的功能, 通常是一個負(fù)載均衡器, 它監(jiān)聽Ingress和service的變化既们,并根據(jù)規(guī)則配置負(fù)載均衡并提供訪問入口。
Ingress不會暴露任意端口或協(xié)議正什。將HTTP和HTTPS以外的服務(wù)公開給Internet通常使用Service.Type = NodePort或Service.Type = LoadBalancer啥纸。

The Ingress Resource

最簡單的Ingress Resource示例如下

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /testpath
        backend:
          serviceName: test
          servicePort: 80

與其他的Kubernetes resources一樣,Ingress需要apiVersion, kind, 和 metadata 屬性.
有關(guān)配置的其他屬性配置婴氮,參見 deploying applications, configuring containers, managing resources.
Ingress經(jīng)常使用注釋來配置一些選項(xiàng)斯棒,具體取決于Ingress控制器, 參見例子 rewrite-target annotation.
不同的 Ingress controller 支持不同的注釋. 閱讀你選擇的Ingress controller的文檔主经,查看支持那些注釋.
Ingress規(guī)范具有配置負(fù)載均衡器或代理服務(wù)器所需的所有信息荣暮。 最重要的是,它包含與所有傳入請求匹配的規(guī)則列表罩驻。 Ingress資源僅支持HTTP流量的規(guī)則穗酥。

Ingress 規(guī)則

每個http規(guī)則都包含以下信息:

  • 可選主機(jī)。 在此示例中惠遏,未指定主機(jī)砾跃,因此該規(guī)則適用于通過指定的IP地址的所有入站HTTP流量。 如果提供了主機(jī)(例如节吮,foo.bar.com)抽高,則規(guī)則適用于該主機(jī)。
  • 路徑列表(例如课锌,/ testpath)厨内,每個路徑都會定義serviceName和servicePort關(guān)聯(lián)后端祈秕。 主機(jī)和路徑都必須與傳入請求的內(nèi)容匹配,以便負(fù)載均衡器能夠直接引用到后端服務(wù)雏胃。
  • 后端是在 services 文檔中定義的服務(wù)名稱和端口名稱的組合. 對Ingress匹配的主機(jī)和路由規(guī)則的HTTP(和HTTPS)請求將被發(fā)送到列出的后端请毛。
    默認(rèn)后端通常在Ingress控制器中配置,該控制器將為與規(guī)范中的路徑不匹配的請求提供服務(wù)瞭亮。

默認(rèn)后端

沒有規(guī)則的Ingress將所有流量發(fā)送到單個默認(rèn)后端方仿。 默認(rèn)后端通常是Ingress控制器的一個配置選項(xiàng),并且未在Ingress資源中指定统翩。

Ingress類型

1仙蚜、單服務(wù)Ingress
現(xiàn)有的Kubernetes概念允許公開單個服務(wù) (參見 alternatives)。也可以通過指定沒有規(guī)則的默認(rèn)后端來使用Ingress執(zhí)行此操作厂汗。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: testsvc
    servicePort: 80

如果你使用 kubectl apply -f 你將會看到如下信息:

kubectl get ingress test-ingress
NAME           HOSTS     ADDRESS           PORTS     AGE
test-ingress   *         107.178.254.228   80        59s

其中107.178.254.228是Ingress controller為滿足此Ingress而分配的IP委粉。

2、路由到多服務(wù)的Ingress

多服務(wù)配置根據(jù)請求的HTTP URI將流量從單個IP地址路由到多個服務(wù)娶桦。Ingress允許將負(fù)載均衡器的數(shù)量降至最低贾节。例如,設(shè)置如下:

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

可以通過下面的Ingress來定義:

apiVersion: networking.k8s.io/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

使用kubectl create -f創(chuàng)建完ingress后:

kubectl describe ingress simple-fanout-example
Name:             simple-fanout-example
Namespace:        default
Address:          178.91.123.132
Default backend:  default-http-backend:80 (10.8.2.3:8080)
Rules:
  Host         Path  Backends
  ----         ----  --------
  foo.bar.com
               /foo   service1:4200 (10.8.0.90:4200)
               /bar   service2:8080 (10.8.0.91:8080)
Annotations:
  nginx.ingress.kubernetes.io/rewrite-target:  /
Events:
  Type     Reason  Age                From                     Message
  ----     ------  ----               ----                     -------
  Normal   ADD     22s                loadbalancer-controller  default/test

只要服務(wù)(s1衷畦,s2)存在栗涂,Ingress控制器就會提供滿足Ingress特定實(shí)現(xiàn)的負(fù)載均衡器。創(chuàng)建完成后祈争,可以在Address 字段中查看負(fù)載均衡器的地址斤程。

3、基于名稱的虛擬主機(jī)
虛擬主機(jī)Ingress即根據(jù)名字的不同轉(zhuǎn)發(fā)到不同的后端服務(wù)上菩混,而他們共用同一個的IP地址

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

下面是一個基于Host header路由請求的Ingress:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: name-virtual-host-ingress
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 80
  - host: bar.foo.com
    http:
      paths:
      - backend:
          serviceName: service2
          servicePort: 80

如果你創(chuàng)建的Ingress resouce 沒有在rules中定義任何主機(jī)忿墅,然后,基于 Ingress controller 的IP地址的web請求能夠匹配到?jīng)]有名稱的虛擬主機(jī)墨吓。例如球匕,以下Ingress resource 會將first.bar.com請求路由到service1,將second.foo.com路由到service2帖烘,其他只有IP地址沒有定義hostname(即沒有在header中定義hostname)將會路由到service3

apiVersion: networking.k8s.io/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亮曹、TLS
您可以通過指定包含TLS私鑰和證書的 secret 來加固Ingress。目前秘症,Ingress僅支持一個TLS的端口 443照卦,并假定TLS終止。如果Ingress中的TLS配置部分指定了不同的主機(jī)乡摹,它們將根據(jù)通過SNI TLS擴(kuò)展指定的主機(jī)名在同一端口上復(fù)用(假設(shè)Ingress控制器支持SNI)役耕,TLS secret 必須包含名為tls.crt和tls.key的密鑰,其中包含用于TLS的證書和私鑰聪廉。例如:

apiVersion: v1
kind: Secret
metadata:
  name: testsecret-tls
  namespace: default
data:
  tls.crt: base64 encoded cert
  tls.key: base64 encoded key
type: kubernetes.io/tls

在Ingress引用此secret瞬痘,就是告訴Ingress controller使用TLS保護(hù)從客戶端到負(fù)載均衡器的信道故慈。你需要確保你創(chuàng)建的TLS Secret來自包含sslexample.foo.com的CN的證書。

apiVersion: networking.k8s.io/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

不同Ingress controller支持的TLS功能不盡相同框全。 請參閱有關(guān)nginx察绷,GCE或任何其他Ingress controller的文檔,以了解TLS的支持情況津辩。

4拆撼、負(fù)載均衡
Ingress controller通過一些負(fù)載均衡策略設(shè)置進(jìn)行自舉,該策略設(shè)置適用于所有Ingress喘沿,例如負(fù)載平衡算法闸度,后端權(quán)重方案等。 其他的一些高級的負(fù)載平衡概念(例如蚜印,持久會話莺禁,動態(tài)權(quán)重)沒有通過Ingress公布。 不過你仍然可以通過負(fù)載均衡器獲得這些功能窄赋。
值得注意的是睁宰,即使健康檢查沒有直接通過Ingress公開,Kubernetes中也存在類似概念寝凌,例如readiness探針,它們可以實(shí)現(xiàn)相同的最終結(jié)果孝赫。你可以參閱controller的文檔较木,了解它們?nèi)绾翁幚斫】禉z查 ( nginx, GCE)。

5青柄、更新Ingress
要更新現(xiàn)有的Ingress以添加新主機(jī)伐债,您可以通過編輯資源來更新它:

kubectl describe ingress test
Name:             test
Namespace:        default
Address:          178.91.123.132
Default backend:  default-http-backend:80 (10.8.2.3:8080)
Rules:
  Host         Path  Backends
  ----         ----  --------
  foo.bar.com
               /foo   s1:80 (10.8.0.90:80)
Annotations:
  nginx.ingress.kubernetes.io/rewrite-target:  /
Events:
  Type     Reason  Age                From                     Message
  ----     ------  ----               ----                     -------
  Normal   ADD     35s                loadbalancer-controller  default/test
kubectl edit ingress test

這應(yīng)該會彈出一個包含現(xiàn)有yaml的編輯器,修改它以包含新主機(jī):

spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: s1
          servicePort: 80
        path: /foo
  - host: bar.baz.com
    http:
      paths:
      - backend:
          serviceName: s2
          servicePort: 80
        path: /foo
..

保存yaml將更新API服務(wù)器中的資源致开,這會告訴Ingress controller重新配置負(fù)載均衡器峰锁。

kubectl describe ingress test
Name:             test
Namespace:        default
Address:          178.91.123.132
Default backend:  default-http-backend:80 (10.8.2.3:8080)
Rules:
  Host         Path  Backends
  ----         ----  --------
  foo.bar.com
               /foo   s1:80 (10.8.0.90:80)
  bar.baz.com
               /foo   s2:80 (10.8.0.91:80)
Annotations:
  nginx.ingress.kubernetes.io/rewrite-target:  /
Events:
  Type     Reason  Age                From                     Message
  ----     ------  ----               ----                     -------
  Normal   ADD     45s                loadbalancer-controller  default/test

你可以通過在修改的Ingress yaml文件,然后調(diào)用kubectl replace -f來實(shí)現(xiàn)同樣的目的。

Ingress Controllers

Ingress 正常工作需要集群中運(yùn)行 Ingress Controller双戳。Ingress Controller 與其他作為 kube-controller-manager 中的在集群創(chuàng)建時自動啟動的 controller 成員不同虹蒋,需要用戶選擇最適合自己集群的 Ingress Controller.
Kubernetes項(xiàng)目目前支持和維護(hù)GCE and nginx controllers。
Ingress Controller 以 Kubernetes Pod 的方式部署飒货,以 daemon 方式運(yùn)行魄衅,保持 watch Apiserver 的 /ingress 接口以更新 Ingress 資源,以滿足 Ingress 的請求塘辅。比如可以使用 Nginx Ingress Controller
其他 Ingress Controller 還有:

使用多個Ingress controllers

你可以在集群中部署多個 any number of ingress controllers. 當(dāng)你在集群中部署多個ingress controllers時,你創(chuàng)建ingress時需要使用注釋指定 ingress.class,這樣集群才能選取正確的ingress controller.
當(dāng)你沒有指定ingress.class,云提供商可能會使用默認(rèn)的ingress 入口.
一般而言晃虫,所有Ingress controllers都應(yīng)滿足此規(guī)范,但各種Ingress controllers的運(yùn)行方式略有不同扣墩。

查看Ingress controller的文檔以了解選擇它的注意事項(xiàng)
我們接下來會具體介紹kubernetes/ingress-nginx,以此作為一個示例來介紹Ingress controllers.

ingress-nginx

Enterprise-grade application delivery for Kubernetes

Kubernetes是一個開源容器調(diào)度和編排系統(tǒng)哲银,最初由Google創(chuàng)建扛吞,然后捐贈給Cloud Native Computing Foundation。 Kubernetes自動調(diào)度容器在服務(wù)器集群中運(yùn)行荆责,解放了開發(fā)人員和運(yùn)維人員容器編排的復(fù)雜的任務(wù)滥比。 Kubernetes目前時最受歡迎的容器調(diào)度和編排系統(tǒng)。
NGINX Ingress Controller 為Kubernetes應(yīng)用程序提供企業(yè)級交付服務(wù),為開源NGINX和NGINX Plus的用戶帶來便捷.使用NGINX Ingress Controller 可以提供一下特性,負(fù)載平衡草巡、SSL / TLS終止守呜、URI重寫、SSL / TLS加密山憨。NGINX Plus還可以為有狀態(tài)的應(yīng)用提供session 持久化支持查乒,API的jwt身份驗(yàn)證等功能。

ingress-nginx 安裝

1郁竟、先決條件和通用部署命令
默認(rèn)配置監(jiān)視所有命名空間的Ingress對象玛迄。 要更改此行為,請使用--watch-namespace將范圍限制為特定命名空間棚亩。
如果多個Ingress為同一主機(jī)定義不同的路徑蓖议,則 ingress controller 將合并定義。
如果你正在使用GKE讥蟆,則需要使用以下命令將當(dāng)前用戶初始化為集群管理員:kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole cluster-admin \ --user $(gcloud config get-value account)

yaml 文件:

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

部署方式有兩種,一種是創(chuàng)建service 使用NodePort暴露ingress-nginx,另外一種方式是使用本機(jī)網(wǎng)絡(luò),添加hostNetwork: true
我們接下來使用這兩種方式進(jìn)行部署:
1勒虾、創(chuàng)建ingress-nginx-service(官方文檔)
1.1、首先根據(jù)mandatory.yaml 文件創(chuàng)建對應(yīng)的ingress相關(guān)

[root@k8s ~]# kubectl apply -f mandatory.yaml 
namespace/ingress-nginx created
deployment.extensions/default-http-backend created
service/default-http-backend created
configmap/nginx-configuration created
configmap/tcp-services created
configmap/udp-services created
serviceaccount/nginx-ingress-serviceaccount created
clusterrole.rbac.authorization.k8s.io/nginx-ingress-clusterrole created
role.rbac.authorization.k8s.io/nginx-ingress-role created
rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-binding created
clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding created
deployment.extensions/nginx-ingress-controller created

驗(yàn)證安裝
檢查ingress controller pods 是否正常啟動瘸彤,請運(yùn)行下面的命令:

kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch

[root@k8s ~]# kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch
NAMESPACE       NAME                                       READY   STATUS    RESTARTS   AGE
ingress-nginx   nginx-ingress-controller-65795b86d-28lfr   1/1     Running   0          2m55s

1.2修然、創(chuàng)建ingress-nginx-service.yaml文件,并apply

ingress-nginx-service.yaml

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

[root@k8s ~]# kubectl apply -f ingress-nginx-service.yaml 
service/ingress-nginx created

1.3质况、測試
Ingress Controller 部署部署好了愕宋,現(xiàn)在要寫ingress的規(guī)則,注入到ingress-nginx pod的配置文件中

[root@k8s ~]# cat test-nginx-service.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-service-ingress
  namespace: default
spec:
  rules:
  - host: ancs.nginx.com
    http:
      paths:
       - path: 
         backend:
           serviceName: nginx
           servicePort: 80

[root@k8s ~]# kubectl apply -f test-nginx-service.yaml 
ingress.extensions/test-service-ingress created

查看ingress

[root@k8s ~]# kubectl  get ingress
NAME                   HOSTS            ADDRESS   PORTS   AGE
test-service-ingress   ancs.nginx.com             80      33s

訪問的客戶端的機(jī)器配置下域名解析


hosts.png

現(xiàn)在我們可以通過ancs.nginx.com:30080來訪問到后端代理的pod了


nginx.png

這里是使用http訪問的结榄,如果要用https中贝,首先我們要創(chuàng)建一個證書,步驟如下:

自簽證書
[root@k8s https]#  openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=ancs/CN=ancs.nginx.com"
Generating a 2048 bit RSA private key
......................+++
...........................+++
writing new private key to 'tls.key'
-----
[root@k8s https]# ls
tls.crt  tls.key

當(dāng)然也可以使用cfssl自簽證書臼朗。It‘s up to you邻寿!
創(chuàng)建 secret 資源, 證書生成好了,然后把證書轉(zhuǎn)成secret

[root@k8s https]#  kubectl create secret tls ancs-secret --key tls.key --cert tls.crt
secret/ancs-secret created

修改test-nginx-service.yaml文件

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-service-ingress
  namespace: default
spec:
  tls:
  - hosts:
    - ancs.nginx.cn
    secretName: ancs-secret
  rules:
  - host: ancs.nginx.com
    http:
      paths:
       - path: 
         backend:
           serviceName: nginx
           servicePort: 80

現(xiàn)在我們可以通過https訪問了


ingress-https.png

2依溯、使用宿主機(jī)網(wǎng)絡(luò)老厌,增加 hostNetwork: true

2.1 修改mandatory.yaml配置文件,在container中增加配置項(xiàng) hostNetwork: true 表示使用本機(jī)網(wǎng)絡(luò)


hostNetwork.png

注意事項(xiàng):
在創(chuàng)建ingress-nginx-controller容器之前黎炉,需要修改kube-proxy配置
在/opt/kubernetes/cfg/kube-proxy配置文件里增加一行:--masquerade-all=true 然后重啟kube-proxy 枝秤。
[root@k8s cfg]# cat kube-proxy
KUBE_PROXY_OPTS="--logtostderr=true
--v=4
--hostname-override=10.0.52.14
--cluster-cidr=10.0.0.0/24
--proxy-mode=ipvs
--masquerade-all=true
--kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig"

配置項(xiàng)--masquerade-all的意思,參見官網(wǎng)說明kube-proxy慷嗜,里面描述為:
--masquerade-all
If using the pure iptables proxy, SNAT all traffic sent via Service cluster IPs (this not commonly needed)
中文翻譯:
--masquerade-all
如果使用純 iptables 代理淀弹,SNAT 所有通過服務(wù)句群 IP 發(fā)送的流量(這通常不需要)
說人話的意思就是:
在kube-proxy中添加一個標(biāo)志丹壕,以便為群集外流量維護(hù)偽裝規(guī)則。 就像是:

iptables -t nat -I POSTROUTING ! -s "${CLUSTER_CIDR}" -j MASQUERADE

2.2薇溃、啟動ingress-controller容器

[root@k8s ~]# kubectl apply -f mandatory.yaml 
namespace/ingress-nginx unchanged
deployment.extensions/default-http-backend unchanged
service/default-http-backend unchanged
configmap/nginx-configuration unchanged
configmap/tcp-services unchanged
configmap/udp-services unchanged
serviceaccount/nginx-ingress-serviceaccount unchanged
clusterrole.rbac.authorization.k8s.io/nginx-ingress-clusterrole unchanged
role.rbac.authorization.k8s.io/nginx-ingress-role unchanged
rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-binding unchanged
clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding unchanged
deployment.extensions/nginx-ingress-controller configured
[root@k8s ~]# kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch
NAMESPACE       NAME                                        READY   STATUS              RESTARTS   AGE
ingress-nginx   nginx-ingress-controller-6b8cc9b76d-98szp   0/1     ContainerCreating   0          31s
ingress-nginx   nginx-ingress-controller-6b8cc9b76d-98szp   0/1   Running   0     43s
ingress-nginx   nginx-ingress-controller-6b8cc9b76d-98szp   1/1   Running   0     47s

2.3菌赖、Ingress部署
2.3.1、 http部署和上面一樣沐序,參考上面就可以了琉用。不再重復(fù)描述了。
2.3.2策幼、https部署(使用cfssl)
利用cfssl頒發(fā)證書:

  • 生成ca證書
cat << EOF | tee ca-config.json
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "www": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF

cat << EOF | tee ca-csr.json
{
    "CN": "www.ancs.com",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
  • 生成server證書:
cat << EOF | tee ancs-csr.json
{
    "CN": "www.ancs.com",
    "hosts": [],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www ancs-csr.json | cfssljson -bare www.ancs.com
  • 生成密鑰
[root@k8s cfssl]# kubectl create secret tls ancs-secret --cert=www.ancs.com.pem --key=www.ancs.com-key.pem
secret/ancs-secret created

  • 部署ingress
[root@k8s ~]# cat test-https-nginx-service.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-service-ingress
  namespace: default
spec:
  tls:
  - hosts:
    - ancs.nginx.cn
    secretName: ancs-secret
  rules:
  - host: ancs.nginx.com
    http:
      paths:
       - path: 
         backend:
           serviceName: nginx
           servicePort: 80
[root@k8s ~]# kubectl apply -f test-https-nginx-service.yaml 
ingress.extensions/test-service-ingress created
[root@k8s ~]# 

*配置hosts


hosts.png
  • 瀏覽器訪問


    https.png

至此邑时,我們ingress 部署就算完成了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末特姐,一起剝皮案震驚了整個濱河市晶丘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唐含,老刑警劉巖浅浮,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捷枯,居然都是意外死亡滚秩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門淮捆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叔遂,“玉大人,你說我怎么就攤上這事争剿。” “怎么了痊末?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵蚕苇,是天一觀的道長。 經(jīng)常有香客問我凿叠,道長涩笤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任盒件,我火速辦了婚禮蹬碧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炒刁。我一直安慰自己恩沽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布翔始。 她就那樣靜靜地躺著罗心,像睡著了一般里伯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渤闷,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天疾瓮,我揣著相機(jī)與錄音,去河邊找鬼飒箭。 笑死狼电,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弦蹂。 我是一名探鬼主播肩碟,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盈匾!你這毒婦竟也來了腾务?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤削饵,失蹤者是張志新(化名)和其女友劉穎岩瘦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窿撬,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡启昧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了劈伴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片密末。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖跛璧,靈堂內(nèi)的尸體忽然破棺而出严里,到底是詐尸還是另有隱情,我是刑警寧澤追城,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布刹碾,位于F島的核電站,受9級特大地震影響座柱,放射性物質(zhì)發(fā)生泄漏迷帜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一色洞、第九天 我趴在偏房一處隱蔽的房頂上張望戏锹。 院中可真熱鬧,春花似錦火诸、人聲如沸锦针。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伞插。三九已至割粮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間媚污,已是汗流浹背舀瓢。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耗美,地道東北人京髓。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像商架,于是被迫代替她去往敵國和親堰怨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容