实现效果: 使用阿里云域名访问k8s内部服务 k8s集群是自建在阿里云ecs服务器上的
条件:
1.拥有阿里云域名以及至少一台ecs服务器
2.k8s集群部署完成
3.nginx-ingress、default-http-backend组件已安装
4.jenkins的服务以及svc已经部署好
例子: 使用阿里云域名访问k8s内部部署的jenkins服务
1.添加三级域名并解析到k8s集群任意一台服务器上
主机记录: jenkins
主机类型: A
记录值: 服务器ip地址
2.申请刚才添加域名的https证书 阿里云可以免费申请20个 如果不会申请 可以自行百度
3.创建tls
将https证书下载到本地 再上传到master服务器上并解压 解压出来一般会有两个文件pem跟key 然后执行命令kubectl create secret tls jenkins-ssl --key ./jenkins.test.cn.key --cert ./jenkins.test.cn.pem -n kube-ops
意思是在namespace为kube-ops的命名空间下创建了一个名为jenkins-ssl的secret
4.创建ingress规则
需要注意的就是jenkins的svc需要跟创建的ingress处于同一个命名空间下
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: jenkins
namespace: kube-ops
annotations:
#进行说明我们接下来要用到的规则是nginx,就是靠annotations来识别类型的,只有进行注解了才能转化为对应的与controller相匹配的规则
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: 'true' #http 自动转https
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600" #修改代理超时时间,默认是60s
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
spec:
rules:
- host: jenkins.test.cn
http:
paths:
- path: /
backend:
serviceName: jenkins-svc
servicePort: 8080
tls:
- hosts:
- jenkins.test.cn
secretName: jenkins-ssl
5.测试访问
在浏览器输入ingress配置的域名 jenkins.test.cn 即可访问到k8s集群内布的jenkins服务!!!