设为首页 加入收藏

TOP

部署Chart应用并使用.net core读取Kubernetes中的configMap(一)
2019-09-17 18:02:02 】 浏览:46
Tags:部署 Chart 应用 使用 .net core 读取 Kubernetes configMap

上一篇文章讲了 k8s使用helm打包chart并上传到腾讯云TencentHub,今天就讲一下使用Helm部署应用并使用configMap代替asp.net core 中的appsettings.json文件。

把Chart上传到TencentHub之后,我们就可以通过腾讯云的容器服务,直接部署Helm应用了。

部署Helm应用

点击新建然后选择TencentHub,私有仓库,就可以看到自己上传的Chart了。填写一下应用名称,拉到最下方点击完成即可创建应用。

 注意:如果你的yaml文件写的不对,如少个空格,变量参数名称写错或者不存在,都无法创建成功。

 可以点击新建下方那个查看详情,可以看到Helm应用安装日志,安装失败会提示错误信息,自己跟据错误提示修复自己的错误。

成功安装后点击应用可以查看资源信息和状态

注意:Chart部署成功不代表你的服务已经成功启动了,如果你的服务本身是有问题起不来的话,这里不会有提示,需要自己去查看Pod是否已经正常启动成功。

好了,应用部署完成后,我们来试试如何读取configMap。

读取configMap

上篇文章没有把config.yaml文件的内容放出来,里面内容如下 

其中metadata中的name是必选项,namespace不写的话默认是default,labels用于条件过滤筛选。

data就是我们的配置内容,key-value的形式存在。

------------------------------------------------分割线-----------------------------------------------------

.net core调用k8s需要使用KubeClient,这里我使用 https://github.com/tintoy/dotnet-kube-client 来调用k8s的接口。

直接使用nuget搜索KubeClient即可找到。

KubeClient支持依赖注入。需要安装

KubeClient.Extensions.DependencyInjection
void ConfigureServices(IServiceCollection services)
{
    services.AddKubeClient(new KubeClientOptions
    {
        ApiEndPoint = new Uri("http://localhost:8001"),
        AuthStrategy = KubeAuthStrategy.BearerToken,
        AccessToken = "my-access-token",
        AllowInsecure = true // Don't validate server certificate
    });
}

最简单的创建一个KubeClient方法如下:

KubeApiClient client = KubeApiClient.Create(new KubeClientOptions
{
    ApiEndPoint = new Uri("http://localhost:8001"),
    AuthStrategy = KubeAuthStrategy.BearerToken,
    AccessToken = "my-access-token",
    AllowInsecure = true // Don't validate server certificate
});

这里我只是简单读取k8s中的configMap,至于用途下面再讲。

使用console控制台程序编写如下代码。

class Program
    {
        static async Task Main(string[] args)
        {
            KubeApiClient client = KubeApiClient.Create(new KubeClientOptions
            {
                ApiEndPoint = new Uri("https://xxxxxxx.tencent-cloud.com"),
                AuthStrategy = KubeAuthStrategy.BearerToken,
                AccessToken = "GzxxxxxxxxxxxxxT",
                AllowInsecure = true // Don't validate server certificate
            });
            var configClient = client.ConfigMapsV1();
            var configList = await configClient.List( labelSelector:"configMap=wechat", kubeNamespace: "dev" );
            Console.WriteLine(JsonConvert.SerializeObject(configList));
            Console.ReadKey();
        }
    }

使用KubeApiClient获取一个configClient,然后configClient.List()获取k8s中的所有configMap,labelSelector和kubeNamespace都是默认可空参数,用于过滤筛选configMap。

这里我们通过断点可以看到,已经读取到wechat中的configMap信息,AppMode:Devlopment 就是我们config.yaml中data中的内容。

 至此我们已经完成了.net core读取configMap的事情了。

asp.net core中加载configMap

使用nuget安装

KubeClient

KubeClient.Extensions.Configuration

在Startup.cs中的构造函数添加下面代码即可。

var configBuilder = new ConfigurationBuilder();
var
client = KubeApiClient.Create(new KubeClientOptions
 { ApiEndPoint = new Uri("https://xxxxxxx.tencent-cloud.com"), AuthStrategy = KubeAuthStrategy.BearerToken, AccessToken = "GzxxxxxxxxxxxxxT", AllowInsecure = true // Don't validate server certificate  });
) 
configuration.AddKubeConfigMap(client,
"extensions-sample", reloadOnChange: true);

Configuration = configBuilder.Build();

使用configMap的原因

现在asp.net core一般是使用appsettings.json文件来读取项目的配置信息,这样做

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Asp.NetCore轻松学-部署到 Linux .. 下一篇使用SignalR和SQLTableDependency..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目