ingress-nginx 0.3.0部署
目的实现用ingress-nginx访问集群内部的nginx备注此版本只是初步实现,先入门在研究。步骤安装ingress-controller(版本0.3.0)新建文件夹mkdir ingress-nginx-test下载https://github.com/kubernetes/ingress-nginx/tree/nginx-0.30.0/deploy/statichttps://github
目的
实现用ingress-nginx访问集群内部的nginx
备注
此版本只是初步实现,先入门在研究。
步骤
安装ingress-controller(版本0.3.0)
-
新建文件夹
mkdir ingress-nginx-test -
下载
https://github.com/kubernetes/ingress-nginx/tree/nginx-0.30.0/deploy/static
https://github.com/kubernetes/ingress-nginx/tree/nginx-0.30.0/deploy/static/provider/baremetal
mandatory.yaml
service-nodeport.yaml -
部署ingress-controller
kubectl apply -f mandatory.yaml
kubectl apply -f service-nodeport.yaml -
查看ingress-controller状态
kubectl get pod -n ingress-nginx
-
查看service状态
kubectl get service -n ingress-nginx
-
访问service
本机ip+service端口号
我这里是http://10.202.254.xxx:31057/
看到的是404,此时证明你的ingress已经安装好了。 -
备注
我在安装ingress-controller的时候遇见过一些问题
https://github.com/kubernetes/ingress-nginx/issues/4296
后来我的解决方式是更改了ingress-nginx的版本号,之前是0.25.0改成了0.3.0,问题就解决了。具体为什么我也不太知道以后慢慢学吧。
如果你也遇见了问题可以看一下nginx-ingress-controller的日志google一下。
kubectl logs -n ingress-nginx nginx-ingress-controller-5bb8fb4bb6-gl6dj -
部署nginx应用
另外新建一个nginx-app文件夹
cd … & mkdir nginx-app
namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: ns-nginx
deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ns-nginx
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: ns-nginx
spec:
selector:
app: nginx
type: ClusterIP
ports:
- protocol: TCP
port: 8080
targetPort: 80
重点注意一下这里service对外暴露的是8080端口
kubectl apply -f namespacet.yaml
kubectl apply -f deploy.yaml
kubectl apply -f service.yaml
-
查看ngixn应用状态
get all -n ns-nginx -o wide
用另外一台机器curl service的ip和端口号
curl http://ip:8080
如果你看到nginx的欢迎页面说明这时候说明你的nginx应用已经部署成功 -
配置ingress
cd …/ingress-nginx-test
vim ingress-nginx.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-nginx
namespace: ns-nginx
annotations:
kubernets.io/ingress.class: "nginx"
spec:
rules:
- host: testingress.com
http:
paths:
- path:
backend:
serviceName: nginx-service
servicePort: 8080
从配置可以清晰的看出来就是将 testingress.com的请求转发到nginx-service这个service的8080端口
kubectl apply -f ingress-nginx.yaml
- 配置host文件
我的机器是mac,配host文件自行google
sudo vim /etc/hosts
添加
服务器ip testingress.com
- 最终测试
http://testingress.com:31057
如果你和我一样,说明你成功了!
- 结束
这是最基础的入门,可以用在生产环境但肯定不是最佳实践,继续学习。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)