ingress-nginx自带认证功能【nginx自带】

问题:通过nginx可以给某些web网站设置登录使用的用户名和密码,现在网站部署到k8s中,通过配置nginx-ingress->service->pod来访问的,怎么给这个网站再配置上访问的用户名和密码

参考网址:https://blog.csdn.net/wzy_168/article/details/103138710

方法:
大致步骤如下:
1.按照之前的流程安装httpd-tools,生成含有用户名和密码的加密文件
2.在k8s中根据这个加密文件配置生成一个secret
3.nginx-ingress中引用这个secret使用

创建用户,设置密码

$ htpasswd -c auth foo

htpasswd不是centos7自带的命令,需要使用yum安装。

yum install httpd-tools

选项
-c: 创建一个新的密码文件
-b: 在命令行中一并输入用户名和密码而不是根据提示输入密码
-D: 删除指定的用户
-n: 不更新密码文件,只将加密后的用户名密码输出到屏幕上
-p: 不对密码进行加密,采用明文的方式
-m: 采用MD5算法对密码进行加密(默认的加密方式)
-d: 采用CRYPT算法对密码进行加密
-s: 采用SHA算法对密码进行加密
-B: 采用bcrypt算法对密码进行加密(非常安全)
参数
用户名: 要创建或者更新的用户名
密码: 用户的新密码

根据加密文件生成secret

注意其中命名空间demo-echo,secret 与目标服务 echo 在同一个 namespace 中。

$ kubectl -n demo-echo create secret generic basic-auth --from-file=auth

为目标服务设置 ingress

注意其中的'basic-auth'改成你的

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-echo-with-auth-basic
  annotations:
    # type of authentication
    nginx.ingress.kubernetes.io/auth-type: basic
    # name of the secret that contains the user/password definitions
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    # message to display with an appropriate context why the authentication is required
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - foo'
spec:
  rules:
  - host: auth-basic.echo.example
    http:
      paths:
      - path: /
        backend:
          serviceName: echo
          servicePort: 80

延申

1.若是nginx-ingress下的域名配置有多个路径,则需要给目标路径单独新配置一个nginx-ingress来使用
2.不同的nginx-ingress可以配置同一个域名来使用

posted @   哈喽哈喽111111  阅读(731)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2020-07-02 nexus迁移
2020-07-02 nexus清理释放磁盘空间
点击右上角即可分享
微信分享提示