Skip to content

Commit 68237fb

Browse files
committed
设置 calico 网络模式
1 parent b24af6a commit 68237fb

File tree

4 files changed

+173
-9
lines changed

4 files changed

+173
-9
lines changed

server/api/cluster/change_resource_package_version.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func ChangeResourcePackageVersion(c *gin.Context) {
4949

5050
if netmanager == "calico" && (common.MapGet(metadata.Inventory, "all.children.target.children.k8s_cluster.vars.calico_ipip_mode") == nil ||
5151
common.MapGet(metadata.Inventory, "all.children.target.children.k8s_cluster.vars.calico_vxlan_mode") == nil ||
52-
common.MapGet(metadata.Inventory, "all.children.target.children.k8s_cluster.vars.calico_backend") == nil) {
52+
common.MapGet(metadata.Inventory, "all.children.target.children.k8s_cluster.vars.calico_network_backend") == nil) {
5353
shellReq1 := ansible_rpc.AnsibleCommandsRequest{
5454
Name: "calico",
5555
Command: `calicoctl.sh get ipPool default-pool -o json`,
@@ -78,10 +78,10 @@ func ChangeResourcePackageVersion(c *gin.Context) {
7878
stdout2 := shellResult[1].StdOut
7979
calicoBackend := map[string]interface{}{}
8080
if err := json.Unmarshal([]byte(stdout2), &calicoBackend); err == nil {
81-
calico_backend := common.MapGetString(calicoBackend, "data.calico_backend")
82-
common.MapSet(metadata.Inventory, "all.children.target.children.k8s_cluster.vars.calico_backend", calico_backend)
81+
calico_network_backend := common.MapGetString(calicoBackend, "data.calico_backend")
82+
common.MapSet(metadata.Inventory, "all.children.target.children.k8s_cluster.vars.calico_network_backend", calico_network_backend)
8383
} else {
84-
common.HandleError(c, http.StatusInternalServerError, "failed to parse calico_backend", err)
84+
common.HandleError(c, http.StatusInternalServerError, "failed to parse calico_network_backend", err)
8585
return
8686
}
8787

web/src/components/fields/FieldCommon.vue

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ zh:
1515
<slot v-if="compute_edit_mode" name="edit"></slot>
1616
<div v-else class="app_text_mono">
1717
<slot v-if="holder === undefined" name="view"></slot>
18-
<span v-else-if="value !== undefined && value !== ''">
19-
<slot name="view">{{ compute_display_value }}</slot>
20-
</span>
21-
<span v-else class="field_placeholder">{{ compute_placeholder }}</span>
18+
<slot v-else name="view">
19+
<span v-if="value !== undefined && value !== ''">
20+
{{ compute_display_value }}
21+
</span>
22+
<span v-else class="field_placeholder">{{ compute_placeholder }}</span>
23+
</slot>
2224
</div>
2325
</el-form-item>
2426
</template>

web/src/views/clusters/plan/k8s_cluster/NetworkPlugin.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@ zh:
1111
<FieldSelect :holder="cluster.inventory.all.children.target.children.k8s_cluster.vars" fieldName="kube_network_plugin"
1212
prop="all.children.target.children.k8s_cluster.vars"
1313
required :loadOptions="loadKubeNetworkPlugin"></FieldSelect>
14+
<el-card v-if="kube_network == 'calico'" shadow="none" :body-style="{padding: '10px 20px 10px 20px', 'background-color': 'var(--el-color-info-light-9)'}" class="app_margin_bottom">
15+
<component :is="kube_network" :cluster="cluster"></component>
16+
</el-card>
1417
</ConfigSection>
1518
</template>
1619

1720
<script>
21+
import calico from './network_plugin/Calico.vue'
22+
1823
export default {
1924
props: {
2025
cluster: { type: Object, required: true },
@@ -42,9 +47,12 @@ export default {
4247
}
4348
}
4449
return this.cluster.inventory.all.children.target.children.k8s_cluster.vars.kube_network_plugin
50+
},
51+
kube_network () {
52+
return this.cluster.inventory.all.children.target.children.k8s_cluster.vars.kube_network_plugin
4553
}
4654
},
47-
components: { },
55+
components: { calico },
4856
mounted () {
4957
},
5058
methods: {
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
<i18n>
2+
en:
3+
4+
zh:
5+
ipip_mode: ipip_mode
6+
vxlan_mode: vxlan_mode
7+
backend: backend
8+
calico_mode: calico_mode
9+
</i18n>
10+
11+
12+
<template>
13+
<div>
14+
<FieldCommon :holder="vars" :prop="prop" fieldName="calico_mode" :placeholder="$t('calico_mode')" label-width="160px">
15+
<template #view>{{ calico_mode }}</template>
16+
<template #edit>
17+
<el-radio-group v-model="calico_mode">
18+
<el-radio-button label="IPIP">IPIP</el-radio-button>
19+
<el-radio-button label="VXLAN">VXLAN</el-radio-button>
20+
</el-radio-group>
21+
</template>
22+
</FieldCommon>
23+
<FieldCommon v-if="calico_mode === 'IPIP'" :holder="vars" :prop="prop" fieldName="calico_ipip_mode" :placeholder="$t('ipip_mode')" label-width="160px">
24+
<template #view>
25+
<span>{{ ipip_mode }}</span>
26+
</template>
27+
<template #edit>
28+
<el-radio-group v-model="ipip_mode">
29+
<el-radio label="Always">Always</el-radio>
30+
<el-radio label="CrossSubnet">CrossSubnet</el-radio>
31+
</el-radio-group>
32+
</template>
33+
</FieldCommon>
34+
<FieldCommon v-if="calico_mode === 'VXLAN'" :holder="vars" :prop="prop" fieldName="calico_vxlan_mode" :placeholder="$t('vxlan_mode')" label-width="160px">
35+
<template #view>
36+
<span>{{ vxlan_mode }}</span>
37+
</template>
38+
<template #edit>
39+
<el-radio-group v-model="vxlan_mode">
40+
<el-radio label="Always">Always</el-radio>
41+
<el-radio label="CrossSubnet">CrossSubnet</el-radio>
42+
</el-radio-group>
43+
</template>
44+
</FieldCommon>
45+
<FieldCommon :holder="vars" :prop="prop" fieldName="calico_network_backend" :placeholder="$t('backend')" label-width="160px">
46+
<template #view>
47+
<span>{{ calico_network_backend }}</span>
48+
</template>
49+
<template #edit>
50+
<el-radio-group v-model="calico_network_backend">
51+
<el-radio label="bird">bird</el-radio>
52+
<el-radio label="vxlan">vxlan</el-radio>
53+
<el-radio label="none">none</el-radio>
54+
</el-radio-group>
55+
</template>
56+
</FieldCommon>
57+
</div>
58+
</template>
59+
60+
<script>
61+
import compareVersions from 'compare-versions'
62+
63+
export default {
64+
props: {
65+
cluster: { type: Object, required: true },
66+
},
67+
data() {
68+
return {
69+
70+
}
71+
},
72+
computed: {
73+
vars: {
74+
get () { return this.cluster.inventory.all.children.target.children.k8s_cluster.vars },
75+
set () {},
76+
},
77+
prop() { return 'all.children.target.children.k8s_cluster.vars' },
78+
calico_mode: {
79+
get () {
80+
if (this.ipip_mode === 'Never') {
81+
return 'VXLAN'
82+
}
83+
if (this.vxlan_mode === 'Never') {
84+
return 'IPIP'
85+
}
86+
return ''
87+
},
88+
set (v) {
89+
if (v === 'IPIP') {
90+
this.ipip_mode = 'Always'
91+
this.vxlan_mode = 'Never'
92+
} else if (v === 'VXLAN') {
93+
this.vxlan_mode = 'Always'
94+
this.ipip_mode = 'Never'
95+
}
96+
}
97+
},
98+
ipip_mode: {
99+
get () {
100+
if (this.vars.calico_ipip_mode) {
101+
return this.vars.calico_ipip_mode
102+
} else {
103+
if (compareVersions(this.cluster.resourcePackage.data.kubernetes.kube_version, 'v1.24.0') < 0) {
104+
return 'Always'
105+
} else {
106+
return 'Never'
107+
}
108+
}
109+
},
110+
set (v) {
111+
this.vars.calico_ipip_mode = v
112+
},
113+
},
114+
vxlan_mode: {
115+
get () {
116+
if (this.vars.calico_vxlan_mode) {
117+
return this.vars.calico_vxlan_mode
118+
} else {
119+
if (compareVersions(this.cluster.resourcePackage.data.kubernetes.kube_version, 'v1.24.0') < 0) {
120+
return 'Never'
121+
} else {
122+
return 'Always'
123+
}
124+
}
125+
},
126+
set (v) {
127+
this.vars.calico_vxlan_mode = v
128+
},
129+
},
130+
calico_network_backend: {
131+
get () {
132+
if (this.vars.calico_network_backend) {
133+
return this.vars.calico_network_backend
134+
} else {
135+
return 'bird'
136+
}
137+
},
138+
set (v) {
139+
this.vars.calico_network_backend = v
140+
}
141+
}
142+
},
143+
components: { },
144+
mounted () {
145+
},
146+
methods: {
147+
compareVersions,
148+
}
149+
}
150+
</script>
151+
152+
<style scoped lang="scss">
153+
154+
</style>

0 commit comments

Comments
 (0)