perf: 优化内存占用

This commit is contained in:
xiaojunnuo
2024-08-28 14:40:50 +08:00
parent 42a56b581d
commit db61033633
15 changed files with 98 additions and 80 deletions
@@ -1,5 +1,4 @@
import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline';
import tencentcloud from 'tencentcloud-sdk-nodejs';
import { TencentAccess } from '../../access/index.js';
import { CertInfo } from '@certd/plugin-cert';
@@ -59,17 +58,17 @@ export class DeployToCdnPlugin extends AbstractTaskPlugin {
// })
// endpoint!: string;
async onInstance() {}
Client: any;
async execute(): Promise<void> {
const accessProvider: TencentAccess = (await this.accessService.getById(this.accessId)) as TencentAccess;
const client = this.getClient(accessProvider);
const params = this.buildParams();
await this.doRequest(client, params);
async onInstance() {
const sdk = await import('tencentcloud-sdk-nodejs/tencentcloud/services/cdn/v20180606/index.js');
this.Client = sdk.v20180606.Client;
}
getClient(accessProvider: TencentAccess) {
const CdnClient = tencentcloud.cdn.v20180606.Client;
async getClient() {
const accessProvider: TencentAccess = (await this.accessService.getById(this.accessId)) as TencentAccess;
const CdnClient = this.Client;
const clientConfig = {
credential: {
@@ -87,6 +86,11 @@ export class DeployToCdnPlugin extends AbstractTaskPlugin {
return new CdnClient(clientConfig);
}
async execute(): Promise<void> {
const params = this.buildParams();
await this.doRequest(params);
}
buildParams() {
return {
Https: {
@@ -100,7 +104,8 @@ export class DeployToCdnPlugin extends AbstractTaskPlugin {
};
}
async doRequest(client: any, params: any) {
async doRequest(params: any) {
const client = await this.getClient();
const ret = await client.UpdateDomainConfig(params);
this.checkRet(ret);
this.logger.info('设置腾讯云CDN证书成功:', ret.RequestId);
@@ -1,5 +1,4 @@
import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput, utils } from '@certd/pipeline';
import tencentcloud from 'tencentcloud-sdk-nodejs';
import { TencentAccess } from '../../access/index.js';
import dayjs from 'dayjs';
@@ -92,11 +91,37 @@ export class DeployToClbPlugin extends AbstractTaskPlugin {
})
accessId!: string;
async onInstance() {}
async execute(): Promise<void> {
const accessProvider = (await this.accessService.getById(this.accessId)) as TencentAccess;
const client = this.getClient(accessProvider, this.region);
client: any;
async onInstance() {
this.client = await this.getClient();
}
async getClient() {
const sdk = await import('tencentcloud-sdk-nodejs/tencentcloud/services/clb/index.js');
const ClbClient = sdk.clb.v20180317.Client;
const accessProvider = (await this.accessService.getById(this.accessId)) as TencentAccess;
const region = this.region;
const clientConfig = {
credential: {
secretId: accessProvider.secretId,
secretKey: accessProvider.secretKey,
},
region: region,
profile: {
httpProfile: {
endpoint: 'clb.tencentcloudapi.com',
},
},
};
return new ClbClient(clientConfig);
}
async execute(): Promise<void> {
const client = this.client;
const lastCertId = await this.getCertIdFromProps(client);
if (!this.domain) {
await this.updateListener(client);
@@ -213,25 +238,6 @@ export class DeployToClbPlugin extends AbstractTaskPlugin {
return ret.Listeners;
}
getClient(accessProvider: TencentAccess, region: string) {
const ClbClient = tencentcloud.clb.v20180317.Client;
const clientConfig = {
credential: {
secretId: accessProvider.secretId,
secretKey: accessProvider.secretKey,
},
region: region,
profile: {
httpProfile: {
endpoint: 'clb.tencentcloudapi.com',
},
},
};
return new ClbClient(clientConfig);
}
checkRet(ret: any) {
if (!ret || ret.Error) {
throw new Error('执行失败:' + ret.Error.Code + ',' + ret.Error.Message);
@@ -1,5 +1,4 @@
import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline';
import tencentcloud from 'tencentcloud-sdk-nodejs-teo';
import { TencentAccess } from '../../access/index.js';
@IsTaskPlugin({
@@ -71,8 +70,12 @@ export class DeployToEOPlugin extends AbstractTaskPlugin {
// required: true,
// })
// endpoint!: string;
Client: any;
async onInstance() {}
async onInstance() {
const sdk = await import('tencentcloud-sdk-nodejs/tencentcloud/services/teo/v20220901/index.js');
this.Client = sdk.v20220901.Client;
}
async execute(): Promise<void> {
const accessProvider: TencentAccess = (await this.accessService.getById(this.accessId)) as TencentAccess;
@@ -82,7 +85,7 @@ export class DeployToEOPlugin extends AbstractTaskPlugin {
}
getClient(accessProvider: TencentAccess) {
const TeoClient = tencentcloud.teo.v20220901.Client;
const TeoClient = this.Client;
const clientConfig = {
credential: {
@@ -1,6 +1,4 @@
import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput, utils } from '@certd/pipeline';
import tencentcloud from 'tencentcloud-sdk-nodejs';
import { K8sClient } from '@certd/lib-k8s';
import dayjs from 'dayjs';
@IsTaskPlugin({
@@ -90,14 +88,22 @@ export class DeployCertToTencentTKEIngressPlugin extends AbstractTaskPlugin {
})
cert!: any;
async onInstance() {}
sdk: any;
K8sClient: any;
async onInstance() {
// const TkeClient = this.tencentcloud.tke.v20180525.Client;
this.sdk = await import('tencentcloud-sdk-nodejs/tencentcloud/services/tke/v20220501/index.js');
const k8sSdk = await import('@certd/lib-k8s');
this.K8sClient = k8sSdk.K8sClient;
}
async execute(): Promise<void> {
const accessProvider = await this.accessService.getById(this.accessId);
const tkeClient = this.getTkeClient(accessProvider, this.region);
const kubeConfigStr = await this.getTkeKubeConfig(tkeClient, this.clusterId);
this.logger.info('kubeconfig已成功获取');
const k8sClient = new K8sClient({
const k8sClient = new this.K8sClient({
kubeConfigStr,
logger: this.logger,
});
@@ -120,7 +126,6 @@ export class DeployCertToTencentTKEIngressPlugin extends AbstractTaskPlugin {
}
getTkeClient(accessProvider: any, region = 'ap-guangzhou') {
const TkeClient = tencentcloud.tke.v20180525.Client;
const clientConfig = {
credential: {
secretId: accessProvider.secretId,
@@ -134,7 +139,7 @@ export class DeployCertToTencentTKEIngressPlugin extends AbstractTaskPlugin {
},
};
return new TkeClient(clientConfig);
return new this.sdk.Client(clientConfig);
}
async getTkeKubeConfig(client: any, clusterId: string) {
@@ -1,5 +1,4 @@
import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput, TaskOutput } from '@certd/pipeline';
import tencentcloud from 'tencentcloud-sdk-nodejs';
import dayjs from 'dayjs';
@IsTaskPlugin({
@@ -43,7 +42,11 @@ export class UploadToTencentPlugin extends AbstractTaskPlugin {
})
tencentCertId?: string;
async onInstance() {}
Client: any;
async onInstance() {
const sdk = await import('tencentcloud-sdk-nodejs/tencentcloud/services/ssl/v20191205/index.js');
this.Client = sdk.v20191205.Client;
}
async execute(): Promise<void> {
const { accessId, name, cert } = this;
@@ -71,7 +74,7 @@ export class UploadToTencentPlugin extends AbstractTaskPlugin {
}
getClient(accessProvider: any) {
const SslClient = tencentcloud.ssl.v20191205.Client;
const SslClient = this.Client;
const clientConfig = {
credential: {