121 lines
3.7 KiB
Go
121 lines
3.7 KiB
Go
package maker
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"gitea.loveuer.com/yizhisec/pkg3/logger"
|
|
"yizhisec.com/hsv2/forge/pkg/resource"
|
|
)
|
|
|
|
func (m *maker) AppGateway(ctx context.Context, version string, replica int) error {
|
|
const (
|
|
_config = `Version: "3"
|
|
Database:
|
|
Elastic:
|
|
Address: http://es-service.db-es:9200
|
|
Mysql:
|
|
Address: mysql.db-mysql:3306
|
|
DBName: mie
|
|
Password: L0hMysql.
|
|
UserName: root
|
|
Redis:
|
|
Address: redis-master.db-redis:6379
|
|
Password: HybridScope0xRed1s.
|
|
Gateway:
|
|
Cert:
|
|
ClientCrt: /yizhisec/ssl/client.crt
|
|
ClientKey: /yizhisec/ssl/client.key
|
|
TokenFilePath: /etc/yizhisec/token
|
|
Key:
|
|
Token: TtKVnSzEHO3jRv/GWg3f5k3H1OVfMnPZ1Ke9E6MSCXk=
|
|
Log:
|
|
Dir: ./log
|
|
Level: 1
|
|
Name: gateway_controller
|
|
Sentry:
|
|
TracesSampleRate: 1
|
|
UserManagement:
|
|
Host: user-service
|
|
Port: 9013
|
|
Web:
|
|
Host: 0.0.0.0
|
|
Mode: release
|
|
Port: 9012
|
|
WorkDir: /yizhisec/gateway_controller/workspace
|
|
YosGuard:
|
|
Host: 172.17.0.1
|
|
Port: 7788`
|
|
_upsert = `#!/bin/bash
|
|
|
|
kubectl create configmap config-gateway --namespace hsv2 --from-file=config.yml=./config.yml --dry-run=client -o yaml | kubectl apply -f -
|
|
kubectl apply -f deployment.yaml
|
|
kubectl rollout restart deployment gateway-deployment -n hsv2`
|
|
)
|
|
var (
|
|
err error
|
|
workdir = filepath.Join(m.workdir, "app", "gateway")
|
|
)
|
|
|
|
logger.Info("☑️ maker.AppGateway: 开始构建 gateway 应用..., version = %s, dir = %s", version, workdir)
|
|
_ = os.RemoveAll(workdir)
|
|
logger.Debug("☑️ maker.AppGateway: 开始创建工作目录 = %s", workdir)
|
|
if err = os.MkdirAll(workdir, 0755); err != nil {
|
|
logger.Debug("❌ maker.AppGateway: 创建目录失败: %v", err)
|
|
return err
|
|
}
|
|
logger.Debug("✅ maker.AppGateway: 创建工作目录成功 = %s", workdir)
|
|
|
|
imgName := "hub.yizhisec.com/hybridscope/gateway_controller:latest"
|
|
logger.Debug("☑️ maker.AppGateway: start pull image = %s", imgName)
|
|
if err = m.Image(ctx, imgName,
|
|
WithImageForcePull(true),
|
|
WithImageSave(filepath.Join(workdir, "gateway.tar")),
|
|
); err != nil {
|
|
logger.Debug("❌ maker.AppGateway: 拉取镜像失败: %v", err)
|
|
return err
|
|
}
|
|
logger.Debug("✅ maker.AppGateway: pull image success = %s", imgName)
|
|
|
|
if replica < 1 {
|
|
replica = 1
|
|
}
|
|
|
|
logger.Debug("☑️ maker.AppGateway: 开始构建 yaml 资源文件")
|
|
content := []byte(fmt.Sprintf(resource.YAMLAppGateway, replica))
|
|
if err = os.WriteFile(filepath.Join(workdir, "deployment.yaml"), content, 0644); err != nil {
|
|
logger.Debug("❌ maker.AppGateway: 写入 deployment.yaml 失败: %v", err)
|
|
return err
|
|
}
|
|
logger.Debug("✅ maker.AppGateway: 开始 yaml 资源文件成功")
|
|
|
|
logger.Debug("☑️ maker.AppGateway: 开始构建 config 文件")
|
|
if err = os.WriteFile(filepath.Join(workdir, "config.yml"), []byte(_config), 0644); err != nil {
|
|
logger.Debug("❌ maker.AppGateway: 写入 config.yml 失败: %v", err)
|
|
return err
|
|
}
|
|
logger.Debug("✅ maker.AppGateway: 构建 config 文件成功")
|
|
|
|
logger.Debug("☑️ maker.AppGateway: 开始构建 upsert.sh 脚本")
|
|
if err = os.WriteFile(filepath.Join(workdir, "upsert.sh"), []byte(_upsert), 0755); err != nil {
|
|
logger.Debug("❌ maker.AppGateway: 写入 upsert.sh 失败: %v", err)
|
|
return err
|
|
}
|
|
logger.Debug("✅ maker.AppGateway: 构建 upsert.sh 脚本成功")
|
|
|
|
if err = os.WriteFile(filepath.Join(workdir, "version.txt"), []byte(version), 0644); err != nil {
|
|
logger.Debug("❌ maker.AppGateway: 写入 version.txt 失败: %v", err)
|
|
return err
|
|
}
|
|
|
|
if err = os.WriteFile(filepath.Join(workdir, "version.txt"), []byte(version), 0644); err != nil {
|
|
logger.Debug("❌ maker.AppGateway: 写入 version.txt 失败: %v", err)
|
|
return err
|
|
}
|
|
|
|
logger.Info("✅ maker.AppGateway: 构建 gateway 应用成功!!! version = %s", version)
|
|
return nil
|
|
}
|