证书
密钥
创建证书 钥
secrets 保存密钥信息,部署pod时把secrets挂载到pod
openssl reg -x509 -sha256 -nodes -days 365 -newkey ras:2048 -keyout tls.key -out tls.crt -subi "/CN=nginxsvc/0=nginxsvc"
req: 生成证书文件的情趣
x509: 生成x.509自签名的证书
sha256:表示使用sha-256的散列算法
-nodes:表示生成的密钥不加密
days 365: 证书有效期是365天
-newkey rsa:2048: RSA的密钥对,长度2048位
keyout tls.key -out tls.crt: 密钥文件 key 证书文件
crt-subj"/CN=nginxsvc/0=nginxsvc": 主题,CN common name o: organization 组织
nginx的登录账户认证:
nginx的重写,nginx的重定向
nginx-ingress-controller
traefik ingress controller:
traefik是一个为了让部署微服务更加快捷而诞生的一个http方向代理,负载均衡
traefik设计时就能够实时的和k8s API交互,感知后端service以及pod的变化,可以自动更新配置和重载
pod内 nginx 80 8081
traefik的部署方式:
①daemonset
特点
优点: 每个节点都会部署一个traefik,节点感知,可以自动发现,更新容器的配置。不需要手动重载。
缺点: 资源占用,大型集群中,deamonset可能会运行多个traefik的实力,尤其是节点上不需要大量容器运行的情况下。没有办法扩缩容
部署对外集群:对外的业务会经常变更,deamonset可以更好的,自动的发现服务配置变更
②deployment
优点:集中办公控制,可以使用少量的实例来运行处理整个集群的流量。更容易升级和维护
缺点: deployment的负载均衡不会均分到每个节点。手动更新,无法感知容器内部配置的变化
部署对内集群:对内的相对稳定,更新和变化也比较少,适合deployment
traffic-tye: internal 对内服务
traffic-type: external 对外服务
nginx-ingress:
工作原理都一样,都是7层代理,都可以动态的更新配置,都可以自动发现服务
traefik-ingress: 白动更新的重载更快,更方便
traefik的并发能力只有nginx-ingress的6成 60%
nginx-ingress-controller
traefik
wget https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-deployment.yaml
wget https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-rbac.yaml
wget https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-ds.yaml
wget https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/ui.yaml
ingress:
nginx-ingresscontroller
deployment+loadbalancer: 公有云提供负载均衡的公网地址
daemonset+hostbnetworktnodeseletor: 和节点服务共享网络,一个节点一个cntroller pod.使用宿主机的端口性能每好,适合大并发
deployment+NodePort: 最常见,最常用,最简单的方法。但是性能不太好,多了一成nat也址转发。
traefik-ingress-controller
daemonset 对外 可以自动更新容器的配置 host 节点网络
deployment 对内 无法自动自动更新配置 NodePort
https:
1.生成证书密
2.创建secret,保存证书和密钥
3.创建ingress把secret导入
加密认证:
1、htpasswd -c auth 认证文件只能是auth
2、创建ingress:
nginx.ingress .kubernetes .io/auth-type: basic
#声明认证类型
nginx,ingress .kubernetes ,io/auth-secret: basic-auth
#导入认证的密钥文件