用rancher 创建k8s的Deployment、Service、Ingress
用rancher 创建k8s的Deployment、Service、Ingress准备helloworld程序创建一个springboot程序,加入一个hello接口,端口默认8080@RestControllerpublic class HelloController {@GetMapping("/hello")public String hello() throws UnknownHostEx
用rancher 创建k8s的Deployment、Service、Ingress
准备helloworld程序
创建一个springboot程序,加入一个hello接口,端口默认8080
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() throws UnknownHostException {
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
RUN echo "Asia/Shanghai" > /etc/timezone
EXPOSE 8666
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 -t 10.19.64.203:8080/test/helloword-1.0 .
推送到docker仓库
仓库每个人可能不一样,反正指令含义一样就行,如果下面命令不行,请自己搜索一下
docker push 10.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
加入Annotation key为nginx.ingress.kubernetes.io/rewrite-target value为$2
路劲改为/hello6(/|$)(.*)
这样就会重写hello6的路径,否则会把hello6带到转发路径里面
结束
更多推荐
所有评论(0)