如何安装部署Nginx-ingress
admin
2023-03-30 11:01:52
0

1. 概述

在本篇文章中我们就介绍如何安装部署Nginx-ingress,只有在经过积累不同组件的使用经验之后,我们才能更好的比较其优劣,形成最佳实践。

2. nginx-ingress组件的安装部署

2.1 通过helm查找nginx-ingress

# step1: 通过helm查找nginx-ingress
> helm search nginx-ingress
> helm inspect stable/nginx-ingress

2.2 镜像下载及上传

部分企业由于服务器没有wai网访问策略以及防火墙的原因,无法获取国外Docker镜像,所以我们事先需要将所需镜像准备好,并上传到企业私有镜像仓库

# step2: 镜像准备
> docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1
> docker tag quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1 registry.hankercloud.com/ingress-controller/nginx-ingress-controller:0.25.1
> docker push registry.hankercloud.com/ingress-controller/nginx-ingress-controller:0.25.1
> 
> docker pull k8s.gcr.io/defaultbackend-amd64:1.5
> docker tag k8s.gcr.io/defaultbackend-amd64:1.5 registry.hankercloud.com/google_containers/defaultbackend-amd64:1.5
> docker push registry.hankercloud.com/google_containers/defaultbackend-amd64:1.5

2.3 组件部署

在上一篇博客中,我们是采用Deployment模式部署的traefik组件,这次我们采用DaemonSet的模式来部署nginx-ingress组件

# step3: 组件部署 
> helm install stable/nginx-ingress --name nginx-ingress --namespace=kube-system \
    --set fullnameOverride=nginx-ingress \
    --set controller.kind=DaemonSet \
    --set controller.daemonset.useHostPort=true \
    --set controller.metrics.enabled=true \
    --set controller.image.repository=registry.hankercloud.com/ingress-controller/nginx-ingress-controller \
    --set defaultBackend.image.repository=registry.hankercloud.com/google_containers/defaultbackend-amd64
# step4: 检查部署是否成功
> helm list
> kubectl get all -n kube-system 
> kubectl logs $POD_NAME -n kube-system

2.4 负载均衡配置及域名解析处理

本次我们采用DaemonSet部署nginx-ingress组件,并且使用了主机的80和443接口用来分别接收http和https请求,我们将相应的域名解析到nginx-ingress Pod所在的主机IP之后,就可以通过域名来进行相应的域名访问了。

但上述配置方式无法做到高可用,当nginx-ingress的Pod实例故障或者其所在主机发生故障时,会导致相应的域名无法访问,所以建议在公有云购买负载均衡设备并配置相应的后端服务器列表以实现高可用的目的。

2.5 安装调试

在上文中我们通过helm部署了一个wordpress应用,本文我们继续通过该应用进行域名访问,在本机控制台输入 > curl -i http://10.0.0.182 -H 'Host: blog.hankercloud.com',如果看到有正常返回则说明部署成功

3. 企业场景及解决方案

3.1 如何做内外网的隔离

  • Step1: 我们首先部署了两个ingress组件,其中之一是接收内网访问请求,另外一个是接收wai网访问请求,相应配置如下:

# 内网nginx-ingress配置声明:
spec:
  template:
    spec:
      containers:
      - args:
        - /nginx-ingress-controller
        - --default-backend-service=kube-system/nginx-ingress-default-backend
        - --election-id=ingress-controller-leader
        - --ingress-class=nginx
        - --configmap=kube-system/nginx-ingress-controller
# 外网nginx-ingress配置声明:
spec:
  template:
    spec:
      containers:
      - args:
        - /nginx-ingress-controller
        - --default-backend-service=kube-system/nginx-ingress-external-default-backend
        - --election-id=ingress-controller-leader
        - --ingress-class=nginx-external
        - --configmap=kube-system/nginx-ingress-external-controller

两者的主要区别在于参数 --ingress-class 设置的值是不一样的

  • Step2: 对于需要暴露到公网的域名,修改其ingress的定义,相应配置参考如下:

metadata:
  name: www
  annotations:
    kubernetes.io/ingress.class: "nginx-external"
  • Step3: 检查是否配置成功,执行 kubectl exec ${POD_NAME} -n kube-system cat /etc/nginx/nginx.conf 查看配置文件中是否已经包

相关内容

热门资讯

中美联合侦破跨国走私贩毒案,抓... 4月初,中国公安部禁毒局和美国司法部缉毒署成功联合侦破郭某等人走私贩毒案,同步在中国辽宁、广东,美国...
多名网友收到广东地震局短信,官... 5月11日上午,多名广东网友发帖称,自己收到了广东地震局的短信,短信内容如下:【广东省地震局】温馨提...
130公斤黄金!特大走私团伙被... 去年3月,深圳海关在一次例行查验中,从三名旅客的行李箱内查获大量黄金手镯、戒指。这看似偶然的查获,背...
当患者开始自我诊断,谁来为他们... 打开社交软件,“科技减肥”的种草帖暗藏玄机,直播间里“不用运动、轻松躺瘦”的广告轮番刷屏。前脚向各类...
台电弃用于右任题词,沈富雄轰荒... 海峡导报综合报道 台电(台湾电力公司)招牌标志(Logo)字体已经从于右任版,更换成亲绿设计师聂永真...
107平,装下来大概需要多少钱... 这个话还需要您和设计师详细沟通下呢,因为每个人的需求不太一样,我随便给您报价也是对您的不负责任,您看...
800-800瓷砖一平方需要多... 一平方也就是1米×1米这么大个地方,那么800×800的瓷砖也就是0.8米左右的尺寸。这样换算起来就...
装修130平的房子需要多少费用 简约装修:每平米600至1000元,半包300至500元,130平米的房子装修,7.8至13万,半包...
16a转10a插座转换器安全吗 个人觉得16a转10a插座转换器并不怎么安全,因为16a的功率会比较大一些,如果使用一些大功率的电器...
空调多大匹数对应多少面积 问题:空调多大匹数对应多少面积回答:1、对于空调来说,如果选择匹数的话,一定要和房屋的面积成对等,一...