OKD 部署.netcore项目 电脑版发表于:2021/8/3 17:25  >#OKD 部署.netcore项目 [TOC] 创建.netcore测试项目(Webapp) ------------ ```bash dotnet --version dotnet new webApp -o myWebApp --no-https dotnet run cd myWebApp dotnet run ```   tn2>Ctrl+c停止运行后,发布该项目 ```bash # 发布时项目框架版本(-f)可查看:https://docs.microsoft.com/zh-cn/dotnet/standard/frameworks dotnet publish myWebApp -f netcoreapp3.1 -c Release ```  在OKD中创建项目 ------------ tn2>使用aidasi用户创建mywebapp项目空间。 ```bash oc login -u aidasi -p aidasi oc new-project mywebapp # 查看当前命名空间 oc whoami --show-context ```  添加镜像流 ------------ tn2>先添加dotnet 镜像流。在下列链接中找到okd部署的系统所对应的dotnet的镜像流: https://github1s.com/redhat-developer/s2i-dotnetcore/blob/master/dotnet_imagestreams_centos.json 下载下来后进行安装 这里我们就添加到当前项目(mynetcore)中,所以我图中多了一个openshift是错的,请按下面命令执行 ```bash # 安装 oc create -f dotnet_imagestreams_centos.json # 查看dotnet 版本 oc get is dotnet --template='{{range .spec.tags}}{{.name}}{{"\n"}}{{end}}' ```  tn2>我们看到有关很多.net的环境镜像流。 接着我们需要将其镜像上传到我们私有镜像库中。 搭建私有库请参考:https://www.tnblog.net/hb/article/details/6291    tn2>我们在harbor界面上看看有没有这个mynetcore项目,没有是需要进行创建项目的。  tn2>这里我们只需要dotnet3.1的镜像即可。可以安装上图底部进行安装。 ```bash docker pull registry.centos.org/dotnet/dotnet-31-centos7:latest docker tag registry.centos.org/dotnet/dotnet-31-centos7:latest 10.211.55.8:8060/mynetcore/dotnet:3.1 docker push 10.211.55.8:8060/mynetcore/dotnet:3.1 ``` tn>在构建的过程中,我们可能需要build的服务去进行构建。所以我们需要为build服务添加我们的docker登录 ```bash # 复制该文件到当前目录下 cp ~/.docker/config.json k8s-docker.json # 添加到全局secret oc create secret generic harborkey --from-file=.dockerconfigjson=./k8s-docker.json --type=kubernetes.io/dockerconfigjson # 为builder账户添加拉取与上传的登陆secret oc secrets link builder harborkey --for=pull,mount ``` tn2>最后来看看界面上,builder是不是首先使用harborkey为顺序    tn2>这里secrets必须以harborkey为第一位哦,因为其他secret有harbor登录的账号与密码的话,那可能就使用前者而不使用我们现在创建的。  构建、部署与访问 ------------ tn2>创建一个构建配置。我们将使用包含.net5 SDK和运行时的dotnet3.1镜像。实用二进制内容构建应用程序 ```bash ./oc new-build --name=my-web-app dotnet:3.1 --binary=true ```  tn2>指定刚刚发布的mywebtest项目目录路径进行构建。 ```bash ./oc start-build my-web-app --from-dir=/Users/hebo/myfile/cshrp/test/myWebApp/bin/Release/netcoreapp3 .1/publish ``` tn2>我们可以打开另外一个窗口,查看构建过程与构建日志 ```bash # 获取所有构建 oc get bc -n mywebapp # 获取构建日志 oc logs -f bc/my-web-app -n mywebapp ```  tn2>我们可以看到已经构建成功了  tn2>这是一些日志信息  tn2>接着查看我们`my-web-app`的镜像流。 ```bash oc get is -n mynetcore ```  tn2>部署创建应用 ```bash oc new-app --docker-image=10.211.55.8:8060/mynetcore/my-web-app --name=my-web-app ```   tn2>接着创建路由方便我们访问 ```bash oc expose svc/my-web-app # 查看路由 oc get route ```   tn2>点开我们右下角链接,很尴尬  tn2>我们通过代理进行访问 ```bash # 在本地运行 kubectl proxy --address='0.0.0.0' --accept-hosts='^*$' --port=8009 ``` tn2>访问地址:http://127.0.0.1:8009/api/v1/namespaces/mynetcore/services/my-web-app:8080/proxy/ 关于kubectl proxy请参考:https://www.tnblog.net/hb/article/details/4681 