当前位置: 首页 > news >正文

查网站备案号模板免费下载官网

查网站备案号,模板免费下载官网,phpcms二级栏目文章列表调用网站最新文章的方法,网站代搭建维护在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中#xff0c;我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程#xff0c;这里介绍如何在部署于Kubernetes的ASP.NET Core MVC的应用程序中使用Rook-Ceph所创建的存储对象。构建ASP.NET Core MVC (.NET 5)应用… 在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程这里介绍如何在部署于Kubernetes的ASP.NET Core MVC的应用程序中使用Rook-Ceph所创建的存储对象。构建ASP.NET Core MVC (.NET 5)应用程序这个程序的基本功能就是用户可以通过主页上传一个文件并保存到由Rook-Ceph创建的S3对象存储同时将文件信息和上传时间保存为一个MongoDB的文档。MongoDB使用Rook-Ceph创建的块存储Block Storage。首先新建一个基于.NET 5的ASP.NET Core MVC应用程序添加AWSSDK.S3和MongoDB.Driver这两个NuGet Package的引用。然后修改Startup.cs的ConfigureServices方法public void ConfigureServices(IServiceCollection services) {services.AddControllersWithViews();services.ConfigureFormOptions(options {options.MultipartBodyLengthLimit 268435456;});var s3Endpoint Configuration[s3:endpoint];var s3AccessKey Configuration[s3:accessKey];var s3SecretKey Configuration[s3:secretKey];var s3Configuration new AmazonS3Config{RegionEndpoint RegionEndpoint.USEast1,ServiceURL s3Endpoint,ForcePathStyle true};services.AddTransientIAmazonS3(sp new AmazonS3Client(s3AccessKey, s3SecretKey, s3Configuration));var mongoConnectionString Configuration[mongo:connectionString];var mongoDatabase Configuration[mongo:database];services.AddTransientIDataAccessObject(sp new MongoDataAccessObject(new MongoUrl(mongoConnectionString), mongoDatabase)); } 这里用到了配置信息为了调试方便可以修改appsettings.json文件添加对于S3和MongoDB的配置信息{Logging: {LogLevel: {Default: Information,Microsoft: Warning,Microsoft.Hosting.Lifetime: Information}},s3: {endpoint: http://localhost:9000,accessKey: AKIAIOSFODNN7EXAMPLE,secretKey: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY},mongo: {connectionString: mongodb://localhost:27017,database: form-file-upload},AllowedHosts: * } 之后修改Index.cshtml文件将界面元素准备好{ViewData[Title] Home Page; } model FileUploadModeldiv classtext-centerh1 classdisplay-4Welcome/h1pLearn about a hrefhttps://docs.microsoft.com/aspnet/corebuilding Web apps with ASP.NET Core/a./pform methodpost enctypemultipart/form-data asp-controllerHome asp-actionIndexdiv classform-groupdiv classcol-md-10pUpload one or more files using this form:/pinput typefile namefile //div/divdiv classform-groupdiv classcol-md-10input typesubmit valueSave //div/div/form /div 修改HomeControllerpublic class HomeController : Controller {private readonly ILoggerHomeController _logger;private readonly IDataAccessObject _dao;private readonly IAmazonS3 _s3;public HomeController(ILoggerHomeController logger, IAmazonS3 s3, IDataAccessObject dao) (_logger, _s3, _dao) (logger, s3, dao);public IActionResult Index(){return View();}[HttpPost][ValidateAntiForgeryToken]public async TaskIActionResult Index(FileUploadModel model){if (model.File ! null){var fileName Path.GetFileName(model.File.FileName);var fileTransUtility new TransferUtility(_s3);using var stream model.File.OpenReadStream();await fileTransUtility.UploadAsync(stream, data, $FormFileUpload/{fileName});await _dao.AddAsyncSavedFile(new SavedFile{Timestamp DateTime.UtcNow,FileName fileName});return View();}else{}return View();}public IActionResult Privacy(){return View();}[ResponseCache(Duration 0, Location ResponseCacheLocation.None, NoStore true)]public IActionResult Error(){return View(new ErrorViewModel { RequestId Activity.Current?.Id ?? HttpContext.TraceIdentifier });} } 其它相关代码这里就不全部贴出来了可以直接参考本案例的源代码。在开发模式下我使用运行于Docker的MongoDB以及MINIO分别作为数据库后端和S3服务后端。在按下F5进行Debug之前请先确保MongoDB和MINIO已经运行。可以参考https://github.com/daxnet/form-file-upload/blob/main/docker-compose.yml。生成用于部署应用程序的HELM Chart仍然使用上面提到的docker-compose.yml文件然后使用下面的命令来生成HELM Chart:kompose convert -f docker-compose.yml -c -o k8s 执行成功后会在k8s的目录下产生用于部署到Kubernetes的HELM Chart。完整内容可以参考https://github.com/daxnet/form-file-upload/tree/main/k8s需要注意几个内容使用Ceph Object Store (S3)要使用Ceph Object Store只需要正确配置app中S3的Access Key、Secret Key以及Endpoint即可。对应的就是form-file-upload-service-deployment.yaml中的s3__accessKey、s3__endpoint和s3__secretKey环境变量设置。它们的取值在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中已经介绍过了只是在Endpoint的Host名称上需要加上http://。详细可以参考values.yaml文件。使用Ceph Block Storage部署到Kubernetes的MongoDB会需要使用Ceph Block Storage。在mongodb-deployment.yaml中会指定容器的volumeMountvolumeMounts: - mountPath: /data/dbname: mongo-data 然后在Volume的定义部分指定使用名为{{ .Release.Name }}-form-file-upload-mongo-data的PersistentVolumeClaimvolumes: - name: mongo-datapersistentVolumeClaim:claimName: {{ .Release.Name }}-form-file-upload-mongo-data 这里的{{ .Release.Name }}表示HELM的release的名字。接下来在这个PersistentVolumeClaim中mongo-data-persistentvolumeclaim.yaml可以指定所需使用的StorageClassspec:accessModes:- ReadWriteOnceresources:requests:storage: 20GistorageClassName: {{ .Values.mongoStorageClassName }} 在这里storageClassName在values.yaml中设置mongoStorageClassName: rook-ceph-block 而rook-ceph-block就是我们在前文中创建的Block Storage的名字。部署并运行程序使用git将https://github.com/daxnet/form-file-upload.git克隆到本地进入k8s目录然后helm install ffu . 安装成功后查看pods$ kubectl get po NAME READY STATUS RESTARTS AGE dnsutils 1/1 Running 2 160m ffu-form-file-upload-mongo-8c46f48fc-vm76k 1/1 Running 0 23m ffu-form-file-upload-service-7c5c679b96-rxl5s 1/1 Running 0 23m 查看PersistentVolumeClaims$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ffu-form-file-upload-mongo-data Bound pvc-8e681be4-4378-11eb-8a9b-0ac973bf1e37 20Gi RWO rook-ceph-block 64m 可以看到ffu-form-file-upload-mongo-data这个PVC使用的StorageClass就是rook-ceph-block。查看Services$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ffu-form-file-upload-mongo ClusterIP 10.43.83.79 none 27017/TCP 65m ffu-form-file-upload-service ClusterIP 10.43.57.233 none 8080/TCP 65m kubernetes ClusterIP 10.43.0.1 none 443/TCP 3d10h 通过port-forward来访问应用程序$ kubectl port-forward svc/ffu-form-file-upload-service 8081:8080 Forwarding from 127.0.0.1:8081 - 80 Forwarding from [::1]:8081 - 80 打开浏览器访问http://localhost:8081点击Choose File按钮选择一个文件测试方便尽量选择小一点的文件点击Save。成功后没有任何信息提示会返回到没有上传文件时的状态。验证结果使用下面的命令查看S3中已经保存的文件$ kubectl exec -it -n rook-ceph deploy/rook-ceph-tools -- s3cmd ls s3://data/FormFileUpload/ 2020-12-21 11:47 1260 s3://data/FormFileUpload/abc.sldimport 可以看到文件已经成功上传到S3。使用下面的命令查看MongoDB中的数据$ kubectl exec -it deploy/ffu-form-file-upload-mongo -- mongo --eval db.SavedFile.find().pretty() form-file-upload MongoDB shell version v3.6.21 connecting to: mongodb://127.0.0.1:27017/form-file-upload?gssapiServiceNamemongodb Implicit session: session { id : UUID(85f7d362-13d6-41b9-90f9-9de86f711eb0) } MongoDB server version: 3.6.21 {_id : BinData(3,NyKi5Q5N0O9B1bIddlk/g),Timestamp : ISODate(2020-12-21T11:47:01.853Z),FileName : abc.sldimport } 可以看到数据记录已经成功保存到MongoDB。源代码和部署脚本一切的一切尽在https://github.com/daxnet/form-file-upload。Enjoy!
http://www.zqtcl.cn/news/964614/

