伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

Cluster Setup - Secure Ingress--安全入口

来源:本站原创 浏览:187次 时间:2021-06-15

前言

ingress objects with security control 一个具有安全控制的入口对象
what is ingress? 什么是入口
setup an ingress with services 使用服务设置入口
secure an ingress with tls 使用tls保护入口
参见官方文档
https://kubernetes.io/docs/concepts/services-networking/ingress/
一个API对象,用于管理对集群中服务的外部访问,通常是HTTP。
入口可以提供负载平衡,SSL和基于名称的虚拟主机。

1. 什么是ingress?



一般的外部访问应用的流程

  1. 通过yaml等资源创建一个nginx pod应用(也可以是其他应用,用nginx镜像就因为简单)
  2. 外部用户通过LoadBalancer(负载均衡)映射到NodePort(主机暴露的3000-32767任一端口)通过ClusterIP(服务在集群内的ip)到pod应用暴露的端口。

metallb裸金属的代理方式 还有traefik kong istio等是怎么玩的?也没有深入研究下traefik。个人使用就是用腾讯云的slb负载均衡使用tcp的方式绑定了work节点的80 443 Nodeport 然后service都是用了ClusterIP的方式。至于端口没有使用http https的方式是因为slb服务只能挂载一个证书。域名比较乱。为了方便管理,证书就使用在集群内用secret的方式管理挂载了。
kubernetes的网络通信有时间要深入研究一下了。自己太浮躁掌握的太浅。正巧今天看到了倪鹏飞大佬分享的如何快速掌握kubernetes网络,可以有时间看下:https://mp.weixin.qq.com/s/Tq1dq57Y0FPgzwPxzixHoA。

2 . 举一个例子简单http的例子


注: service1 service2就用默认的nginx apache镜像去区分了。index.html毕竟不一样。很容易区分出来部署效果。

2.1 创建ingress-nginx入口
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.40.2/deploy/static/provider/baremetal/deploy.yaml


嗯!镜像库被墙了,国外服务器下载了然后修改了标签上传到了自己的harbor仓库,然后直接修改deployment中image的标签。当然了我在work节点直接docker pull下了镜像。对于私有仓库正常的是建立一个秘钥secret在namespace,然后配置文件也添加上有pull镜像权限的secret的方式进行部署。

kubectl edit deployment ingress-nginx-controller -n ingress-nginx



OK ,访问master节点IP+nodeport 与work节点IP+nodeport都是可以正常返回的

2.2. 创建pod service 以及ingress入口
kubectl run pods1 --image=nginx -n ingresskubectl run pods2 --image=httpd -n ingresskubectl expose pod pods1 --port 80 --name service1 -n ingresskubectl expose pod pods2 --port 80 --name service2 -n ingress

注:随便编排在那一个命名空间都可以的,没有再default空间部署是因为我保留了再default空间的network policy。不想删除了,就建立一个新的空间没有网络规则的空间演示了。另外,这里是不是也可以玩下网络规则呢?题外话了哈哈。

创建ingress入口文件

2.3. 测试部署结果
curl 10.0.4.14:31279/service1curl 10.0.4.14:31279/service2

两个service返回不一样的 一个nginx 一个apache简单测试通过。

3. 创建一个https的例子

3.1 首先确认一下https对外映射的端口是30437

3.2 关键一下直接访问是什么结果。以及熟悉下curl
curl https://10.0.2.17:30437/service1curl https://10.0.2.17:30437/service2curl https://10.0.2.17:30437/service1 -kcurl https://10.0.2.17:30437/service2 -k


嗯 -k忽略证书。

3.3 curl -kv 跟踪下证书
curl https://10.0.2.17:30437/service1 -kvcurl https://10.0.2.17:30437/service2 -kv


由上图可知ingress 入口默认的证书用的是kubernetes 自签名的通配符证书

3.4 创建自己的证书,并将证书以secret的方式挂载在相应命名空间
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodeskubernets create secret tls secure-ingress --cert=cert.pem   --key=key.pem -n ingress

3.5 修改ingress配置文件
apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: secure-ingress  namespace: ingress  annotations:    nginx.ingress.kubernetes.io/rewrite-target: /spec:  tls:  - hosts:      - sɽ��,��ɽecure-ingress.com    secretName: secure-ingress  rules:  - host: secure-ingress.com    http:      paths:      - path: /service1        pathType: Prefix        backend:          service:            name: service1            port:              number: 80      - path: /service2        pathType: Prefix        backend:          service:            name: service2            port:              number: 80



so 为什么还是kubernetes 自签名的通配符证书,创建自己的证书?因为配置文件里面的host是secure-ingress.com的域名方式。

3.6 正确的打开方式3.6.1host添加解析
cat /etc/hosts10.0.2.17 secure-ingress.com

3.6.2 另外一种方式curl 的用法 resolve
curl https://secure-ingress.com:30437/service1 -kv --resolve secure-ingress.com:30437:10.0.2.17


OK简单的跑完。欠了两个基础知识,一个curl的各种玩法, 还有kubernetes的网络通信原理。有机会补上

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net