沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践!
- FROM node:8.10.0-alpine
- WORKDIR /usr/src/app
- COPY package.json .
- COPY package-lock.json .
- RUN npm install
- COPY . .
- EXPOSE 3000
- CMD node index.js
【编者的话】本文介绍了一款解决Kubenetes应用本地开辟痛点的对象——Skaffold,作者经由过程实际示例向大年夜家展示了全部应用流程,值得参考。
在以前的几年,我已经在本身合股创办的Node.js咨询公司RisingStack和GoDaddy的临盆情况中大年夜范围应用Kubernetes。个一一项最常见的挑衅是缺乏合适的对象使开辟者可以或许在本地而不是真实的Kubernetes集群开辟他们的办事。在实践中,这意味着开辟者在脱分开辟情况或者临盆情况运行本地实例,这异常不睬想:若不在本地运行那些办事,调试将变得颇具挑衅。
就在几天前,我碰到了Skaffold,它是一款敕令行对象,旨在促进Kubernetes应用的持续开辟。在本文中,我将向你展示如安在Skaffold和Kubernetes的协助下开辟一款Node.js app。
Skaffold是一款敕令行对象,旨在促进Kubernetes应用的持续开辟。你可以在本地迭代应用源码,然后将其安排到本地或者长途Kubernetes集群中。Skaffold会处理构建、上传和应用安排方面的工作流。它通用可以在主动化情况中应用,例如CI/CD流水线,以实施同样的工作流,并作为将应用迁徙到临盆情况时的对象。——Skaffold官方文档
在实践中,Skaffold可以:
- 探测代码的变革,主动构建,并上传安排
- 主动更新镜像的tag,是以你不在须要手动修改Kubernetes的manifest文件
- 一次性构建/安排/上传不合的应用,是以它对于微办事同样完美适配
- 支撑开辟情况和临盆情况,经由过程仅一次运行manifest,或者持续不雅察变革
安装Skaffold
先决前提:
- 肯定已经安装了Minikube——(Skaffold可以或许与任何Kubernetes集群工作,出于简便性,我选择了Minikube)
- 肯定已经安装了kubectl
- 肯定你已经安装了Docker
安装完上述依附,拜访Skaffold发行版页面,下载合适你的体系的版本,然后将其添加到PATH。
应用Skaffold开辟一款Node.js应用
- const express = require('express')
- const app = express()
- app.get('/', function (req, res) {
- res.json({
- status: 'ok'
- })
- })
- app.listen(3000, err => {
- if (err) {
- throw err
- }
- console.log('server is listening')
- })
下一步,创建Dockerfile使应用容器化:
让我们经由过程开辟一款简单的Node.js应用入门——没有任何魔法,只是一个基于Express的傻瓜HTTP办事器罢了:
为了在Kubernetes中运行该应用,我们创建一个安排,并经由过程一个办事来expose该安排。为实现该目标,我应用:
- # k8s-app.yml
- apiVersion: extensions/v1beta1
- kind: Deployment
- metadata:
- name: node-app
- spec:
- replicas: 1
- template:
- metadata:
- labels:
- app: node-app
- spec:
- containers:
推荐阅读
沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! 数据可视化是数据科学家工作中的重要构成部分。在项目标早期阶段,你平日会进行摸索性数据分析(Exploratory D>>>详细阅读
本文标题:在本地开发中使用Kubernetes
地址:http://www.17bianji.com/lsqh/40892.html
1/2 1