Skip to content

Commit

Permalink
fix: Fix incorrect code section display styles (#354)
Browse files Browse the repository at this point in the history
  • Loading branch information
CH3CHO authored Dec 27, 2024
1 parent b3bce4e commit 725dbe6
Show file tree
Hide file tree
Showing 16 changed files with 84 additions and 89 deletions.
35 changes: 15 additions & 20 deletions src/content/blog/configmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ HigressConfig 是 higress-config Configmap 所对应数据的结构体。
初始化过程入口在 NewIngressConfig, 初始化 IngressConfig 时同时构建 HigressConfigController 和 ConfigmapMgr。
```golang
```go
// pkg/ingress/config/ingress_config.go
func NewIngressConfig(localKubeClient kube.Client, XDSUpdater model.XDSUpdater, namespace, clusterId string) *IngressConfig {
// ...
Expand All @@ -89,7 +89,7 @@ func NewIngressConfig(localKubeClient kube.Client, XDSUpdater model.XDSUpdater,

通过 Higress 提供 NewCommonController 初始化 HigressConfigController 用于监听 higress-system 命名空间下 Configmap 的变化。

```golang
```go
// pkg/ingress/kube/configmap/controller.go
type HigressConfigController controller.Controller[listersv1.ConfigMapNamespaceLister]

Expand All @@ -113,7 +113,7 @@ ConfigmapMgr 初始化具体步骤如下:
- 把 tracingController 添加到 configmapMgr itemControllers 数组里
- 初始化 ItemEventHandler, 同时遍历 itemControllers,设置 ItemEventHandler

```golang
```go
// pkg/ingress/kube/configmap/controller.go
func NewConfigmapMgr(XDSUpdater model.XDSUpdater, namespace string, higressConfigController HigressConfigController, higressConfigLister listersv1.ConfigMapNamespaceLister) *ConfigmapMgr {
// 构建 ConfigmapMgr
Expand Down Expand Up @@ -145,7 +145,7 @@ func NewConfigmapMgr(XDSUpdater model.XDSUpdater, namespace string, higressConfi

在 IngressConfig 添加 HigressConfigController Run() 和 HasSynced() 控制流程。

```golang
```go
// pkg/ingress/config/ingress_config.go
func (m *IngressConfig) Run(stop <-chan struct{}) {
// ...
Expand Down Expand Up @@ -174,7 +174,7 @@ ConfigmapMgr 通过收到 HigressConfigController 通知来处理变更请求。
- 和上次保存在本地 higressConfig 比对, 检查这次数据是否有变化,如果没有变化就返回。
- 如果数据有变化,就遍历 ItemControllers 通知每个 itemController 数据有变化,同时保存这次变化到本地 higressConfig。

```golang
```go
// pkg/ingress/kube/configmap/controller.go
func (c *ConfigmapMgr) AddOrUpdateHigressConfig(name util.ClusterNamespacedName) {
// 只监听 higress-system 命名空间下 name 为 higress-config Configmap 的变化
Expand Down Expand Up @@ -225,7 +225,7 @@ TracingController 变更处理就比较简单:
- 检查 Tracing 这部分数据是否有变更。
- 如果有变更,DeepCopy 一份 Tracing 数据保存到本地,同时通过 eventHandler 下发变更通知。

```golang
```go
// pkg/ingress/kube/configmap/tracing.go
func (t *TracingController) AddOrUpdateHigressConfig(name util.ClusterNamespacedName, old *HigressConfig, new *HigressConfig) error {
// ...
Expand Down Expand Up @@ -258,7 +258,7 @@ func (t *TracingController) AddOrUpdateHigressConfig(name util.ClusterNamespaced

在 ConfigmapMgr 初始化时候调用 configmapMgr.initEventHandlers(), 这个 func 会创建 ItemEventHandler, 同时遍历 ItemControllers 设置 ItemEventHandler。

```golang
```go
// pkg/ingress/kube/configmap/config.go
type ItemEventHandler = func(name string)

Expand Down Expand Up @@ -289,7 +289,7 @@ func (c *ConfigmapMgr) initEventHandlers() error {
进一步跟踪可以发现在 Higress controller server 启动时执行 s.initXdsServer 函数创建 s.xdsServer,具体逻辑不在本文讨论范围, 有兴趣可以进一步阅读源码。


```golang
```go
// pkg/bootstrap/server.go
func NewServer(args *ServerArgs) (*Server, error) {
// ...
Expand Down Expand Up @@ -336,7 +336,7 @@ func (s *Server) initXdsServer() error {

IngressConfig List 用于 VirtualService, DestinationRule, EnvoyFilter, ServiceEntry, WasmPlugin 等 CR 资源下发, 这里主要关注 EnvoyFilter CR 资源下发。

```golang
```go
// pkg/ingress/config/ingress_config.go
func (m *IngressConfig) List(typ config.GroupVersionKind, namespace string) ([]config.Config, error) {
if typ != gvk.Gateway &&
Expand Down Expand Up @@ -385,7 +385,7 @@ func (m *IngressConfig) List(typ config.GroupVersionKind, namespace string) ([]c

这里比较简单,遍历一下 ItemControllers,聚合每个 itemController 返回的 EnvoyFilters.

```golang
```go
// /pkg/ingress/kube/configmap/controller.go
func (c *ConfigmapMgr) ConstructEnvoyFilters() ([]*config.Config, error) {
configs := make([]*config.Config, 0)
Expand All @@ -405,7 +405,7 @@ func (c *ConfigmapMgr) ConstructEnvoyFilters() ([]*config.Config, error) {

这里就比较简单,根据保存的 Tracing 数据构建对应的 EnvoyFilter

```golang
```go
// pkg/ingress/kube/configmap/tracing.go
func (t *TracingController) ConstructEnvoyFilters() ([]*config.Config, error) {
// ...
Expand Down Expand Up @@ -483,7 +483,7 @@ func (t *TracingController) ConstructEnvoyFilters() ([]*config.Config, error) {

### 1. HigressConfig 结构体添加对应的扩展配置

```golang
```go
type HigressConfig struct {
Tracing *Tracing `json:"tracing,omitempty"`
// 在这里添加对应的数据结构来扩展配置
Expand All @@ -492,7 +492,7 @@ type HigressConfig struct {

### 2. 增加扩展配置默认值

```golang
```go
// pkg/ingress/kube/configmap/config.go
func NewDefaultHigressConfig() *HigressConfig {
higressConfig := &HigressConfig{
Expand All @@ -505,7 +505,7 @@ func NewDefaultHigressConfig() *HigressConfig {

### 3. 实现 ItemController interface

```golang
```go
type ItemController interface {
GetName() string
AddOrUpdateHigressConfig(name util.ClusterNamespacedName, old *HigressConfig, new *HigressConfig) error
Expand All @@ -517,7 +517,7 @@ type ItemController interface {

### 4. 初始化扩展配置,同时添加到 ItemControllers

```golang
```go
func NewConfigmapMgr(XDSUpdater model.XDSUpdater, namespace string, higressConfigController HigressConfigController, higressConfigLister listersv1.ConfigMapNamespaceLister) *ConfigmapMgr {
// ...
tracingController := NewTracingController(namespace)
Expand All @@ -537,8 +537,3 @@ Higress 开源贡献小组正在火热招募贡献者。早期参与开源更容


![](https://img.alicdn.com/imgextra/i1/O1CN0166Gkdt1cRTVjJ2skL_!!6000000003597-2-tps-720-405.png)





2 changes: 1 addition & 1 deletion src/content/blog/higress-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ s.server.RunComponent(func(stop <-chan struct{}) error {

#### 在ready服务记录表里注册xds服务

```gog
```go
s.readinessProbes["xds"] = func() (bool, error) {
return s.xdsServer.IsServerReady(), nil
}
Expand Down
8 changes: 4 additions & 4 deletions src/content/blog/skywalking.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ Higress是基于阿里内部的Envoy Gateway实践沉淀、以开源 Istio + Env
业务应用通过与 [go2sky](https://github.com/SkyAPM/go2sky) 项目集成 SkyWalking 监控 Golang 应用程序,主要通过 Gin middleware 和 Http 请求手动埋点。

1、集成 Gin middleware
```golang
```go
func middleware(engine *gin.Engine, tracer *go2sky.Tracer) gin.HandlerFunc {
if engine == nil || tracer == nil {
return func(c *gin.Context) {
Expand Down Expand Up @@ -158,7 +158,7 @@ func getOperationName(c *gin.Context) string {

2、Http请求手动埋点

```golang
```go
func traceHttpCall(c *gin.Context, req *http.Request, url string, fn func(req *http.Request) (*http.Response, error)) (*http.Response, error) {
tracer := go2sky.GetGlobalTracer()
if tracer == nil {
Expand Down Expand Up @@ -302,8 +302,8 @@ data:
sampling: 100
timeout: 500
skywalking:
service: skywalking-oap-server.op-system.svc.cluster.local
port: 11800
service: skywalking-oap-server.op-system.svc.cluster.local
port: 11800
```

## 七、Skywalking 链路跟踪
Expand Down
4 changes: 2 additions & 2 deletions src/content/docs/ebook/en/wasm14.md
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ go get github.com/tidwall/gjson
#### 4.2.2 编写 main.go 文件
首先,我们编写 easy-logger 插件的基本框架,暂时只读取我们设置的配置参数,不在请求和响应阶段进行任何处理。
```golang
```go
package main

import (
Expand Down Expand Up @@ -762,7 +762,7 @@ curl -X POST -v http://127.0.0.1:10000/hello \
接下来,我们将通过自定义函数来处理请求和响应信息。通过设置插件参数,我们可以控制是否打印请求和响应信息,并根据指定的响应状态码决定是否记录响应内容。
```golang
```go
package main
import (
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/ebook/en/wasm15.md
Original file line number Diff line number Diff line change
Expand Up @@ -666,7 +666,7 @@ TinyGo 允许禁用 GC,但由于内部需要使用映射(隐式引起分配

用 Proxy-Wasm Go SDK 实现一个简单的插件,具体样例如下:

```golang
```go
package main

import (
Expand Down
26 changes: 13 additions & 13 deletions src/content/docs/ebook/en/wasm16.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Higress 插件 Go SDK 主要增强功能如下:

相对应于 proxy-wasm-go-sdk 中的 VMContext、PluginContext、HttpContext 3 个上下文, 在 Higress 插件 Go SDK 中是 CommonVmCtx、CommonPluginCtx、CommonHttpCtx 3 个支持泛型的 struct。 3 个 struct 的核心内容如下:

```golang
```go
type CommonVmCtx[PluginConfig any] struct {
// proxy-wasm-go-sdk DefaultVMContext 默认实现
types.DefaultVMContext
Expand Down Expand Up @@ -106,7 +106,7 @@ type CommonHttpCtx[PluginConfig any] struct {

### 2.1 启动入口和 VM 上下文(CommonVmCtx)

```golang
```go
func main() {
wrapper.SetCtx(
// 插件名称
Expand Down Expand Up @@ -138,7 +138,7 @@ func main() {
- 创建 CommonVmCtx 对象同时设置自定义插件回调钩子函数。
- 然后再调用 proxywasm.SetVMContext 设置 VMContext。

```golang
```go
func SetCtx[PluginConfig any](pluginName string, setFuncs ...SetPluginFunc[PluginConfig]) {
// 调用 proxywasm.SetVMContext 设置 VMContext
proxywasm.SetVMContext(NewCommonVmCtx(pluginName, setFuncs...))
Expand All @@ -162,7 +162,7 @@ func NewCommonVmCtx[PluginConfig any](pluginName string, setFuncs ...SetPluginFu
#### 2.2.1 创建 CommonPluginCtx 对象
通过 CommonVmCtx 的 NewPluginContext 方法创建 CommonPluginCtx 对象, 设置 CommonPluginCtx 的 vm 引用。
```golang
```go
func (ctx *CommonVmCtx[PluginConfig]) NewPluginContext(uint32) types.PluginContext {
return &CommonPluginCtx[PluginConfig]{
vm: ctx,
Expand All @@ -173,7 +173,7 @@ func (ctx *CommonVmCtx[PluginConfig]) NewPluginContext(uint32) types.PluginConte
#### 2.2.2 插件启动和插件配置解析
CommonPluginCtx 的 OnPluginStart 部分核心代码如下:
```golang
```go
func (ctx *CommonPluginCtx[PluginConfig]) OnPluginStart(int) types.OnPluginStartStatus {
// 调用 proxywasm.GetPluginConfiguration 获取插件配置
data, err := proxywasm.GetPluginConfiguration()
Expand Down Expand Up @@ -245,7 +245,7 @@ spec:
可以看出 matchRule 下 config 配置内容和 defaultConfig 配置内容不一样。所以在开发插件的时候,需要同时设置 parseConfig 和 parseRuleConfig 两个回调钩子函数。
baisc-auth 部分核心代码如下:
```golang
```go
func main() {
wrapper.SetCtx(
"basic-auth",
Expand Down Expand Up @@ -309,7 +309,7 @@ func parseOverrideRuleConfig(json gjson.Result, global BasicAuthConfig, config *
CommonPluginCtx 的 NewHttpContext 部分核心代码如下:
```golang
```go
func (ctx *CommonPluginCtx[PluginConfig]) NewHttpContext(contextID uint32) types.HttpContext {
httpCtx := &CommonHttpCtx[PluginConfig]{
plugin: ctx,
Expand All @@ -336,7 +336,7 @@ func (ctx *CommonPluginCtx[PluginConfig]) NewHttpContext(contextID uint32) types
#### 2.3.2 OnHttpRequestHeaders
OnHttpRequestHeaders 核心代码如下:
```golang
```go
func (ctx *CommonHttpCtx[PluginConfig]) OnHttpRequestHeaders(numHeaders int, endOfStream bool) types.Action {
// 获取当前 HTTP 请求生效插件配置
config, err := ctx.plugin.GetMatchConfig()
Expand Down Expand Up @@ -365,7 +365,7 @@ func (ctx *CommonHttpCtx[PluginConfig]) OnHttpRequestHeaders(numHeaders int, end
#### 2.3.3 OnHttpRequestBody
OnHttpRequestBody 核心代码如下:
```golang
```go
func (ctx *CommonHttpCtx[PluginConfig]) OnHttpRequestBody(bodySize int, endOfStream bool) types.Action {
...
// 如果不需要处理请求 body,则直接返回,继续后续处理
Expand Down Expand Up @@ -404,7 +404,7 @@ func (ctx *CommonHttpCtx[PluginConfig]) OnHttpRequestBody(bodySize int, endOfStr
#### 2.3.4 OnHttpResponseHeaders
OnHttpResponseHeaders 核心代码如下:
```golang
```go
func (ctx *CommonHttpCtx[PluginConfig]) OnHttpResponseHeaders(numHeaders int, endOfStream bool) types.Action {
...
// To avoid unexpected operations, plugins do not read the binary content body
Expand All @@ -423,7 +423,7 @@ func (ctx *CommonHttpCtx[PluginConfig]) OnHttpResponseHeaders(numHeaders int, en
#### 2.3.5 OnHttpResponseBody
OnHttpResponseBody 核心代码如下:
```golang
```go
func (ctx *CommonHttpCtx[PluginConfig]) OnHttpResponseBody(bodySize int, endOfStream bool) types.Action {
...
// 如果不需要处理响应 body,则直接返回,继续后续处理
Expand Down Expand Up @@ -461,7 +461,7 @@ func (ctx *CommonHttpCtx[PluginConfig]) OnHttpResponseBody(bodySize int, endOfSt
#### 2.3.6 OnHttpStreamDone
OnHttpStreamDone 核心代码如下:
```golang
```go
func (ctx *CommonHttpCtx[PluginConfig]) OnHttpStreamDone() {
...
ctx.plugin.vm.onHttpStreamDone(ctx, *ctx.config, ctx.plugin.vm.log)
Expand All @@ -473,7 +473,7 @@ OnHttpStreamDone 比较简单,自定义插件有 onHttpStreamDone 回调钩子
#### 2.3.7 CommonHttpCtx 方法
CommonHttpCtx 提供以下方法,自定义插件可以调用,其代码和注释如下:
```golang
```go
// 设置自定义上下文,这个上下文可以在自定义插件所有回调钩子函数中可以获取
func (ctx *CommonHttpCtx[PluginConfig]) SetContext(key string, value interface{}) {
ctx.userContext[key] = value
Expand Down
Loading

0 comments on commit 725dbe6

Please sign in to comment.