diff --git a/data/data/ignition/master/files/etc/isulad/daemon.json.template b/data/data/ignition/master/files/etc/isulad/daemon.json.template index e5540c103dcd5885120d550c9481bdd031261827..43a21088be8504fc63159ddfa4205684afdba6a9 100644 --- a/data/data/ignition/master/files/etc/isulad/daemon.json.template +++ b/data/data/ignition/master/files/etc/isulad/daemon.json.template @@ -29,7 +29,7 @@ "insecure-registries": [ "{{.ImageRegistry}}" ], - "pod-sandbox-image": "{{.ImageRegistry}}/pause:{{.PauseImageTag}}", + "pod-sandbox-image": "{{.ImageRegistry}}/{{.PauseImage}}", "native.umask": "secure", "network-plugin": "cni", "cni-bin-dir": "/opt/cni/bin", diff --git a/data/data/ignition/worker/files/etc/isulad/daemon.json.template b/data/data/ignition/worker/files/etc/isulad/daemon.json.template index e5540c103dcd5885120d550c9481bdd031261827..43a21088be8504fc63159ddfa4205684afdba6a9 100644 --- a/data/data/ignition/worker/files/etc/isulad/daemon.json.template +++ b/data/data/ignition/worker/files/etc/isulad/daemon.json.template @@ -29,7 +29,7 @@ "insecure-registries": [ "{{.ImageRegistry}}" ], - "pod-sandbox-image": "{{.ImageRegistry}}/pause:{{.PauseImageTag}}", + "pod-sandbox-image": "{{.ImageRegistry}}/{{.PauseImage}}", "native.umask": "secure", "network-plugin": "cni", "cni-bin-dir": "/opt/cni/bin", diff --git a/docs/user_guide/nkds/quick-start.md b/docs/user_guide/nkds/quick-start.md index 25c3186fc3826f358622f55f405d4aa049d65eec..6ff4a9b08f8643ae80320717732d03dd07a9c5ef 100644 --- a/docs/user_guide/nkds/quick-start.md +++ b/docs/user_guide/nkds/quick-start.md @@ -114,7 +114,7 @@ nkd项目在openEuler社区提供rpm软件包以供安装使用,同时也可 | 参数 |参数类型 | 参数说明 | 使用说明 | 是否必选 | | -------------- | ------ | -----------------------------------------------------------| ----- | ---------------- | | node | string | 节点类型 | 默认master或者worker | 是 | - | pauseimagetag | string | pause镜像的版本号 | 根据集群环境确定pause镜像版本,例如:3.6 | 是 | + | pauseimage | string | pause镜像 | 根据集群环境确定pause镜像,例如:pause:3.6 | 是 | | corednsimagetag | string | coredns镜像的版本号 | 需选择kubernetes版本兼容的coredns版本 | 是 | | releaseimageurl | string | nestos部署镜像的地址 | 用户需根据构建要求,自行构建带kubernetes组件的部署容器镜像 | 是 | | certificatekey | string | 添加新的控制面节点时用来解密所下载的Secret中的证书的秘钥 | 字段被添加到InitConfiguration和JoinConfiguration中 | 是 | diff --git a/pkg/ignition/common.go b/pkg/ignition/common.go index e778029c4cf39221a557868a5609200797f1c89c..bde441b7b75fead443e1decf5f4032c4ee07f68b 100644 --- a/pkg/ignition/common.go +++ b/pkg/ignition/common.go @@ -37,7 +37,7 @@ type Common struct { Config *igntypes.Config } -func (c *Common) GenerateFile() error { +func (c *Common) Generate() error { c.Config = &igntypes.Config{ Ignition: igntypes.Ignition{ Version: igntypes.MaxVersion.String(), diff --git a/pkg/ignition/machine/master.go b/pkg/ignition/machine/master.go index 259abdc137095685051347b4894f8881f490e5af..242dc553403858406ae249c1d79f7187f43b7d55 100644 --- a/pkg/ignition/machine/master.go +++ b/pkg/ignition/machine/master.go @@ -27,13 +27,11 @@ type masterTmplData struct { APIServerURL string Hsip string //HostName + IP ImageRegistry string - PauseImageTag string + PauseImage string KubeVersion string ServiceSubnet string PodSubnet string Token string - NodeType string - NodeName string CorednsImageTag string IpSegment string ReleaseImageURl string @@ -68,9 +66,8 @@ type IgnFile struct { Data []byte } -func (m *Master) GenerateMasterIgnFiles() error { +func (m *Master) GenerateFiles() error { mtd := getTmplData(m.ClusterAsset) - generateFile := ignition.Common{ UserName: m.ClusterAsset.NodeAsset[0].UserName, SSHKey: m.ClusterAsset.NodeAsset[0].SSHKey, @@ -80,18 +77,57 @@ func (m *Master) GenerateMasterIgnFiles() error { EnabledServices: enabledServices, Config: &igntypes.Config{}, } - if err := generateFile.GenerateFile(); err != nil { - logrus.Errorf("failed to generate controlplane ignition file: %v", err) + if err := generateFile.Generate(); err != nil { + logrus.Errorf("failed to generate %s ignition file: %v", m.ClusterAsset.NodeAsset[0].UserName, err) return err } for _, file := range m.CertFiles { ignFile := ignition.FileWithContents(file.Path, file.Mode, file.Content) generateFile.Config.Storage.Files = ignition.AppendFiles(generateFile.Config.Storage.Files, ignFile) } - //todo:generate master Ignition + data, err := ignition.Marshal(generateFile.Config) + if err != nil { + logrus.Errorf("failed to Marshal ignition config: %v", err) + return err + } + appendData(m, data) + for i := 1; i < m.ClusterAsset.Master.Count; i++ { + generateFile.UserName = m.ClusterAsset.NodeAsset[i].UserName + generateFile.SSHKey = m.ClusterAsset.NodeAsset[i].SSHKey + generateFile.PassWord = m.ClusterAsset.NodeAsset[i].PassWord + generateFile.NodeType = "master" + if err := generateFile.Generate(); err != nil { + logrus.Errorf("failed to generate %s ignition file: %v", m.ClusterAsset.NodeAsset[i].UserName, err) + return err + } + data, err := ignition.Marshal(generateFile.Config) + if err != nil { + logrus.Errorf("failed to Marshal ignition config: %v", err) + return err + } + appendData(m, data) + } + return nil } func getTmplData(c cluster.ClusterAsset) *masterTmplData { - return &masterTmplData{ /**/ } + return &masterTmplData{ + APIServerURL: c.Kubernetes.ApiServer_Endpoint, + ImageRegistry: c.Kubernetes.Insecure_Registry, + PauseImage: c.Kubernetes.Pause_Image, + KubeVersion: c.Kubernetes.Kubernetes_Version, + ServiceSubnet: c.Network.Service_Subnet, + PodSubnet: c.Network.Pod_Subnet, + Token: c.Kubernetes.Token, + CorednsImageTag: c.Network.CoreDNS_Image_Version, + ReleaseImageURl: c.Kubernetes.Release_Image_URL, + } +} + +func appendData(master *Master, data []byte) { + ignFile := IgnFile{ + Data: data, + } + master.IgnFiles = append(master.IgnFiles, ignFile) }