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

ppt模板免费下载网站不需要登录有哪些好的印花图案设计网站

ppt模板免费下载网站不需要登录,有哪些好的印花图案设计网站,免费模板网站都有什么,iis部署网站项目背景ASP.NET Core默认的配置文件定义在 appsetings.json和 appsettings.{Environment}.json文件中。这里面有一个问题就是#xff0c;在使用容器部署时#xff0c;每次修改配置文件都需要重新构建镜像。当然你也可能会说#xff0c;我的配置文件很稳定不需要修改#xff0c… 背景ASP.NET Core默认的配置文件定义在 appsetings.json和 appsettings.{Environment}.json文件中。这里面有一个问题就是在使用容器部署时每次修改配置文件都需要重新构建镜像。当然你也可能会说我的配置文件很稳定不需要修改但你又如何确保配置文件中一些机密配置的安全问题呢比如暴露了你的远程数据库的连接信息哪天被员工不小心删库跑路了呢那接下来就来讲解下如何在.NET Core 中正确使用ConfigMap。ConfigMap/SecretK8S中引入了ConfigMap/Secret来存储配置数据分别用于存储非敏感信息和敏感信息。其目的在于将应用和配置解耦以确保容器化应用程序的可移植性。创建 ConfigMap玩耍K8S请先自行准备环境Win10用户可以参考我的上篇文章ASP.NET Core 借助 K8S 玩转容器编排来准备环境。ConfigMap的创建很简单一句命令就可以直接将 appsettings.json文件转换为ConfigMap。PS:使用K8S一定要善用帮助命令比如执行 kubectl create configmap-h你就可以了解到多种创建ConfigMap的方式。gt; kubectl create configmap -h Create a configmap based on a file, directory, or specified literal value. A single configmap may package one or more key/value pairs. When creating a configmap based on a file, the key will default to the basename of the file, and the value will default to the file content. If the basename is an invalid key, you may specify an alternate key. When creating a configmap based on a directory, each file whose basename is a valid key in the directory will be packaged into the configmap. Any directory entries except regular files are ignored (e.g. subdirectories, symlinks, devices, pipes, etc). Aliases: configmap, cm Examples: # Create a new configmap named my-config based on folder bar kubectl create configmap my-config --from-filepath/to/bar # Create a new configmap named my-config with specified keys instead of file basenames on disk kubectl create configmap my-config --from-filekey1/path/to/bar/file1.txt --from-filekey2/path/to/bar/file2.txt # Create a new configmap named my-config with key1config1 and key2config2 kubectl create configmap my-config --from-literalkey1config1 --from-literalkey2config2 # Create a new configmap named my-config from the keyvalue pairs in the file kubectl create configmap my-config --from-filepath/to/bar # Create a new configmap named my-config from an env file kubectl create configmap my-config --from-env-filepath/to/bar.env其中我们可以看到可以通过指定 --from-file来从指定文件创建。kubectl create configmap my-config --from-filekey1/path/to/bar/file1.txt --from-filekey2/path/to/bar/file2.txtLets have a try!1. 先行创建示例项目dotnetnewmvc-n K8S.NETCore.ConfigMap2. 默认包含两个配置文件 appsettings.json和 appsettings.Development.json3. 先来尝试将 appsettings.json转换为ConfigMapgt; cd K8S.NETCore.ConfigMap # 创建一个namespace此步可选 gt; kubectl create namespace demo namespace demo created # -n变量指定configmap创建到哪个namespace下 gt; kubectl create configmap appsettings --from-fileappsettings.json./appsettings.json -n demo configmap appsettings created # 查看刚刚创建的configmap-o指定输出的格式 gt; kubectl get configmap appsettings -n demo -o yaml apiVersion: v1 data: appsettings.json: {\r\n \Logging\: {\r\n \LogLevel\: {\r\n \Default\: \Warning\\r\n }\r\n },\r\n \AllowedHosts\: \*\\r\n}\r\n kind: ConfigMap metadata: creationTimestamp: null name: appsettings namespace: demo从上面的输出结果来看其中包含了 \r\n换行符显然不是我们想要的结果。猜测是因为Windows和Linux系统换行符的差异导致的。先来插播下换行符的知识CRCarriage Return对应ASCII中转义字符\r表示回车 LFLinefeed对应ASCII中转义字符\n表示换行 CRLFCarriage Return Linefeed\r\n表示回车并换行 众所周知Windows操作系统采用两个字符来进行换行即CRLFUnix/Linux/Mac OS X操作系统采用单个字符LF来进行换行所以解决方式就很简单将换行符切换为Linux系统的 \n即可。操作方式很简单对于VS Code 只需要按图下所示操作即可点击右下角的 CRLF选择 LF即可。对于VS如果VS打开json文件有下面的提示直接切换就好。没有可以安装Line Endings Unifier)扩展来统一处理。# 先删除之前创建的configmap gt; kubectl delete configmap appsettings -n demo gt; kubectl create configmap appsettings --from-fileappsettings.json./appsettings.json -n demo configmap appsettings created gt; kubectl get configmap appsettings -n demo -o yaml apiVersion: v1 data: appsettings.json: | { Logging: { LogLevel: { Default: Warning } }, AllowedHosts: * } kind: ConfigMap metadata: creationTimestamp: null name: appsettings namespace: demo现在ConfigMap的格式正常了。下面我们尝试把 appsettings.Development.json也合并到一个ConfigMap中。gt; kubectl delete configmap appsettings -n demo gt; kubectl create configmap appsettings --from-fileappsettings.json./appsettings.json --from-fileappsettings.Development.json./appsettings.Development.json -n demo configmap appsettings created gt; kubectl get configmap appsettings -n demo -o yaml apiVersion: v1 data: appsettings.Development.json: | { Logging: { LogLevel: { Default: Debug, System: Information, Microsoft: Information } } } appsettings.json: | { Logging: { LogLevel: { Default: Warning } }, AllowedHosts: * } kind: ConfigMap metadata: creationTimestamp: null name: appsettings namespace: demoPS:如果你的配置文件包含多余的空格则生成的ConfigMap可能就会包含 \n字符就像这样: appsettings.Development.json:{\n \Logging\: {\n \LogLevel\: {\n \Default\: \Debug\,\n \System\: \Information\,\n \Microsoft\: \Information\\n \ }\n }\n} \n。解决办法就是保存文件时记得格式化文件就好了或者手动删除多余空格。创建ConfigMap的时候可以指定 --dry-run参数进行试运行避免直接创建到服务器。从文件创建ConfigMap时可以不指定Key默认会以文件名为Key。kubectl create configmap appsettings--from-file./appsettings.json--from-file./appsettings.Development.json-n demo--dry-run-o yaml至此完成了appsetting到configmap的切换。应用 ConfigMapConfigMap的应用很简单只需要将configmap挂载到容器内的独立目录即可。先来看一下借助VS帮生成的Dockerfile。FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build WORKDIR /src COPY [K8S.NETCore.ConfigMap.csproj, ] RUN dotnet restore ./K8S.NETCore.ConfigMap.csproj COPY . . WORKDIR /src/. RUN dotnet build K8S.NETCore.ConfigMap.csproj -c Release -o /app FROM build AS publish RUN dotnet publish K8S.NETCore.ConfigMap.csproj -c Release -o /app FROM base AS final WORKDIR /app COPY --frompublish /app . ENTRYPOINT [dotnet, K8S.NETCore.ConfigMap.dll]可以看出文件中定义的 WORKDIR/app指定的工作目录为 /app所以需要把ConfigMap挂载到 /app目录下。先执行 docker build-t k8s.netcore.configmap:dev. 构建镜像。我们来新建一个 configmap-deploy.yaml文件配置如下apiVersion: extensions/v1beta1 kind: Deployment metadata: name: k8s-configmap-demo spec: selector: matchLabels: app: k8s-configmap-demo template: metadata: labels: app: k8s-configmap-demo spec: containers: - name: k8s-configmap-demo image: k8s.netcore.configmap:dev imagePullPolicy: IfNotPresent resources: limits: memory: 128Mi cpu: 500m ports: - containerPort: 80 volumeMounts: - mountPath: /app/appsettings.json name: test readOnly: true subPath: appsettings.json - mountPath: /app/appsettings.Development.json name: test readOnly: true subPath: appsettings.Development.json volumes: - configMap: defaultMode: 420 name: appsettings name: test这里有必要解释两个参数volumes-configMap指定引用哪个ConfigMapvolumeMounts用来指定将ConfigMap中的配置挂载到容器的哪个路径subPath用来指定引用ConfigMap的哪个配置节点。创建Deployment之前先修改下ConfigMap的配置以方便确认最终成功从ConfigMap挂载配置。将 Logging:LogLevel:Default:节点的默认值改为Error。gt; kubectl edit configmap appsettings -n demo configmap/appsettings edited gt; kubectl get cm appsettings -n demo -o yaml apiVersion: v1 data: appsettings.Development.json: |- { Logging: { LogLevel: { Default: Error, System: Information, Microsoft: Information } } } appsettings.json: | { Logging: { LogLevel: { Default: Error } }, AllowedHosts: * } kind: ConfigMap metadata: creationTimestamp: 2019-09-02T22:50:14Z name: appsettings namespace: demo resourceVersion: 445219 selfLink: /api/v1/namespaces/demo/configmaps/appsettings uid: 07048d5a-cdd4-11e9-ad6d-00155d3a3103修改完毕后执行后续命令来创建Deployment并验证。# 创建deployment gt; kubectl apply -f .\k8s-deploy.yaml -n demo deployment.extensions/k8s-configmap-demo created # 获取创建的pod gt; kubectl get pods -n demo NAME READY STATUS RESTARTS AGE k8s-configmap-demo-7cfbdfff67-xdrcx 1/1 Running 0 12s # 进入pod内部 gt; kubectl exec -it k8s-configmap-demo-7cfbdfff67-xdrcx /bin/bash -n demo rootk8s-configmap-demo-7cfbdfff67-xdrcx:/app# cat appsettings.json { Logging: { LogLevel: { Default: Error } }, AllowedHosts: * } rootk8s-configmap-demo-7cfbdfff67-xdrcx:/app# cat appsettings.Development.json { Logging: { LogLevel: { Default: Error, System: Information, Microsoft: Information } } }从以上输出可以看出默认的配置项已被ConfigMap的配置覆盖。热更新以Volume方式挂载的ConfigMap支持热更新大概需要10s左右。但一种情况例外就是指定subPath的情况下更新ConfigMap容器中挂载的ConfigMap是不会自动更新的。 A container using a ConfigMap as a subPath volume will not receive ConfigMap updates.对于这种情况也很好处理将ConfigMap挂载到 /app目录下一个单独目录就好比如挂载到 /app/config目录然后修改配置文件的加载路径即可。hostBuilder.ConfigureAppConfiguration((context, builder) gt; { builder.SetBasePath(Path.Join(AppContext.BaseDirectory, config)) .AddJsonFile(appsettings.json) .AddJsonFile($appsettings.{context.HostingEnvironment.EnvironmentName}.json, true, true); });最后本文就.NET Core如何应用ConfigMap进行了详细的介绍。其中最关键在于appsettings.json到ConfigMap的转换以及挂载目录的指定。希望对你有所帮助。而至于Secret的应用原理相通了关键在于Secret的生成这里就交给你自己探索了。
http://www.zqtcl.cn/news/382343/

