【Kubernetes系列】第6篇 Ingress controller - nginx组件介绍
1. 概述
在上一篇文章中我们介绍了如何通过helm进行安装部署traefik组件,文中还提到常用的ingress controller除了traefik还有Nginx、HAProxy、Kong等,在本篇文章中我们就介绍如何安装部署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 镜像下载及上传
部分企业由于服务器没有外网访问策略以及防火墙的原因无法获取国外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组件,其中之一是接收内网访问请求,另外一个是接收外网访问请求,相应配置如下:
# 内网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. 参考资料
https://kubernetes.github.io/ingress-nginx/deploy/
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云配置审计 - 规则篇
阿里云配置审计是一款面向资源的审计服务类产品。它可以主动发现用户资源,持续监控并记录资源配置变更,能够提供有效的资源管控服务。并基于“合规即代码”的理念,将资源审计逻辑实现放置于阿里云函数计算运行环境之上,使得持续性的合规审计、安全评估分析成为可能。更多的阿里云Config介绍请参考 阿里云配置审计 - 全解析 阿里云配置审计(以下简称Config)提供了持续的合规审计功能,以审计规则作为落地合规审计的具体策略,基于自动化的手段帮助企业用户完善资源合规审计制度,确保“等级2.0”具体实施的快速落地。它一方面提供了丰富的托管审计规则,提供基础的合规审计功能,开箱即用,可以满足绝大部分用户需求;另外用户可以开发自定义的审计规则,完善内部最佳实践和指南。 为支持后续合规审计规则的持续建设,结合“等保2.0”的具体要求和阿里云Config已具
- 下一篇
批量在多台ECS内执行命令的最佳实践
背景与痛点 阿里云的客户远程在ECS内部执行命令是最常见的运维操作之一了,比如在ECS内安装卸载软件,启动停止某个进程,等等。很多情况下,还需要对一个ECS列表中的多台ECS,统一的执行某个相同的命令并汇聚执行的结果。 一个可行的方案是利用SSH远程连接到ECS上执行命令,但是开放ECS的SSH端口给internet访问是危险的。客户可以通过自建跳板机来间接访问ECS以解决安全性的问题,但是这带来了复杂度和成本的上升。 Ansible是业界比较流行的开源的运维工具,但是其认证是独立于阿里云的账号体系之外的,无法通过阿里云的官方工具进行权限控制,其操作记录也无法在阿里云上进行审计。 如果用户使用的是Windows版本的ECS,虽然可以利用PowerShell远程执行命令,但是配置和维护过程更加困难。 在此,我们向大家推荐阿里云官方的批量在多台ECS内执行命令的最佳实践:运维编排服务OOS+云助手。云助手提供了在ECS内执行命令的原子能力,运维编排服务OOS则附加了更丰富的批量、定时、事件驱动、自定义模板等能力,两者结合,可以让ECS运维工作变得既安全又简单高效。 准备工作 准备工作只有两...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程