Skip to content

Commit

Permalink
Merge branch 'tkestack:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
GaoXiaodong committed May 6, 2022
2 parents db388fc + 4c13117 commit 21d7c38
Show file tree
Hide file tree
Showing 84 changed files with 1,545 additions and 19,333 deletions.
1 change: 1 addition & 0 deletions api/application/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ const (
AppTypeHelmV3 AppType = "HelmV3"
)

// +k8s:conversion-gen:explicit-from=net/url.Values
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// RollbackProxyOptions is the query options to an app rollback proxy call.
Expand Down
1 change: 1 addition & 0 deletions api/application/v1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ const (
AppTypeHelmV3 AppType = "HelmV3"
)

// +k8s:conversion-gen:explicit-from=net/url.Values
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// RollbackProxyOptions is the query options to an app rollback proxy call.
Expand Down
31 changes: 31 additions & 0 deletions api/application/v1/zz_generated.conversion.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions cmd/tke-installer/app/installer/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ func (t *TKE) preprocessPlatformApps(ctx context.Context) error {
"plugin": images.Get().CephCsi.FullName(),
},
"provisioner": map[string]interface{}{
"provisioner": images.Get().CsiNodeDriverRegistrar.FullName(),
"provisioner": images.Get().CsiProvisioner.FullName(),
"attacher": images.Get().CsiAttacher.FullName(),
"resizer": images.Get().CsiResizer.FullName(),
"snapshotter": images.Get().CsiSnapshotter.FullName(),
Expand All @@ -289,9 +289,11 @@ func (t *TKE) preprocessPlatformApps(ctx context.Context) error {
if values["storageClass"] == nil {
values["storageClass"] = map[string]interface{}{
"replicaCount": t.Config.Replicas,
"name": constants.CephRBDStorageClassName,
}
} else {
values["storageClass"].(map[string]interface{})["replicaCount"] = t.Config.Replicas
values["storageClass"].(map[string]interface{})["name"] = constants.CephRBDStorageClassName
}
values["namespace"] = platformApp.HelmInstallOptions.Namespace
}
Expand Down Expand Up @@ -366,7 +368,7 @@ func (t *TKE) installPlatformApp(ctx context.Context, platformApp *types.Platfor
}
// TODO currently only support local chart install
if len(platformApp.LocalChartPath) != 0 {
t.log.Infof("Start instal platform app %s in %s namespace", platformApp.HelmInstallOptions.ReleaseName, platformApp.HelmInstallOptions.Namespace)
t.log.Infof("Start install platform app %s in %s namespace", platformApp.HelmInstallOptions.ReleaseName, platformApp.HelmInstallOptions.Namespace)
if _, err := t.helmClient.InstallWithLocal(platformApp.HelmInstallOptions, platformApp.LocalChartPath); err != nil {
uninstallOptions := helmaction.UninstallOptions{
Timeout: 10 * time.Minute,
Expand All @@ -379,13 +381,13 @@ func (t *TKE) installPlatformApp(ctx context.Context, platformApp *types.Platfor
}
return err
}
t.log.Infof("End instal platform app %s in %s namespace", platformApp.HelmInstallOptions.ReleaseName, platformApp.HelmInstallOptions.Namespace)
}
if platformApp.ConditionFunc != nil {
err := wait.PollImmediate(5*time.Second, 10*time.Minute, platformApp.ConditionFunc)
if err != nil {
return err
}
}
t.log.Infof("End install platform app %s in %s namespace", platformApp.HelmInstallOptions.ReleaseName, platformApp.HelmInstallOptions.Namespace)
return nil
}
24 changes: 14 additions & 10 deletions cmd/tke-installer/app/installer/images/images.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ type BaseComponents struct {
ProviderRes containerregistry.Image
TKEGateway containerregistry.Image

NginxIngress containerregistry.Image
KebeWebhookCertgen containerregistry.Image

NFSProvisioner containerregistry.Image

CsiNodeDriverRegistrar containerregistry.Image
Expand All @@ -48,11 +51,10 @@ type BaseComponents struct {
}

type ExComponents struct {
Registry containerregistry.Image
Busybox containerregistry.Image
InfluxDB containerregistry.Image
Thanos containerregistry.Image
NginxIngress containerregistry.Image
Registry containerregistry.Image
Busybox containerregistry.Image
InfluxDB containerregistry.Image
Thanos containerregistry.Image

TKEBusinessAPI containerregistry.Image
TKEBusinessController containerregistry.Image
Expand Down Expand Up @@ -88,11 +90,10 @@ func (c Components) Get(name string) *containerregistry.Image {
var Version = version.Get().GitVersion

var exComponents = ExComponents{
Registry: containerregistry.Image{Name: "registry", Tag: "2.7.1"},
Busybox: containerregistry.Image{Name: "busybox", Tag: "1.31.1"},
InfluxDB: containerregistry.Image{Name: "influxdb", Tag: "1.7.9"},
Thanos: containerregistry.Image{Name: "thanos", Tag: "v0.15.0"},
NginxIngress: containerregistry.Image{Name: "ingress-nginx-controller", Tag: "v1.1.3"},
Registry: containerregistry.Image{Name: "registry", Tag: "2.7.1"},
Busybox: containerregistry.Image{Name: "busybox", Tag: "1.31.1"},
InfluxDB: containerregistry.Image{Name: "influxdb", Tag: "1.7.9"},
Thanos: containerregistry.Image{Name: "thanos", Tag: "v0.15.0"},

TKEBusinessAPI: containerregistry.Image{Name: "tke-business-api", Tag: Version},
TKEBusinessController: containerregistry.Image{Name: "tke-business-controller", Tag: Version},
Expand All @@ -119,6 +120,9 @@ var baseComponents = BaseComponents{
ProviderRes: containerregistry.Image{Name: "provider-res", Tag: "v1.21.4-3"},
TKEGateway: containerregistry.Image{Name: "tke-gateway", Tag: Version},

NginxIngress: containerregistry.Image{Name: "ingress-nginx-controller", Tag: "v1.1.3"},
KebeWebhookCertgen: containerregistry.Image{Name: "kube-webhook-certgen", Tag: "v1.1.1"},

NFSProvisioner: containerregistry.Image{Name: "nfs-subdir-external-provisioner", Tag: "v4.0.2"},

CsiNodeDriverRegistrar: containerregistry.Image{Name: "csi-node-driver-registrar", Tag: "v2.4.0"},
Expand Down
100 changes: 77 additions & 23 deletions cmd/tke-installer/app/installer/installer.go
Original file line number Diff line number Diff line change
Expand Up @@ -368,8 +368,8 @@ func (t *TKE) initSteps() {
t.Para.Config.Monitor.InfluxDBMonitor.LocalInfluxDBMonitor != nil {
t.steps = append(t.steps, []types.Handler{
{
Name: "Install InfluxDB",
Func: t.installInfluxDB,
Name: "Install InfluxDB chart",
Func: t.installInfluxDBChart,
},
}...)
}
Expand Down Expand Up @@ -1886,28 +1886,71 @@ func (t *TKE) installTKEBusinessController(ctx context.Context) error {
})
}

func (t *TKE) installInfluxDB(ctx context.Context) error {
func (t *TKE) installInfluxDBChart(ctx context.Context) error {

node, err := apiclient.GetNodeByMachineIP(ctx, t.globalClient, t.servers[0])
options, err := t.getInfluxDBOptions(ctx)
if err != nil {
return err
return fmt.Errorf("get influxdb options failed: %v", err)
}

err = apiclient.CreateResourceWithDir(ctx, t.globalClient, "manifests/influxdb/*.yaml",
map[string]interface{}{
"Image": images.Get().InfluxDB.FullName(),
"NodeName": node.Name,
})
if err != nil {
return err
influxDB := &types.PlatformApp{
HelmInstallOptions: &helmaction.InstallOptions{
Namespace: t.namespace,
ReleaseName: "influxdb",
Values: options,
DependencyUpdate: false,
ChartPathOptions: helmaction.ChartPathOptions{},
},
LocalChartPath: constants.ChartDirName + "influxdb/",
Enable: true,
ConditionFunc: func() (bool, error) {
ok, err := apiclient.CheckStatefulSet(ctx, t.globalClient, t.namespace, "influxdb")
if err != nil || !ok {
return false, nil
}
return ok, nil
},
}
return wait.PollImmediate(5*time.Second, 10*time.Minute, func() (bool, error) {
ok, err := apiclient.CheckStatefulSet(ctx, t.globalClient, t.namespace, "influxdb")
if err != nil || !ok {
return false, nil
return t.installPlatformApp(ctx, influxDB)
}

func (t *TKE) getInfluxDBOptions(ctx context.Context) (map[string]interface{}, error) {

options := map[string]interface{}{
"image": images.Get().InfluxDB.FullName(),
}

useCephRbd, useNFS := false, false
for _, platformApp := range t.Para.Config.PlatformApps {
if !platformApp.Enable || !platformApp.Installed {
continue
}
return ok, nil
})
if strings.EqualFold(platformApp.HelmInstallOptions.ReleaseName, constants.CephRBDChartReleaseName) {
useCephRbd = true
options["cephRbd"] = true
options["cephRbdPVCName"] = "ceph-rbd-influxdb-pvc"
options["cephRbdStorageClassName"] = constants.CephRBDStorageClassName
break
}
if strings.EqualFold(platformApp.HelmInstallOptions.ReleaseName, constants.NFSChartReleaseName) {
useNFS = true
options["nfs"] = true
options["nfsPVCName"] = "nfs-influxdb-pvc"
options["nfsStorageClassName"] = constants.NFSStorageClassName
break
}
}

if !(useCephRbd || useNFS) {
options["baremetalStorage"] = true
node, err := apiclient.GetNodeByMachineIP(ctx, t.globalClient, t.servers[0])
if err != nil {
return nil, err
}
options["nodeName"] = node.Name
}

return options, nil
}

func (t *TKE) installThanos(ctx context.Context) error {
Expand Down Expand Up @@ -2155,7 +2198,7 @@ func (t *TKE) installTKERegistryChart(ctx context.Context) error {
func (t *TKE) getTKERegistryAPIOptions(ctx context.Context) (map[string]interface{}, error) {

options := map[string]interface{}{
"replicas": t.Config.Replicas,
"replicas": 1,
"namespace": t.namespace,
"image": images.Get().TKERegistryAPI.FullName(),
"adminUsername": t.Para.Config.Registry.TKERegistry.Username,
Expand Down Expand Up @@ -2371,14 +2414,20 @@ func (t *TKE) preparePushImagesToTKERegistry(ctx context.Context) error {
t.Para.Config.Registry.Domain(),
constants.DefaultTeantID + "." + t.Para.Config.Registry.Domain(),
}

ip := t.servers[0]
if t.Para.Config.HA != nil && len(t.Para.Config.HA.VIP()) > 0 {
ip = t.Para.Config.HA.VIP()
}

for _, domain := range domains {
localHosts := hosts.LocalHosts{Host: domain, File: "hosts"}
err := localHosts.Set(t.servers[0])
err := localHosts.Set(ip)
if err != nil {
return err
}
localHosts.File = "/app/hosts"
err = localHosts.Set(t.servers[0])
err = localHosts.Set(ip)
if err != nil {
return err
}
Expand Down Expand Up @@ -2600,7 +2649,7 @@ func (t *TKE) dockerPush(tkeImages []string) error {
return err
}

manifestsChan := make(chan string, 10)
manifestsChan := make(chan string, 1)

for _, image := range tkeImages {
go func(image string) {
Expand Down Expand Up @@ -2743,6 +2792,11 @@ func (t *TKE) setGlobalClusterHosts(ctx context.Context) error {
t.Cluster.Spec.TenantID + "." + t.Para.Config.Registry.Domain(),
}

ip := t.Cluster.Spec.Machines[0].IP
if t.Para.Config.HA != nil && len(t.Para.Config.HA.VIP()) > 0 {
ip = t.Para.Config.HA.VIP()
}

for _, machine := range t.Cluster.Spec.Machines {
sshConfig := &ssh.Config{
User: machine.Username,
Expand All @@ -2758,7 +2812,7 @@ func (t *TKE) setGlobalClusterHosts(ctx context.Context) error {
}
for _, one := range domains {
remoteHosts := hosts.RemoteHosts{Host: one, SSH: s}
err := remoteHosts.Set(t.Cluster.Spec.Machines[0].IP)
err := remoteHosts.Set(ip)
if err != nil {
return err
}
Expand Down
Loading

0 comments on commit 21d7c38

Please sign in to comment.