相关文章:

  • 西安市高陵区建设局网站如何重新安装电脑上的wordpress
  • 合肥网站快速优化排名全球人口多少亿
  • 中山网站关键字优化使用动易模版制作网站
  • 深圳营销网站建设报价广西住房建设厅网站
  • 爱站网appwordpress图片500
  • 北京网站排名制作图片点击就能跳转网站怎么做的
  • dw网站建设的数据库网站建设托管pfthost
  • 牛商网做网站成品网站1688入口
  • 涿鹿县建设局网站网络营销的定义和特点
  • 网站建设朋友圈怎么写深圳宝安区松岗
  • 苏州网站的建设哪个网站上做自媒体最好
  • 传送门网站是怎么做的wordpress seo标题
  • 曲靖 曲靖网站建设软件(app)开发视频一页网站怎么做
  • 互联网公司网站建设ppt模板下载wordpress 图片2m
  • 箱包官方网站模板平台开发软件
  • 佛山网站改版动漫视频制作软件
  • 易企互联网站建设创办公司需要多少资金
  • wordpress主题页脚添加联系信息百度seo优化排名软件
  • 深圳微信商城网站设计价格广东省自然资源厅事务中心
  • 云服务器做网站视屏工程建设最好的网站
  • 宁夏建设工程质量安全监督网站电商网站需求分析
  • wordpress函数教程十堰seo优化哪家公司好
  • 直播app开发哪家好东莞整站优化火速公司
  • 平江高端网站建设wordpress如何添加广告
  • 网站建设得多钱搜索引擎推广网站
  • 建立网站的流程多少钱网站建设不用备案的
  • 广州城市建设档案网站扬州工程建设招标网
  • 邦策网站建设dedecms医院网站wap模板(橙色)4512345
  • 阿里云空间可以做网站吗专业的传媒行业网站开发
  • 网站制作新报价橄榄树网站建设