相关文章:

  • 网站在当地做宣传郑州高端设计公司
  • 一级a做爰网站微网站建设平台
  • 网站建设 中广州网站建设+致茂
  • 常德车管所网站工作微信管理系统
  • 什么软件可以做dj视频网站做的好的装修公司网站
  • 网站维护的内容和步骤如何建设像艺龙一样网站
  • 外国人做的学汉字网站公司网页需要哪些内容
  • 网站做缓存企业营销型网站的内容
  • 免费带后台的网站模板wordpress vr主题公园
  • 美丽乡村 网站建设wordpress分页工具栏
  • 卡盟网站是怎么建设的产品开发设计
  • 第一免费营销型网站一起做网店17
  • 高端学校网站建设做网站是怎么赚钱的
  • 哪里可以找人做网站在服务器上中的asp网站后台能输入帐号无法进入
  • 怎么网站关键词语有哪些
  • 网站建设 维护费用环球易购招聘网站建设
  • 怎么做网站官方电话手机应用开发平台
  • 济南企业免费建站剪辑视频怎么学
  • 手表网站免费设计上海做网站制作
  • 深圳网站seo优化课程设计做淘宝网站的目的
  • 机械网站建设中心莱芜论坛莱芜都市网
  • 58同城类似的网站怎么做seo做的比较好的公司
  • 厦门网站建设培训学校网站程序定制开发流程
  • 宣传旅游网站建设的观点是什么资阳网站建设方案
  • ui设计与网站建设怎么建设一个手机网站
  • 网站建设加推广优化网站移动端开发公司
  • 猪八戒网站开发电子商务公司取名字参考大全
  • 酒泉手机网站建设大连网站如何制作
  • 做网站点子免费做简历的软件网站
  • 刘涛做代言的那个网站设计与制作