Skip to content

Commit 52f954a

Browse files
authored
fix(main): fix kubeadm init func (labring#2756)
Signed-off-by: cuisongliu <cuisongliu@qq.com>
1 parent 5e5ac7f commit 52f954a

File tree

10 files changed

+152
-115
lines changed

10 files changed

+152
-115
lines changed

.github/keylabeler.yml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Determines if we search the title (optional). Defaults to true.
2+
matchTitle: true
3+
4+
# Determines if we search the body (optional). Defaults to true.
5+
matchBody: true
6+
7+
# Determines if label matching is case sensitive (optional). Defaults to true.
8+
caseSensitive: false
9+
10+
# Explicit keyword mappings to labels. Form of match:label. Required.
11+
labelMappings:
12+
"[WIP]": WIP
13+
doc: "kind/documentation"
14+
docs: "kind/documentation"
15+
bug: "kind/bug"
16+
fix: "kind/bug"
17+
BUG: "kind/bug"
18+
Fix: "kind/bug"
19+
Feature: "kind/feature"
20+
Feat: "kind/feature"
21+
feat: "kind/feature"

.github/mergeable.settings.yml

-6
This file was deleted.

.github/mergeable.yml

-67
This file was deleted.

.github/weekly-digest.yml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Configuration for weekly-digest - https://github.com/apps/weekly-digest
2+
publishDay: sun
3+
canPublishIssues: true
4+
canPublishPullRequests: true
5+
canPublishContributors: true
6+
canPublishStargazers: true
7+
canPublishCommits: true

.github/workflows/test_cert.yml

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: Test Sealos Cert Command
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches: ["main"]
7+
paths:
8+
- ".github/workflows/test_cert.yml"
9+
- "cmd/**"
10+
- "pkg/runtime/**"
11+
- "pkg/buildah/**"
12+
pull_request:
13+
branches: ["*"]
14+
paths:
15+
- ".github/workflows/test_cert.yml"
16+
- "cmd/**"
17+
- "pkg/runtime/**"
18+
- "pkg/buildah/**"
19+
20+
21+
jobs:
22+
build-sealos:
23+
runs-on: ubuntu-latest
24+
steps:
25+
- name: Checkout
26+
uses: actions/checkout@v3
27+
- name: Auto install sealos
28+
uses: labring/sealos-action@v0.0.5
29+
with:
30+
type: install-dev
31+
pruneCRI: true
32+
autoFetch: false
33+
- name: Save Binaries
34+
uses: actions/upload-artifact@v3
35+
with:
36+
name: sealos
37+
path: /usr/bin/sealos
38+
39+
verify-run-containerd-cert:
40+
needs: [build-sealos]
41+
runs-on: ubuntu-latest
42+
steps:
43+
- name: Download sealos
44+
uses: actions/download-artifact@v3
45+
with:
46+
name: sealos
47+
path: /tmp/
48+
- name: Verify sealos
49+
run: |
50+
sudo chmod a+x /tmp/sealos
51+
sudo mv /tmp/sealos /usr/bin/
52+
sudo sealos version
53+
- name: Remove containerd && docker
54+
uses: labring/sealos-action@v0.0.7
55+
with:
56+
type: prune
57+
- name: Auto install k8s using sealos
58+
run: |
59+
sudo sealos run labring/kubernetes:v1.25.0 --single --debug
60+
mkdir -p "$HOME/.kube"
61+
sudo cp -i /etc/kubernetes/admin.conf "$HOME/.kube/config"
62+
sudo chown "$(whoami)" "$HOME/.kube/config"
63+
kubectl get svc
64+
kubectl get pod -A
65+
sudo cat /root/.sealos/default/etc/kubeadm-init.yaml
66+
sudo cat /root/.sealos/default/Clusterfile
67+
sudo sealos cert --alt-names testci.sealos.github.io --debug
68+
sudo cat /root/.sealos/default/etc/kubeadm-update.yml
69+
- name: Verify Cluster Status
70+
run: |
71+
echo "Verify Cluster"
72+
echo "Current system info"
73+
sudo /var/lib/sealos/data/default/rootfs/opt/sealctl cri socket
74+
sudo /var/lib/sealos/data/default/rootfs/opt/sealctl cri cgroup-driver --short
75+
echo "Current Cluster info"
76+
set -e
77+
sudo cat /root/.sealos/default/etc/kubeadm-init.yaml | grep /run/containerd/containerd.sock
78+
sudo cat /root/.sealos/default/etc/kubeadm-init.yaml | grep systemd
79+
sudo cat /root/.sealos/default/etc/kubeadm-init.yaml | grep 100.64.0.0/10
80+
sudo cat /root/.sealos/default/etc/kubeadm-init.yaml | grep 10.96.0.0/22
81+
sudo cat /root/.sealos/default/etc/kubeadm-update.yml | grep testci.sealos.github.io

cmd/sealos/cmd/cert.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ var certCmd = &cobra.Command{
5959
if err = cf.Process(); err != nil {
6060
return err
6161
}
62-
r, err := runtime.NewDefaultRuntimeByKubeadm(cluster, cf.GetKubeadmConfig())
62+
r, err := runtime.NewDefaultRuntime(cluster, cf.GetKubeadmConfig())
6363
if err != nil {
6464
return fmt.Errorf("get default runtime failed, %v", err)
6565
}

pkg/apply/gen.go

+2-23
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ limitations under the License.
1717
package apply
1818

1919
import (
20-
"errors"
2120
"fmt"
2221

2322
"github.com/labring/sealos/pkg/apply/processor"
2423
"github.com/labring/sealos/pkg/buildah"
2524
"github.com/labring/sealos/pkg/runtime"
2625
"github.com/labring/sealos/pkg/types/v1beta1"
27-
"github.com/labring/sealos/pkg/utils/yaml"
2826
)
2927

3028
func NewClusterFromGenArgs(imageNames []string, args *RunArgs) ([]byte, error) {
@@ -45,30 +43,11 @@ func NewClusterFromGenArgs(imageNames []string, args *RunArgs) ([]byte, error) {
4543
return nil, fmt.Errorf("input first image %s is not kubernetes image", imageNames)
4644
}
4745
cluster.Status.Mounts = append(cluster.Status.Mounts, *img)
48-
rtInterface, err := runtime.NewDefaultRuntime(cluster, nil)
46+
rtInterface, err := runtime.NewDefaultRuntime(cluster, &runtime.KubeadmConfig{})
4947
if err != nil {
5048
return nil, err
5149
}
52-
if rt, ok := rtInterface.(*runtime.KubeadmRuntime); ok {
53-
if err = rt.ConvertInitConfigConversion(); err != nil {
54-
return nil, err
55-
}
56-
c.cluster.Status = v1beta1.ClusterStatus{}
57-
// todo: only generate configurations of the corresponding components by passing parameters
58-
objects := []interface{}{c.cluster,
59-
rt.InitConfiguration,
60-
rt.ClusterConfiguration,
61-
rt.JoinConfiguration,
62-
rt.KubeProxyConfiguration,
63-
rt.KubeletConfiguration,
64-
}
65-
data, err := yaml.MarshalYamlConfigs(objects...)
66-
if err != nil {
67-
return nil, err
68-
}
69-
return data, nil
70-
}
71-
return nil, errors.New("unknown convert kubeadmRuntime error")
50+
return rtInterface.GetAdminKubeconfig()
7251
}
7352

7453
func genImageInfo(imageName string) (*v1beta1.MountImage, error) {

pkg/runtime/kubeadm.go

+12-7
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,11 @@ func (k *KubeadmRuntime) setCertSANS(certs []string) {
329329
k.ClusterConfiguration.APIServer.CertSANs = certSans
330330
}
331331

332+
func (k *KubeadmRuntime) setExcludeCIDRs() {
333+
k.IPVS.ExcludeCIDRs = append(k.KubeProxyConfiguration.IPVS.ExcludeCIDRs, fmt.Sprintf("%s/32", k.getVip()))
334+
k.IPVS.ExcludeCIDRs = strings2.RemoveDuplicate(k.IPVS.ExcludeCIDRs)
335+
}
336+
332337
func (k *KubeadmRuntime) getEtcdDataDir() string {
333338
const defaultEtcdDataDir = "/var/lib/etcd"
334339
if k.ClusterConfiguration.Etcd.Local == nil {
@@ -355,11 +360,11 @@ func (k *KubeadmRuntime) setCRISocket(criSocket string) {
355360
k.InitConfiguration.NodeRegistration.CRISocket = criSocket
356361
}
357362

358-
func (k *KubeadmRuntime) generateInitConfigs() ([]byte, error) {
359-
setCGroupDriverAndSocket := func(krt *KubeadmRuntime) error {
360-
return krt.setCGroupDriverAndSocket(krt.getMaster0IPAndPort())
361-
}
363+
var setCGroupDriverAndSocket = func(krt *KubeadmRuntime) error {
364+
return krt.setCGroupDriverAndSocket(krt.getMaster0IPAndPort())
365+
}
362366

367+
func (k *KubeadmRuntime) generateInitConfigs() ([]byte, error) {
363368
if err := k.ConvertInitConfigConversion(setCGroupDriverAndSocket); err != nil {
364369
return nil, err
365370
}
@@ -384,11 +389,11 @@ func (k *KubeadmRuntime) ConvertInitConfigConversion(fns ...func(*KubeadmRuntime
384389
if k.APIServer.ExtraArgs == nil {
385390
k.APIServer.ExtraArgs = make(map[string]string)
386391
}
387-
k.IPVS.ExcludeCIDRs = append(k.KubeProxyConfiguration.IPVS.ExcludeCIDRs, fmt.Sprintf("%s/32", k.getVip()))
388-
k.IPVS.ExcludeCIDRs = strings2.RemoveDuplicate(k.IPVS.ExcludeCIDRs)
389-
392+
k.setExcludeCIDRs()
393+
k.setCertSANS([]string{})
390394
// after all merging done, set default fields
391395
k.finalizeInitConfig()
396+
392397
if err := k.convertKubeadmVersion(); err != nil {
393398
return fmt.Errorf("convert kubeadm version failed: %w", err)
394399
}

pkg/runtime/runtime.go

+25-11
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import (
1818
"fmt"
1919
"sync"
2020

21+
"github.com/labring/sealos/pkg/utils/yaml"
22+
2123
"github.com/labring/sealos/pkg/utils/logger"
2224
"github.com/labring/sealos/pkg/utils/versionutil"
2325

@@ -52,6 +54,26 @@ func (k *KubeadmRuntime) Init() error {
5254
return k.pipeline("init", pipeline)
5355
}
5456

57+
func (k *KubeadmRuntime) GetAdminKubeconfig() ([]byte, error) {
58+
k.KubeadmConfig = k.ClusterFileKubeConfig
59+
if err := k.ConvertInitConfigConversion(); err != nil {
60+
return nil, err
61+
}
62+
k.Cluster.Status = v2.ClusterStatus{}
63+
objects := []interface{}{k.Cluster,
64+
k.InitConfiguration,
65+
k.ClusterConfiguration,
66+
k.JoinConfiguration,
67+
k.KubeProxyConfiguration,
68+
k.KubeletConfiguration,
69+
}
70+
data, err := yaml.MarshalYamlConfigs(objects...)
71+
if err != nil {
72+
return nil, err
73+
}
74+
return data, nil
75+
}
76+
5577
type Interface interface {
5678
Init() error
5779
Reset() error
@@ -62,6 +84,7 @@ type Interface interface {
6284
SyncNodeIPVS(mastersIPList, nodeIPList []string) error
6385
UpdateCert(certs []string) error
6486
UpgradeCluster(version string) error
87+
GetAdminKubeconfig() ([]byte, error)
6588
}
6689

6790
func (k *KubeadmRuntime) Reset() error {
@@ -99,7 +122,7 @@ func (k *KubeadmRuntime) DeleteMasters(mastersIPList []string) error {
99122
return k.deleteMasters(mastersIPList)
100123
}
101124

102-
func newKubeadmRuntime(cluster *v2.Cluster, kubeadm *KubeadmConfig, setKubeadm bool) (Interface, error) {
125+
func newKubeadmRuntime(cluster *v2.Cluster, kubeadm *KubeadmConfig) (Interface, error) {
103126
k := &KubeadmRuntime{
104127
Mutex: &sync.Mutex{},
105128
Cluster: cluster,
@@ -109,27 +132,18 @@ func newKubeadmRuntime(cluster *v2.Cluster, kubeadm *KubeadmConfig, setKubeadm b
109132
},
110133
KubeadmConfig: &KubeadmConfig{},
111134
}
112-
if setKubeadm {
113-
k.KubeadmConfig = kubeadm
114-
}
115135
if err := k.Validate(); err != nil {
116136
return nil, err
117137
}
118138
if logger.IsDebugMode() {
119139
k.vlog = 6
120140
}
121-
k.setCertSANS([]string{})
122141
return k, nil
123142
}
124143

125144
// NewDefaultRuntime arg "clusterName" is the Cluster name
126145
func NewDefaultRuntime(cluster *v2.Cluster, kubeadm *KubeadmConfig) (Interface, error) {
127-
return newKubeadmRuntime(cluster, kubeadm, false)
128-
}
129-
130-
// NewDefaultRuntimeByKubeadm arg "clusterName" is the Cluster name
131-
func NewDefaultRuntimeByKubeadm(cluster *v2.Cluster, kubeadm *KubeadmConfig) (Interface, error) {
132-
return newKubeadmRuntime(cluster, kubeadm, true)
146+
return newKubeadmRuntime(cluster, kubeadm)
133147
}
134148

135149
func (k *KubeadmRuntime) Validate() error {

pkg/runtime/update_cert.go

+3
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ func (k *KubeadmRuntime) UpdateCert(certs []string) error {
4343
if len(certs) != 0 {
4444
k.setCertSANS(append(k.getCertSANS(), certs...))
4545
}
46+
if err := k.ConvertInitConfigConversion(setCGroupDriverAndSocket); err != nil {
47+
return err
48+
}
4649
pipeline := []func() error{
4750
k.updateCert,
4851
k.saveNewKubeadmConfig,

0 commit comments

Comments
 (0)