前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >轻量级Nuget - BaGet k8s部署

轻量级Nuget - BaGet k8s部署

作者头像
张善友
发布2021-04-25 14:31:24
7850
发布2021-04-25 14:31:24
举报
文章被收录于专栏:张善友的专栏

1. 介绍

BaGet是一个轻量级的包管理服务。有些时候公司或者个人不希望某一些包进行公开,那么就需要使用私有的包管理服务程序,该服务是用.netcore进行编写的(感谢开发者为.NET社区做出的贡献)

Github:https://github.com/loic-sharma/BaGet 官网:https://loic-sharma.github.io/BaGet/

具体配置操作可参考官方文档, 为了能够从nuget 库中获取其他的包文件,需要配置使用官放镜像

{ ... "Mirror": { "Enabled": true, "PackageSource": "https://api.nuget.org/v3/index.json" }, ... }

2. Docker部署

在当前目录下执行创建配置文件baget.env

# The following config is the API Key used to publish packages. # You should change this to a secret value to secure your server. ApiKey=63edf12c-b70c-45c7-b3ed-f53c9f791e26 # 随机生成,上传包时候使用 Storage__Type=FileSystem Storage__Path=E:\nuget #windows下的写法 Database__Type=Sqlite Database__ConnectionString=Data Source=/var/baget/baget.db Search__Type=Database

Mirror__Enabled=true

在当前目录下执行

# linux docker run -d --name BaGet-nuget -p 9002:80 --env-file baget.env -v "$(pwd)/baget-data:/var/baget" loicsharma/baget:latest # windows docker run -d --name BaGet-nuget -p 9002:80 --env-file baget.env -v "F://nuget//baget-data:/var/baget" loicsharma/baget:latest

3. Kubernetes部署

apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: pv.kubernetes.io/bind-completed: "yes" pv.kubernetes.io/bound-by-controller: "yes" creationTimestamp: "2021-04-22T12:29:55Z" finalizers: - kubernetes.io/pvc-protection managedFields: - apiVersion: v1 manager: kube-controller-manager operation: Update time: "2021-04-22T12:29:55Z" - apiVersion: v1 manager: tke-apiserver operation: Update time: "2021-04-22T12:29:55Z" name: baget namespace: default resourceVersion: "16807551935" selfLink: /api/v1/namespaces/default/persistentvolumeclaims/baget uid: fbf18d16-d8e1-4c00-b1c6-fad9caff47c4 spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: cbs volumeMode: Filesystem volumeName: baget status: accessModes: - ReadWriteOnce capacity: storage: 90Gi phase: Bound

-----------------------------------------------------------------------------------

apiVersion: apps/v1 kind: StatefulSet metadata: creationTimestamp: "2021-04-22T13:49:37Z" generation: 2 labels: k8s-app: baget qcloud-app: baget managedFields: - apiVersion: apps/v1 manager: tke-apiserver operation: Update time: "2021-04-22T13:57:07Z" - apiVersion: apps/v1 manager: kube-controller-manager operation: Update time: "2021-04-22T13:57:27Z" name: baget namespace: default resourceVersion: "16809436783" selfLink: /apis/apps/v1/namespaces/default/statefulsets/baget uid: 97cf6cd7-3cfe-4a57-9e36-c997018c5971 spec: podManagementPolicy: OrderedReady replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: k8s-app: baget qcloud-app: baget serviceName: "" template: metadata: creationTimestamp: null labels: k8s-app: baget qcloud-app: baget spec: containers: - env: - name: PATH value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - name: ASPNETCORE_URLS value: http://+:80 - name: DOTNET_RUNNING_IN_CONTAINER value: "true" - name: ApiKey value: afe0f754-68b0-38a1-b7bf-44a34263465d - name: Storage__Type value: FileSystem - name: Storage__Path value: /var/baget/packages - name: Database__Type value: Sqlite - name: Database__ConnectionString value: Data Source=/var/baget/baget.db - name: Search__Type value: Database - name: AllowPackageOverwrites value: "true" image: ccr.ccs.tencentyun.com/weyhd/baget:0.3.1 imagePullPolicy: IfNotPresent name: baget resources: limits: cpu: 500m memory: 1Gi requests: cpu: 250m memory: 256Mi securityContext: privileged: false terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /var/baget name: bagetpackage dnsPolicy: ClusterFirst imagePullSecrets: - name: qcloudregistrykey restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: bagetpackage persistentVolumeClaim: claimName: baget updateStrategy: rollingUpdate: partition: 0 type: RollingUpdate status: collisionCount: 0 currentReplicas: 1 currentRevision: baget-6b9767d59b observedGeneration: 2 readyReplicas: 1 replicas: 1 updateRevision: baget-6b9767d59b updatedReplicas: 1

--------------------------------------------------------------------

apiVersion: v1 kind: Service metadata: creationTimestamp: "2021-04-22T13:49:37Z" managedFields: - apiVersion: v1 manager: tke-apiserver operation: Update time: "2021-04-22T13:49:37Z" name: baget namespace: default resourceVersion: "16809267660" selfLink: /api/v1/namespaces/default/services/baget uid: f7fcc0c9-afea-4b1d-8b89-3978ce7b69af spec: clusterIP: 172.20.252.235 externalTrafficPolicy: Cluster ports: - name: 80-80-tcp nodePort: 30020 port: 80 protocol: TCP targetPort: 80 selector: k8s-app: baget qcloud-app: baget sessionAffinity: None type: NodePort status: loadBalancer: {}

使用存储来保存nuget 包,数据库演示选用了sqlite, 生产环境可以选择其他的数据库比如mysql,pgsql,sqlserver。 通过StatefulSet 部署,nodeport方式公开访问

3. 简单使用

3.1 访问
image
image

界面和 https://www.nuget.org/ 很相似,推送方法也很简单,提供了4种方式进行推送:

image
image

轻量NuGet服务—BaGet:https://mp.weixin.qq.com/s/xF5K2U3OhF7I9moGMeOibw

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 介绍
  • 2. Docker部署
  • 3. 简单使用
    • 3.1 访问
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档