/
+ > * **protocol**: 为容器内应用所接受的传输协议,可选值为 http / https;
+ > * **namespace**:被代理对象所在的名称空间;
+ > * **service-name**:被代理 Service 的名称;
+ > * **port**:目标端口
+
+
+
+ 截图如下所示:
+
+ 
+
+
+
+## 配置 Kuboard Proxy
+
+* 完成 Grafana 的部署以后,进入到 `monitor-grafana` 的工作负载查看界面;
+
+* 在工作负载查看页面点击 ***访问方式 Service*** 区域中的 ***代理*** 按钮;
+
+* 点击 ***代理配置信息*** 后的 ***修改*** 按钮,修改 Kuboard Proxy 的代理配置;
+
+ 填写表格:
+
+ | 字段名称 | 填写内容 | 填写说明 |
+ | ------------------- | ---------------- | ------------------------------------------------------------ |
+ | 用户名添加到 Header | X-WEBAUTH-USER | Grafana Auth Proxy 从请求头中的 X-WEBAUTH-USER获取到当前登录用户的信息;填写此字段后,Kuboard Proxy 会始终将当前登录 Kuboard 的用户名写入到发现后端服务的 HTTP 请求头中,因此,可实现从 Kuboard 到 Grafana 的单点登录 |
+ | 组名添加到 Header | X-WEBAUTH-GROUPS | 同上,但是用于从 KuboardProxy 向 Grafana 传递用户所属分组的信息。
Grafana 只在企业版中处理此字段,请参考 [Team Sync](https://grafana.com/docs/grafana/latest/auth/auth-proxy/#team-sync-enterprise-only) |
+ | Cookie TTL | 空白 | 默认使用环境变量 KUBOARD_PROXY_COOKIE_TTL 的取值,或者 36000 |
+ | 禁用 Rebase | 禁用 | Grafana 系统中配置了环境变量 `GF_SERVER_ROOT_URL` ,并且 Grafana 可以正确处理 web 上下文因此,无需在 Kuboard Proxy 中做 [Rebase](./rebase.html) |
+
+ > 由于 Grafana 只在企业版中处理 X-WEBAUTH-GROUPS 字段,如果您使用的是 Grafana 社区版,请自行在登录后的 Grafana 中配置 Teams 信息。
+
+ 截图如下所示:
+
+ 
+
+* 填写完成后,点击 ***确定*** 按钮,保存表单。
+
+ > KuboardProxy 的配置信息存储在 Service 的注解 annotation 中。
+
+## 访问 Grafana
+
+* 完成 Grafana 的部署以后,进入到 `monitor-grafana` 的工作负载查看界面;
+
+* 在工作负载查看页面点击 ***访问方式 Service*** 区域中的 ***代理*** 按钮;
+
+* 点击 ***在浏览器窗口中打开*** 按钮,即可在新窗口中打开 Grafana 界面。
+
+ 如果您使用 kuboard-user 登录,则您在 Grafana 中是系统管理员的角色,可以对 Grafana 做任何配置,截图如下所示:
+
+ 
+
+## 直接导入
+
+本文所创建的 Grafana 部署可以直接导入:
+* 请在此处下载 kuboard_grafana_proxy_demo.yaml ;
+* 请参考 [导入 example 微服务](/guide/example/import.html) 了解如何在 Kuboard 中导入配置。
diff --git a/learning/k8s-advanced/proxy/authorization.assets/image-20200308111421525.png b/learning/k8s-advanced/proxy/authorization.assets/image-20200308111421525.png
new file mode 100644
index 0000000..19be2b7
Binary files /dev/null and b/learning/k8s-advanced/proxy/authorization.assets/image-20200308111421525.png differ
diff --git a/learning/k8s-advanced/proxy/authorization.md b/learning/k8s-advanced/proxy/authorization.md
new file mode 100644
index 0000000..7d8683f
--- /dev/null
+++ b/learning/k8s-advanced/proxy/authorization.md
@@ -0,0 +1,25 @@
+---
+vssueId: 184
+# lessAds: true
+description: Kubernetes教程:本文介绍了如何授权用户访问 Kuboard Proxy。
+meta:
+ - name: keywords
+ content: Kubernetes教程,K8S,kubectl proxy
+---
+
+# Kuboard Proxy - 授权
+
+
+
+如果要授权用户使用 Kuboard Proxy,请为其分配如下权限:
+
+| apiGroups | resources | resourceNames | verbs |
+| --------- | ------------------------------ | ------------- | ------ |
+| v1 | services/proxy
pods/proxy | | create |
+| v1 | services
pods | | get |
+
+截图如下所示:
+
+
+
+请参考 [使用Kuboard管理ServiceAccount及RBAC](/learning/k8s-advanced/sec/kuboard.html) 了解更多关于如何在 Kuboard 中完成授权操作的信息。
diff --git a/learning/k8s-advanced/proxy/index.assets/nginx-service-access.png b/learning/k8s-advanced/proxy/index.assets/nginx-service-access.png
new file mode 100644
index 0000000..cdf2869
Binary files /dev/null and b/learning/k8s-advanced/proxy/index.assets/nginx-service-access.png differ
diff --git a/learning/k8s-advanced/proxy/index.assets/nginx-service-config.png b/learning/k8s-advanced/proxy/index.assets/nginx-service-config.png
new file mode 100644
index 0000000..1ed086c
Binary files /dev/null and b/learning/k8s-advanced/proxy/index.assets/nginx-service-config.png differ
diff --git a/learning/k8s-advanced/proxy/index.assets/nginx-service-curl.png b/learning/k8s-advanced/proxy/index.assets/nginx-service-curl.png
new file mode 100644
index 0000000..3f0e169
Binary files /dev/null and b/learning/k8s-advanced/proxy/index.assets/nginx-service-curl.png differ
diff --git a/learning/k8s-advanced/proxy/index.assets/nginx-service-discovery.png b/learning/k8s-advanced/proxy/index.assets/nginx-service-discovery.png
new file mode 100644
index 0000000..d039572
Binary files /dev/null and b/learning/k8s-advanced/proxy/index.assets/nginx-service-discovery.png differ
diff --git a/learning/k8s-advanced/proxy/index.assets/nginx-service.png b/learning/k8s-advanced/proxy/index.assets/nginx-service.png
new file mode 100644
index 0000000..0b6c9c6
Binary files /dev/null and b/learning/k8s-advanced/proxy/index.assets/nginx-service.png differ
diff --git a/learning/k8s-advanced/proxy/index.md b/learning/k8s-advanced/proxy/index.md
new file mode 100644
index 0000000..1b4fe9c
--- /dev/null
+++ b/learning/k8s-advanced/proxy/index.md
@@ -0,0 +1,115 @@
+---
+vssueId: 184
+# lessAds: true
+sharingTitle: 快速调试 Kubernetes 上部署的应用程序
+description: Kubernetes教程:本文介绍了如何 Kuboard Proxy 的特点和使用方法
+meta:
+ - name: keywords
+ content: Kubernetes教程, kubectl proxy,
+---
+
+# Kuboard Proxy
+
+
+
+借助 Kuboard Proxy,登录 Kuboard 的用户可以直接访问 Service/Pod,而无需为 Service 做额外的 NodePort、Ingress 等配置。Kuboard Proxy 是 `kubectl proxy` 命令一种替代选项。
+
+与 `kubectl proxy` 相比:
+* 用户可以直接在 Kuboard 界面进行操作,而无需使用命令行;
+* 用户权限控制;
+* 支持更加细致的 rebase 控制;
+* 可以对接支持 Auth-Proxy 认证方式的后端服务,实现单点登录,例如 [Grafana](https://grafana.com/docs/grafana/v6.5/auth/auth-proxy/)。
+
+本文后面的章节将描述 Kuboard Proxy 的基本使用方法。并有另外三篇文档对 Kuboard Proxy 做进一步的阐述:
+* [授权用户访问 Kuboard Proxy](./authorization.html)
+* [为什么我的网页通过 Kuboard Proxy 代理后显示不正常 - Rebase - (少数情况)](./rebase.html)
+* [通过 Auth-Proxy 实现 Grafana 与 Kuboard 的单点登录](./auth-proxy.html)
+
+## 使用 Kuboard Proxy 访问 Service
+
+按照如下步骤,可以非常方便地使用 Kuboard Proxy:
+
+* 进入工作负载查看页面,此处以 [Kubernetes 入门 -- 公布应用程序](/learning/k8s-basics/expose.html) 中创建的 nginx 作为例子,如下图所示:
+
+ 
+
+* 点击上图中 ***红色箭头指向的按钮***,将打开如下代理发现界面:
+
+ 界面中显示了三个区域:
+
+ * KuboardProxy 代理配置信息,点击 ***编辑*** 按钮后可以 [修改KuboardProxy配置](#修改KuboardProxy代理配置);
+ * KuboardProxy 代理发现信息;
+ * 访问代理目标(显示了代理的进一步操作区):
+ * 选择代理协议,此处支持 `http`、 `https` 两种选择,该协议要访问的容器内端口所支持的协议;
+ * 选择访问方法,可以直接在浏览器中打开网页,也可以通过 crul/postman 等测试工具调用容器内的 restful 接口。
+
+ 
+
+* 通过代理访问目标 Service
+
+ * 点击 ***在浏览器窗口中打开*** 按钮,将直接打开一个新窗口,并显示目标页面,如下所示:
+
+ 
+
+ * 点击 ***使用 curl/postman 访问目标代理***,将显示如下对话框:
+
+ 复制对话框中的代码,并在命令行终端执行,可以获得代理目标服务返回的响应。
+
+ > 这种做法在进行 API 测试时非常方便。
+
+ 
+
+## 修改KuboardProxy代理配置
+
+KuboardProxy代理的设置有:
+
+* 环境变量
+ * 全局生效;
+* 代理设置
+ * 只针对 Service/Pod 的单个端口代理生效;
+
+### 环境变量
+
+与 KuboardProxy 相关的环境变量有如下两个:
+
+| 名称 | 变量类型 | 默认值 | 描述 |
+| ------------------------ | -------- | ------ | ------------------------------------------------------------ |
+| KUBOARD_AUTH_ENCRYPT_KEY | String | 随机 | 如果不配置,每次重启 Kuboard 时,随机生成;如果配置,该字段必须为一个长度为32的字符串,可以由字母和数字组成;Kuboard 使用 [AES-256算法](https://www.zhihu.com/question/34563299/answer/59176478) 生成加密 Cookie,客户端使用此 Cookie,可以通过 KuboardProxy 认证,并实现代理访问;当您的 Kuboard 副本数大于 1 时,请务必配置此参数,否则不同 Kuboard 副本的 ENCRYPT_KEY 不同时,Kuboard Proxy 将不能正常工作; |
+| KUBOARD_PROXY_COOKIE_TTL | Long | 36000 | 单位秒,默认值为36000(即10小时);访问代理时,所用 cookie 的有效时长;如果 Service/Pod 上没有特殊配置,则使用此处的设置。 |
+
+
+
+### 代理配置
+
+在 KuboardProxy 对话框上,点击 ***修改*** 按钮,可以修改针对该端口的 KuboardProxy 设置参数,如下图所示:
+
+
+
+可以配置的参数有:
+
+| 名称 | 类型 | 默认值 | 描述 |
+| --------------------- | ------- | --------------------------------------------- | ---------------------------------------- |
+| 用户名添加到 Header | String | X-WEBAUTH-USER | [Auth-Proxy](./auth-proxy.html) 重要参数 |
+| 组名添加到 Header | String | X-WEBAUTH-GROUP | [Auth-Proxy](./auth-proxy.html) 重要参数 |
+| Cookie TTL / 单位:秒 | Long | 环境变量KUBOARD_PROXY_COOKIE_TTL
或36000 | Cookie 的有效时长 |
+| 禁用 Rebase | Boolean | false | 禁用 [Rebase](./rebase.html) |
+
+
+
+## 使用 Kubectl Proxy
+
+使用 `kubectl proxy` 之前,请确保您已经 [在客户端配置 kubectl](/install/config-kubectl.html)。如果已经配置,可按照如下步骤使用 `kubectl proxy`。
+
+* 执行命令以启动 `kubectl proxy` 程序
+
+ ``` sh
+ kubectl proxy
+ ```
+
+* 通过代理访问您的服务/Pod:
+
+ * 以上述 `example` 名称空间的 Service `web-example` 为例,如需要使用 http 协议访问该 Service 的 80 端口,实现上面使用 Kuboard Proxy 的例子中一样的访问效果,请在浏览器打开如下链接:
+
+ ```
+ http://localhost:8001/api/v1/namespaces/example/services/http:web-example:80/proxy/
+ ```
diff --git a/learning/k8s-advanced/proxy/rebase.md b/learning/k8s-advanced/proxy/rebase.md
new file mode 100644
index 0000000..451df26
--- /dev/null
+++ b/learning/k8s-advanced/proxy/rebase.md
@@ -0,0 +1,112 @@
+---
+vssueId: 184
+# lessAds: true
+description: Kubernetes教程:本文介绍了 Kuboard Proxy 的 Rebase 功能。
+meta:
+ - name: keywords
+ content: Kubernetes教程,K8S,kubectl proxy
+---
+
+# Kuboard Proxy - Rebase
+
+
+
+## 为什么要 Rebase
+
+Rebase 是在使用反向代理的情况下,解决前端页面加载所依赖资源时如何计算资源路径的问题。
+
+要完整显示一个前端页面,浏览器除了从服务器加载该页面本身的 html 文件之外,还需要加载一系列该文件引用的资源文件,甚至被引用资源文件引用的其他的资源文件。在使用代理的情况下,正常加载页面本身的 html 文件(即入口文件)通常不会出现问题,但是,被引用的资源文件则不一定能正确加载到。因为,代理服务器很有可能会改变页面所在的上下文。
+
+以 [导入 example](/guide/example/import.html) 中导入的 Eureka 服务为例,直接通过域名的方式访问该服务的 URL 为:
+
+
+ http://cloud-eureka.example.demo.eip.work/
+
+
+ 您所使用的 URL 可能与这个不一样
+
+
+
+访问该 URL 后,所得的 html 代码如下所示:
+> 为了节省篇幅,下面只截取了一些代码片段。
+
+``` html {3,6,11,14}
+
+
+
+
+ Eureka
+
+
+
+...
+
+ Last 1000 since startup
+
+...
+
+...
+
+