用rancher 创建k8s的Deployment、Service、Ingress
准备helloworld程序
创建一个springboot程序,加入一个hello接口,端口默认8080
@RestControllerpublicclassHelloController{@GetMapping("/hello")publicStringhello()throwsUnknownHostException{InetAddress ia=null;
ia=InetAddress.getLocalHost();String localname= ia.getHostName();String localip= ia.getHostAddress();System.out.println("本机名称是:"+ localname);System.out.println("本机的ip是 :"+ localip);return"hello,ip is "+localip;}}
将pom文件修改(可忽略)
将springboot打包成镜像
这里的helloword-1.0.jar是我打包的名字,实际可按你自己的名字来
下面是Dockerfile
FROM openjdk:8
VOLUME /tmp
ADD helloword-1.0.jar app.jar
RUNecho"Asia/Shanghai"> /etc/timezone
EXPOSE8666
ENTRYPOINT["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=dev","-jar","/app.jar"]
将Dockerfile和elloword-1.0.jar放到同个目录下,运行下面指令
含义就是吧jar包根据Dockerfile打包成镜像叫做10.19.64.203:8080/test/helloword-1.0
docker build --no-cache -t10.19.64.203:8080/test/helloword-1.0.
推送到docker仓库
仓库每个人可能不一样,反正指令含义一样就行,如果下面命令不行,请自己搜索一下
docker push10.19.64.203:8080/test/helloword-1.0
在rancher创建Deployment
在rancher创建Service
内部service选Cluster IP ,想外部暴露端口选Node Port ,这里选Node Port
这里的selector要回去之前创建成功的Deployment查看,查看pod的标签,这里会起到识别的作用
在图中为 workload.user.cattle.io/workloadselector apps.deployment-default-hello6
也可以修改deployment的Pod Labels进行修改成自定义的
填写下面的name的service ports
点击页面的30016/TCP,跳转目标服务
再访问外面定义的接口
ip:端口/hello
完成service
在rancher创建Ingress
创建
在本机的host文件加入你指定的域名,这里是hello6.com 映射到你的k8s的master ip上
windows的路径为C:\Windows\System32\drivers\etc\hosts
访问成功
路径重写的Ingress
路径重写的方法,可用于转发多个service
加入Annotationkey为nginx.ingress.kubernetes.io/rewrite-target value为$2
路劲改为/hello6(/|$)(.*)
这样就会重写hello6的路径,否则会把hello6带到转发路径里面
结束