【问题标题】:How do I publish .NET Core to Digital Ocean Kubernetes如何将 .NET Core 发布到 Digital Ocean Kubernetes
【发布时间】:2019-08-04 11:46:08
【问题描述】:

我正在尝试发布 .NET Core Web 应用和 .NET Core API。

我一直在谷歌上搜索,找不到将 1 个更不用说 2 个 .NET Core 应用程序部署到 Digital Ocean Kubernetes 集群的方法,我有 2 个节点,并创建了一个有效的清单并在本地构建了一个 Docker 映像,看起来通过验证。但我实际上无法部署它。我是 Kubernetes 新手,我发现的任何东西似乎都与 Google 的 Kubernetes 或 Azure Kubernetes 有关。

很遗憾,我没有比这更多的信息。

【问题讨论】:

    标签: kubernetes .net-core digital-ocean


    【解决方案1】:

    我有一个。奇怪的是 DO 实际上很聪明,没有文档 因为它不必。您可以回收 Google 和 Azure 的 K8 在 DO 集群上工作的文档。关键区别只是 在我想的命名中,可能会有更多的区别,但是 到目前为止,我在应用指令时没有遇到任何问题 GCP 的文档。

    https://nozomi.one 在 DO 的 k8 集群上运行。

    这是一个很棒的dotnetcore-digitalocean-k8。

    您可能/将会面临的错误:

    在此处推送秘密文件(建议仅用于暂存或以下,除非您有超级秘密的方式来部署它):

    kubectl create secret generic secret-appsettings --from-file=./appsettings.secrets.json
    

    然后创建一个类似这样的部署配置。请注意,我们在最后几行添加了 appsettings:

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: xxxxx
    spec:
      replicas: 3
      template:
        metadata:
          labels:
            app: xxxxx
        spec:
          containers:
          - name: xxxxx
            image: xxxxx/xxxxxx:latest
            ports:
            - containerPort: 80
            env:
            - name: "ASPNETCORE_ENVIRONMENT"
              value: "Production"
            volumeMounts:
            - name: secrets
              mountPath: /app/secrets
              readOnly: true
          volumes:
          - name: secrets
            secret:
              secretName: secret-appsettings
    

    部署这个脚本很简单:

    kubectl create -f deployment.yaml
    

    如果你想先在 docker 本地测试:

    docker run --rm -p 8080:8080 gcr.io/${PROJECT_ID}/test-app:v1
    

    总而言之,以上所有内容都将帮助您部署 pod。

    您需要了解以这种系统方式部署新项目/应用程序:

    1. 创建部署,即为您拉取映像并创建将部署到节点的 pod。
    2. 创建一个服务,它将正确的端口和更多(从未尝试过做更多的事情)指向您的应用程序。

    这是服务的样子:

    apiVersion: v1
    kind: Service
    metadata:
      name: nozweb
    spec:
      type: LoadBalancer
      ports:
      - name: http
        port: 80
        protocol: TCP
        targetPort: 80
      - name: https
        port: 443
        protocol: TCP
        targetPort: 80
      selector:
        app: nozweb
    

    始终确保 spec:selector:app 明确如下:

    spec:
      replicas: 3
      template:
        metadata:
          labels:
            app: xxxxx
    

    在您的部署配置中。这就是它们的符号链接方式。

    1. 创建一个入口(可选),这将有助于充当您的 .NET Core 应用/项目的反向代理。 这是可选的,因为我们让 kestrel 运行了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 2019-05-22
      • 2021-10-07
      • 2016-07-31
      • 2022-12-22
      相关资源
      最近更新 更多