bitnamicharts/aspnet-coreASP.NET Core 是由 Microsoft 开发的开源 Web 应用程序开发框架。它既可以在 Windows 上运行于完整的 .NET Framework,也可以跨平台运行于 .NET Core。Bitnami 提供的 ASP.NET Core 镜像经过精心设计和维护,可快速部署到 Kubernetes 集群,适用于生产环境工作负载。
ASP.NET Core 概述
商标说明:本软件列表由 Bitnami 打包。产品中提及的各个商标分别归各自公司所有,使用这些商标并不意味着任何关联或认可。
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/aspnet-core
使用发布名称 my-release 安装图表:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/aspnet-core
这些命令会使用默认配置在 Kubernetes 集群上部署 ASP.NET Core 应用。
提示:使用
helm list命令列出所有发布版本
构建包含 ASP.NET Core 应用的自定义 Docker 镜像,通过覆盖默认镜像参数和设置自定义命令来部署:
yamlappFromExternalRepo.enabled=false image.registry=docker.io image.repository=你的镜像仓库 image.tag=你的镜像标签 command=[命令] args=[参数]
使用 Helm 命令安装:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/aspnet-core \ --set appFromExternalRepo.enabled=false \ --set image.registry=docker.io \ --set image.repository=你的镜像仓库 \ --set image.tag=你的镜像标签 \ --set command=[命令] \ --set args=[参数]
此方法使用两个初始化容器:
clone-repository: 使用 Bitnami GIT 镜像下载代码仓库dotnet-publish: 使用 Bitnami .Net SDK 镜像构建/发布 ASP.NET Core 应用启用此功能需设置 appFromExternalRepo.enabled=true 并配置仓库参数:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/aspnet-core \ --set appFromExternalRepo.enabled=true \ --set appFromExternalRepo.clone.repository=[***] \ --set appFromExternalRepo.clone.revision=main \ --set appFromExternalRepo.publish.subFolder=应用子文件夹路径 \ --set appFromExternalRepo.startCommand[0]=dotnet \ --set appFromExternalRepo.startCommand[1]=应用入口.dll
示例:部署 OCMinimal 示例应用
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/aspnet-core \ --set appFromExternalRepo.enabled=true \ --set appFromExternalRepo.clone.repository=[***] \ --set appFromExternalRepo.clone.revision=main \ --set appFromExternalRepo.publish.subFolder=aspnetcore/performance/caching/output/samples/7.x/ \ --set appFromExternalRepo.startCommand[0]=dotnet \ --set appFromExternalRepo.startCommand[1]=OCMinimal.dll
如果已创建包含应用代码的 PVC,可通过以下命令挂载部署:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/aspnet-core \ --set appFromExistingPVC.enabled=true \ --set appFromExistingPVC.existingClaim=my-custom-apsnet-core-app
Bitnami 图表允许为部署中的所有容器设置资源请求和限制,通过 resources 参数配置。对于生产工作负载,设置请求至关重要,应根据具体用例进行调整。
图表包含 resourcesPreset 值,可根据不同预设自动设置 resources 部分,但生产环境中建议手动配置以适应特定需求。
在生产环境中强烈建议使用不可变标签,确保部署不会因标签更新而自动更改。Bitnami 会在主容器有新版本、重大更改或关键漏洞时发布新图表更新容器。
要在 Kubernetes 上备份和恢复 Helm 图表部署,需要使用 Velero 工具备份源部署的持久卷并将其附加到新部署。
可通过 extraEnvVars 属性添加额外环境变量:
yamlextraEnvVars: - name: LOG_LEVEL value: error
也可使用包含环境变量的 ConfigMap 或 Secret:
yamlextraEnvVarsCM: "configmap-name" # 包含环境变量的 ConfigMap 名称 extraEnvVarsSecret: "secret-name" # 包含环境变量的 Secret 名称
如需在 ASP.NET Core 应用所在的 Pod 中运行额外容器,可通过 sidecars 参数定义:
yamlsidecars: - name: 容器名称 image: 镜像地址 imagePullPolicy: Always ports: - name: 端口名称 containerPort: 1234
同样,可通过 initContainers 参数添加额外的初始化容器:
yamlinitContainers: - name: 容器名称 image: 镜像地址 imagePullPolicy: Always ports: - name: 端口名称 containerPort: 1234
如需部署额外对象(如包含应用配置的 ConfigMap),可使用 extraDeploy 参数:
yamlextraDeploy: |- - apiVersion: v1 kind: ConfigMap metadata: name: aspnet-core-configuration labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }} {{- if .Values.commonAnnotations }} annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 6 }} {{- end }} data: appsettings.json: |- { "AllowedHosts": "*" }
然后挂载到容器中:
yamlextraVolumeMounts: - name: configuration mountPath: /app/config/ readOnly: true extraVolumes: - name: configuration configMap: name: aspnet-core-configuration
可通过 affinity 参数设置自定义亲和性规则:
yamlaffinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - aspnet-core topologyKey: "kubernetes.io/hostname"
也可使用预设配置:
yamlpodAffinityPreset: "soft" # Pod 亲和性预设 podAntiAffinityPreset: "soft" # Pod 反亲和性预设 nodeAffinityPreset: # 节点亲和性预设 type: "soft" key: "kubernetes.io/os" values: ["linux"]
如需启用 Ingress 集成,请将 ingress.enabled 设置为 true:
yamlingress: enabled: true hostname: aspnet.example.com annotations: kubernetes.io/ingress.class: nginx cert-manager.io/cluster-issuer: letsencrypt-prod tls: true
可通过 ingress.extraHosts 添加多个主机:
yamlingress: enabled: true hostname: aspnet.example.com extraHosts: - name: aspnet-admin.example.com path: /admin extraTLS: - hosts: - aspnet-admin.example.com secretName: aspnet-admin-tls
| 参数名 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局 Docker 仓库密钥数组 | [] |
global.defaultStorageClass | 持久卷的全局默认存储类 | "" |
global.storageClass | 已弃用:使用 global.defaultStorageClass 替代 | "" |
global.security.allowInsecureImages | 允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 调整安全上下文以兼容 OpenShift | auto |
| 参数名 | 描述 | 默认值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
nameOverride | 部分覆盖 aspnet-core.fullname | "" |
fullnameOverride | 完全覆盖 aspnet-core.fullname | "" |
namespaceOverride | 覆盖命名空间 | "" |
commonLabels | 添加到所有部署对象的标签 | {} |
commonAnnotations | 添加到所有部署对象的注解 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 随发布一起部署的额外对象数组 | [] |
| 参数名 | 描述 | 默认值 |
|---|---|---|
image.registry | ASP.NET Core 镜像仓库 | REGISTRY_NAME |
image.repository | ASP.NET Core 镜像仓库路径 | REPOSITORY_NAME/aspnet-core |
image.digest | 镜像摘要,设置后将覆盖标签 | "" |
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
image.pullSecrets | 镜像拉取密钥 | [] |
image.debug | 启用镜像调试模式 | false |
command | 覆盖默认容器命令 | [] |
args | 覆盖默认容器参数 | [] |
bindURLs | 绑定的 URL | [***] |
extraEnvVars | 额外环境变量 | [] |
extraEnvVarsCM | 包含额外环境变量的 ConfigMap | "" |
extraEnvVarsSecret | 包含额外环境变量的 Secret | "" |
| 参数名 | 描述 | 默认值 |
|---|---|---|
replicaCount | 部署副本数 | 1 |
schedulerName | 调度器名称 | "" |
priorityClassName | Pod 优先级类名称 | "" |
topologySpreadConstraints | Pod 拓扑分布约束 | [] |
automountServiceAccountToken | 挂载服务账户令牌 | false |
hostAliases | Pod 主机别名 | [] |
extraVolumes | 额外卷 | [] |
extraVolumeMounts | 额外卷挂载 | [] |
sidecars | 边车容器 | [] |
initContainers | 初始化容器 | [] |
lifecycleHooks | 生命周期钩子 | {} |
podAnnotations | Pod 注解 | {} |
podLabels | Pod 标签 | {} |
updateStrategy.type | 部署策略类型 | RollingUpdate |
podAffinityPreset | Pod 亲和性预设 | "" |
podAntiAffinityPreset | Pod 反亲和性预设 | soft |
nodeAffinityPreset.type | 节点亲和性预设类型 | "" |
自 2025 年 8 月 28 日起,Bitnami 将改进其公共目录,在新的 Bitnami Secure Images 计划 下提供精选的强化安全聚焦镜像。作为此过渡的一部分:
这些变更旨在通过推广软件供应链完整性和最新部署的最佳实践,提高所有 Bitnami 用户的安全态势。更多详情,请访问 Bitnami Secure Images 公告。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务