`
m635674608
  • 浏览: 5004644 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

kubernetes如何使用https的webapi

 
阅读更多

1.证书

之前的文章里我们为了成功使用heapster而自建了证书:进入master机器的/var/run/kubernetes/目录,执行如下的几个命令:

openssl genrsa -out ca.key 2048

openssl req -x509 -new -nodes -key ca.key -subj "/CN=abc.com" -days 5000 -out ca.crt

openssl genrsa -out server.key 2048

openssl req -new -key server.key -subj "/CN=kubernetes" -out server.csr

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000

其中第一个subj里/CN可以随便写一个,而第二个subj中的/CN必须是apiserver所在机器的hostname(如果仅用于内部的service,这里可以填kubernetes),这里建议两个/CN不要相同,亲测相同的情况下证书是签名无效的。在该机器上执行:

echo $HOSTNAME

就知道要写什么了。

apiserver的启动参数中加入:

--admission_control=ServiceAccount(加入这个参数后,k8s会给每个namespace都设置至少一个secret,secret作为一个存储介质,可以存储证书,token,甚至配置文件)
--client_ca_file=/var/run/kubernetes/ca.crt(加入这个参数后,每个namespace的默认的secret中都会记录ca.crt)  
--tls-private-key-file=/var/run/kubernetes/server.key 
--tls-cert-file=/var/run/kubernetes/server.crt

controller-manager的启动参数中加入:

--service_account_private_key_file=/var/run/kubernetes/server.key
--root-ca-file="/var/run/kubernetes/ca.crt" 

我们要实现的目的是在任意一台机器上(ping得到master)可以执行apiserver的https API。这里我们必须:
1.将ca.crt复制到该机器上;
2.在该机器上添加一条master机器的hostname到其IP的hosts。
这种情况下,我们访问https的api:

curl --cacert ca.crt -X GET https://vm-56-65:6443/api/v1/namespaces/default/pods   -v

会提示:

unauthorized.

这说明我们还需要token。

2.token

token的形式有多种,可以参考这两篇:
http://wangzhezhe.github.io/b...
http://segmentfault.com/a/119...
这里就介绍最简单的一种。
进入master,在任意一个地方创建一个token文件如:

/etc/kubernetes.io/heapster/token

编辑这个token,我们只需简单写三个字符串:

huang123,huang,huang

重新启动apiserver,启动时加入这个参数:

--token_auth_file=/etc/kubernetes.io/heapster/token

在其他机子上,我们再次执行curl命令,并加上-H:

curl --cacert ca.crt -X GET https://vm-56-65:6443/api/v1/namespaces/default/pods  -H 'Authorization: Bearer huang123' -v

是不是成功了?

https://segmentfault.com/a/1190000003115642

分享到:
评论

相关推荐

    基于Kong和Kubernetes的WebApi多版本解决方案.docx

    【基于Kong和Kubernetes的WebApi多版本解决方案】 在现代软件开发中,尤其是在微服务架构中,确保API的版本管理至关重要。WebApi的多版本控制管理是解决客户端多样性问题的有效手段,它允许旧版应用与新版服务并存...

    NetCore集成WebApi.zip

    【标题】"NetCore集成WebApi.zip"是一个关于.NET Core平台下集成Web API开发的框架。这个框架旨在为开发者提供一个快速启动新项目的基础,它包含了一系列预配置的组件和最佳实践,使得在.NET Core中构建RESTful服务...

    使用Docker包含dotnet核心web Api,推送到Azure容器注册表,并在AKS中部署到Kubernetes集群

    使用Docker包含dotnet核心web Api,推送到Azure容器注册表,并在AKS中部署到Kubernetes集群

    dotnet-NetCore22微服务架构的WebApi框架绝影

    【标题】"dotnet-NetCore22微服务架构的WebApi框架绝影"涉及到的是.NET Core 2.2版本下的微服务开发技术,重点在于使用WebApi构建高可用、可扩展的服务体系。WebApi是ASP.NET框架的一部分,用于构建RESTful API,...

    WebAPIDemo.rar

    "WebAPIDemo"项目包含了一个简单的ASP.NET Core Web API示例,帮助初学者了解基本概念和实践。以下是这个项目可能包含的关键组件和步骤: 1. **项目结构**:项目通常包括`Startup.cs`文件,它是应用程序的入口点,...

    Kubernetes实战(套装共2册)PDF

    从Pod的基本使用到Replication Controllers和Deployments的管理,从Service的设置到Kubernetes API的使用,以及高级特性如持久化存储、资源配额、Service Account、Daemon Pod等,本书都做了详细的解释和示例。...

    Kubernetes:Kubernetes资源对象与声明式API.docx

    Kubernetes:Kubernetes资源对象与声明式API.docx

    Kubernetes 指南.pdf

    1. **Dashboard**: Kubernetes的Web UI,提供图形化管理界面。 2. **Metrics Server**: 提供集群和Pod级别的资源使用度量。 3. **Cluster Autoscaler**: 自动调整集群规模以适应工作负载需求。 4. **Ingress ...

    点net core 3.1 购物网站 WebAPI实现业务操作.zip

    这个购物网站的WebAPI实现主要关注于业务操作,它提供了RESTful API接口,允许客户端(如网页、移动应用)与服务器进行数据交互。本文将深入探讨在点net Core 3.1中构建购物网站WebAPI时涉及的关键知识点。 首先,...

    Learning_WebApi

    【标题】"Learning_WebApi" 是一个关于学习Web API开发的项目,旨在帮助开发者深入理解和掌握使用Web API进行服务端开发的技术与实践。Web API是构建基于HTTP协议的网络应用服务的重要工具,广泛应用于前后端分离的...

    ppt what is kubernetes

    - **声明式的期望状态模型**:Kubernetes 使用声明式配置来定义期望状态。 - **API 和执行**:API 服务器作为核心组件,负责处理所有 API 请求并协调其他组件的工作。 **3. 配置分发系统** - **配置分发**:...

    kubernetes-dashboard.zip

    Kubernetes Dashboard 是一个基于 Web 的图形用户界面(GUI),用于管理和监控 Kubernetes 集群。它提供了对集群资源的直观视图,包括节点、Pods、服务、部署、 ReplicaSets 和 DaemonSets,使得集群操作和故障排查...

    kubernetes-dashboard-amd64.tgz

    总结来说,"kubernetes-dashboard-amd64.tgz" 是一个用于管理Kubernetes集群的Web界面工具,它与Docker结合使用,简化了容器应用的部署和管理过程。通过理解并正确使用这个工具,开发者和运维人员可以更高效地操控...

    Kubernetes下API网关的微服务实践 长虹集团-李玮演讲PPT

    ### Kubernetes 下 API 网关的微服务实践 #### 一、引言 在现代软件开发领域,微服务架构已成为企业提升系统灵活性、扩展性和可维护性的关键手段。随着云计算的发展,Kubernetes 作为容器编排领域的领导者,为企业...

    kubernetes-server-linux-amd64.tar.gz

    9. **安装DNS和Dashboard**:Kubernetes DNS提供内部域名解析,Dashboard则提供了Web界面用于集群管理。 10. **安全配置**:确保所有组件都使用安全的配置,如启用TLS通信,限制API访问,以及使用RBAC(Role-Based ...

    kubebuilder:Kubebuilder-用于使用CRD构建Kubernetes API的SDK

    类似于Ruby on Rails和SpringBoot之类的Web开发框架,Kubebuilder可以提高速度并降低开发人员管理的复杂性,以便在Go中快速构建和发布Kubernetes API。 它基于用于构建核心Kubernetes API的规范技术的基础上,以...

    Springboot整合Spring Cloud Kubernetes读取ConfigMap支持自动刷新配置的教程

    引入`spring-boot-starter-web`是为了创建一个基本的Spring Boot Web应用,而`spring-cloud-starter-kubernetes-config`则提供了与Kubernetes配置集成的功能。在`pom.xml`文件中,添加以下依赖: ```xml ...

    kubernetes-dashboard

    Kubernetes Dashboard 是 Kubernetes 集群的一种图形化管理工具,为用户提供了一种直观的 Web 界面,用于管理和监控集群中的应用和服务。它允许管理员和开发人员通过简单的界面执行常见的集群管理任务,如创建、更新...

    人工智能-项目实践-C#-C#.NET 基于Yarp实现的API网关Gateway,支持Kubernetes、Consul

    - 使用命令行工具(如PowerShell或终端),运行`dotnet new webapi -n MyApi`创建一个新的.NET 6.0 WebAPI项目。 - 进入项目目录`cd MyApi`。 2. **安装Carp.Gateway**: - 在项目目录下,运行NuGet命令`dotnet ...

    kubernetes中文文档

    - 如何创建一个Kubernetes集群,这包括从本地环境开始的步骤,以及在不同云服务提供商上的部署,例如Google Container Engine(GKE)和Amazon Web Services(AWS EC2)。 - Kubernetes集群的概览,涉及集群的架构、...

Global site tag (gtag.js) - Google Analytics