下面是一个示例 Golang 代码,用于创建一个 NetworkAttachmentDefinition 对象:
package main
import (
"encoding/json"
"fmt"
)
type NetworkAttachmentDefinition struct {
APIVersion string `json:"apiVersion"`
Kind string `json:"kind"`
Metadata struct {
Name string `json:"name"`
Namespace string `json:"namespace"`
Labels map[string]string `json:"labels,omitempty"`
} `json:"metadata"`
Spec struct {
Configs []struct {
CNIConfig string `json:"cniConfig"`
} `json:"config"`
} `json:"spec"`
}
func main() {
netAttachDef := NetworkAttachmentDefinition{
APIVersion: "k8s.cni.cncf.io/v1",
Kind: "NetworkAttachmentDefinition",
Metadata: struct {
Name string `json:"name"`
Namespace string `json:"namespace"`
Labels map[string]string `json:"labels,omitempty"`
}{
Name: "net-attach-def",
Namespace: "default",
Labels: map[string]string{
"app": "my-app",
},
},
Spec: struct {
Configs []struct {
CNIConfig string `json:"cniConfig"`
} `json:"config"`
}{
Configs: []struct {
CNIConfig string `json:"cniConfig"`
}{
{CNIConfig: `
{
"cniVersion": "0.3.1",
"name": "mynet",
"type": "bridge",
"bridge": "br0",
"isDefaultGateway": true,
"ipMasq": true,
"hairpinMode": true,
"ipam": {
"type": "host-local",
"subnet": "10.244.0.0/16",
"routes": [
{"dst": "0.0.0.0/0"}
]
}
}
`},
},
},
}
netAttachDefJSON, err := json.Marshal(netAttachDef)
if err != nil {
panic(err)
}
fmt.Println(string(netAttachDefJSON))
}
需要注意的是,上述代码中的 CNIConfig
字段应该替换为你实际使用的 CNI 配置。