0
点赞
收藏
分享

微信扫一扫

实验配置Ingress使用https协议访问应用系统

实验步骤:

1、配置应用系统登录账号MFA。

2、应用系统域名地址配置到本地开发电脑hosts、服务器hosts。

3、在kubernetes集群安装部署应用系统。

4、确认应用系统http协议访问地址,签发应用系统域名证书。

5、在k8s集群创建应用系统域名地址ingress规则。

6、验证应用系统域名地址。

本实验所用资源可从课程下载: ​​ kubernetes原理精讲【监控体系原理+实践篇】

​1、部署应用系统

1、准备实验项目
learn-otp项目源码下载地址:https://gitee.com/anning-liang/learn-otp.git
项目功能介绍:go语言项目,实现动态密码(MFA机制)登录系统的功能,通过查询数据库对登录账号和动态密码验证,验证通过,系统登录成功。
# 拉取仓库源码构建镜像,把配置参数端口改成8086
访问地址示例:http://localhost:8086

在192.168.2.10主机提前安装mysql服务,创建数据库learn_otp,创建账号和密码root / 123456
登录mysql数据库,执行脚本learn_otp.sql
提前导入应用镜像推送到镜像仓库:registry.yunlearn.org:5000/release/learn-otp:v1.0.0
上传learn-otpv1.0.0.tar到master节点/root/prometheus/ingress-tls/otp目录下,执行镜像导入命令并推送到镜像仓库
mkdir -p /root/prometheus/ingress-tls/otp
docker load -i learn-otpv1.0.0.tar
docker push registry.yunlearn.org:5000/release/learn-otp:v1.0.0

# MFA账号用于登录系统和生成一次性密码,账号和密钥保存在数据库
在阿里云APP或微信小程序运维密码添加MFA账号和密钥:
账号:admin
密钥:NFMSBPGEJLF4VQILE6IZKBJXD5TTJW6B

添加MFA账号和密钥方法,可以用微信小程序运维密码添加,也可以用阿里云APP添加。以阿里云APP添加步骤示例如下:

实验配置Ingress使用https协议访问应用系统_ingress

2、上传应用系统相关yaml文件到master节点/root/prometheus/ingress-tls/otp,执行部署命令。
kubectl create ns learn
kubectl apply -f mysql-endpoints.yaml
kubectl apply -f mysql-svc.yaml
kubectl apply -f learn-otp-deploy.yaml
kubectl apply -f learn-otp-svc.yaml
# 验证部署结果
kubectl get svc -o wide -n learn
kubectl get ep -o wide -n learn
kubectl get po -o wide -n learn
# 实操提示:执行kubectl apply -f learn-otp-svc.yaml命令,如果报错:The Service "learn-otp" is invalid: spec.ports[0].nodePort: Invalid value: 8086: provided port is not in the valid range. The range of valid ports is 30000-32767
# 错误信息显示,集群默认端口范围是30000-32767,解决方法:修改kube-apiserver.yaml配置,登录master主机根据需求修改合适的端口范围
vi /etc/kubernetes/manifests/kube-apiserver.yaml
# 找到service-cluster-ip-range这一行,在下一行增加参数 service-node-port-range,如下:
- --requestheader-username-headers=X-Remote-User
- --secure-port=6443
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
- --service-cluster-ip-range=10.96.0.0/12
- --service-node-port-range=10-65000

3、验证业务,打开浏览器访问http://192.168.2.12:8086
按提示输入账号和MFA密码

2、配置Ingress使用https协议访问应用系统

1、上传ingress-learn-service.yaml文件到master节点/root/prometheus/ingress-tls/otp

2、执行部署
kubectl apply -f ingress-learn-service.yaml
# 验证部署结果
kubectl get ingress -n learn

3、本地开发电脑hosts新增配置C:\Windows\System32\drivers\etc\hosts
192.168.2.12 otp.learn.org

4、worker01和worker02节点配置/etc/hosts,新增三个域名配置
vi /etc/hosts
192.168.2.12 otp.learn.org

5、验证业务,打开浏览器访问http://otp.learn.org:30180
按提示输入账号和MFA密码

6、登录master节点,上传课程资源文件otp-ingress-tls.yaml、otp.learn.org-csr.json到目录/root/prometheus/ingress-tls
在master节点签发otp系统域名证书
# 创建文件
cat > otp.learn.org-csr.json <<EOF
{
"CN": "otp.learn.org",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "GuangXi",
"ST": "GuangXi"
}
]
}
EOF
# 创建证书存放目录
mkdir -p /root/prometheus/ingress-tls/otp
# 签发otp系统域名证书
cd /root/prometheus/ingress-tls
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -hostname=10.96.0.1,127.0.0.1,otp.learn.org,kubernetes,kubernetes.default,kubernetes.default.svc,kubernetes.default.svc.cluster,kubernetes.default.svc.cluster.local, -profile=kubernetes otp.learn.org-csr.json | cfssljson -bare ./otp/otp.learn.org

7、在master节点创建k8s集群secret
cd /root/prometheus/ingress-tls
kubectl create secret tls otp-learn-org --cert=./otp/otp.learn.org.pem --key=./otp/otp.learn.org-key.pem -n learn
# 验证secret已创建
kubectl get secret -n learn

8、配置ingress策略
kubectl apply -f otp-ingress-tls.yaml
# 实操提示:如果报错:Error from server (BadRequest): error when creating "otp-ingress-tls.yaml": admission webhook "validate.nginx.ingress.kubernetes.io" denied the request: host "otp.learn.org" and path "/" is already defined in ingress learn/ingress-learn-service,说明之前已经创建过ingress,需删除之前的ingress。
# 验证ingress已创建成功
kubectl get ingress -n learn

9、验证otp系统使用https地址访问正常
# 在浏览器输入地址访问正常https://otp.learn.org:3443


3、更多k8s学习资料

 ​​ 1、kubernetes原理精讲【基础原理+实践篇】​​

 ​​ 2、kubernetes原理精讲【自签证书原理+实践篇】​​

 ​​ 3、kubernetes原理精讲【监控体系原理+实践篇】​​


举报

相关推荐

0 条评论