Day28-结合全部所学-前端实作篇

前言

终於把这次系列文需要先学会的观念都介绍完了,接下来就要进入实作环节的重头戏,前面讲了那麽多的观念如果最後不自己亲自实作一下相信读者应该也没办法体会到 K8s 的方便吧,剩下的时间笔者分别会介绍前端以及後端的设定方式让读者也能自己轻松的利用 minikube 完成一个网站的架构,那我们就正式进入实作环节吧!

前端 K8s 设定档

有了前面的观念相信读者知道 K8s 最重要的三个东西就是 DeploymentService 以及 Ingress 了,所以前端的 K8s 设定档也会是这样。

但要正式讲解 K8s 的内容前,必须要先提到系列文一开始 Dockerfile 的观念,毕竟要让 Pod 可以顺序运行必须要有相对应的 Docker image 才能达到这件事,而前端又必须要仰赖 Nginx 当作 web server 才可以顺利的把 webpack build 好的静态档跑起来,所以这边也会用到 multi-stage build 的观念,如果有读者还不熟悉这块的可以复习笔者之前的文章喔!

上面的 Dockerfile 可以发现在 Nginx 阶段的 WORKDIR 竟然是 /usr/share/nginx/html,这是因为在笔者介绍前端 Nginx 的写法时有提到 Nginx 预设读取 index.html 档案的位置就是在这个资料夹内,所以这边的 WORKDIR 理所当然地就会设定在这边喽!

接下来就可以看到 Nginx 的写法了,由於我们 Dockerfile 的 WORKDIR 变成 /usr/share/nginx/html,所以我们这边的 root 也会变成 /usr/share/nginx/html

再来就是 Deployment 的阶段了,读者可以发现这边的 containerPort 设定成 80,这是因为我们在 Dockerfile 中利用了 Nginx 作为 web server,而 Nginx 会预设 EXPOSE 80 这个 port,所以我们 containerPort 就直接设定 80 即可。

由於我们 Pod 的 containerPort 使用 80 port,所以在 Service 的区块我们也要使用 80 port 进行对接,这样才能让 service 可以顺利的连接到 Pod。

至於 Ingress 的部分就简单多了,一样也是设定 80 就对了,因为 Service 的 targetPort 就是 80 port。

建立前端环境

有了上面的设定档後接下来就是要一步一步建立起前端环境了!首先这里笔者要提醒大家,想要让 minikube 可以使用 local 的 Docker image 必须要先打上这个指令:eval $(minikube docker-env),这个指令简单来说就是建立一个环境变数把 local 端的 docker 可以跟 minikube 的 docker 作连动。

有了上面的设定档後就可以利用 Docker 的指令建立 Docker image 了。

前置作业做好了後就可以建立 Deployment,让 Pod 可以利用刚刚建立好的 Docker image 建立起 container 并且跑起来。

建立好 Deployment 就可以建立 Service 来进行连接。

最後就是建立 Ingress 作为一个统一对外的窗口。

DEMO time

等到上面的环境都建设完毕後,接下来就可以去修改 /etc/hosts 的档案了,把 minikube 的 ip 加上读者自己喜欢的 domain 後就可以看到网页顺利地跑起来了,这边笔者为了示范所以就把 domain 取名为 andychen.com.tw XD

最後在浏览器上打上 andychen.com.tw 这个网址就可以把刚刚设定好的前端网页运行起来了!

最後详细的前端架构可以参考这里,笔者都有把程序码摆在 GitHub 上,有兴趣的读者不妨可以抓下来自己亲自跑跑看会更有感觉喔!

小结

今天介绍完前端的实作,相信应该不会太难理解,毕竟这些设定档基本上都跟前面笔者介绍的内容非常相似,讲完了前端就要准备讲後端了,後端的设定档会跟前端稍微不太一样但也不会太难理解,就请读者敬请期待吧XD

如果对於文章有任何问题都欢迎留言给我,接下来就是实作的最後一篇了,那我们明天的文章见喽!


<<:  Day 29 -资料库应用小程序 菜单显示(内涵程序码)

>>:  Day30 赛後心得

Day 1 - 写「好」程序是什麽样的感觉?

前言 开赛啦!各位朋友大家好,我想会点进这系列文章的人,可能是以下两种: 学习前端、Javascri...

Day12 while实作

今天要用while回圈写一个小记帐程序,使用者可以输入他身上有的金额进行“储值”的动作,接着可以依据...

.NET Core第21天_FormTagHelper的使用_防止跨站请求设置方式

FormTagHelper : 为.net对html原生的封装, 预设若没指定method则是采用g...

Day6 NiFi - Processors

前面我们已经介绍完 FlowFiles 了,接下来就是可以一步一步地去建置我们的 Data Pipe...

前端工程学习日记第17天

#伪类:before :after做左右画线标题效果 经常可以看到这样的标题设计是在左右有一条横线中...