修改yaml文件名
This commit is contained in:
@@ -22,6 +22,11 @@ pipeline {
|
|||||||
choices: ['sit', 'test', 'prod'],
|
choices: ['sit', 'test', 'prod'],
|
||||||
description: '选择构建的环境配置:'
|
description: '选择构建的环境配置:'
|
||||||
)
|
)
|
||||||
|
string(
|
||||||
|
name: 'CUSTOM_TAG',
|
||||||
|
defaultValue: '',
|
||||||
|
description: '可选:自定义镜像 Tag (字母、数字、点、下划线、短横线), 留空则自动生成 “ v+构建次数_分支名_短哈希_构建时间 ”'
|
||||||
|
)
|
||||||
}
|
}
|
||||||
environment {
|
environment {
|
||||||
REGISTRY = "uswccr.ccs.tencentyun.com" // 镜像仓库地址
|
REGISTRY = "uswccr.ccs.tencentyun.com" // 镜像仓库地址
|
||||||
@@ -51,6 +56,7 @@ pipeline {
|
|||||||
).trim()
|
).trim()
|
||||||
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
|
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
|
||||||
env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=format:%s | sed -e \'s/"/\\"/g\'', returnStdout: true).trim()
|
env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=format:%s | sed -e \'s/"/\\"/g\'', returnStdout: true).trim()
|
||||||
|
|
||||||
// Jenkins构建次数
|
// Jenkins构建次数
|
||||||
def buildNumber = env.BUILD_NUMBER // Jenkins内置变量,直接获取当前Job的构建序号
|
def buildNumber = env.BUILD_NUMBER // Jenkins内置变量,直接获取当前Job的构建序号
|
||||||
// 当前分支名(处理/为-,如feature/docker_1015 → feature-docker_1015)
|
// 当前分支名(处理/为-,如feature/docker_1015 → feature-docker_1015)
|
||||||
@@ -58,15 +64,55 @@ pipeline {
|
|||||||
def formattedBranch = branchName.replace('/', '-').replace('_', '-') // 替换分支名中的/和_为-
|
def formattedBranch = branchName.replace('/', '-').replace('_', '-') // 替换分支名中的/和_为-
|
||||||
// 构建时间(格式:202510181215,年-月-日-时-分,无分隔符)
|
// 构建时间(格式:202510181215,年-月-日-时-分,无分隔符)
|
||||||
def buildTime = sh(script: 'date +%Y%m%d%H%M', returnStdout: true).trim()
|
def buildTime = sh(script: 'date +%Y%m%d%H%M', returnStdout: true).trim()
|
||||||
// 最终Tag(格式:v+构建次数_分支名_短哈希_构建时间)
|
def defaultTag = "v${buildNumber}_${formattedBranch}_${GIT_COMMIT_SHORT}_${buildTime}"
|
||||||
env.IMAGE_TAG = "v${buildNumber}_${formattedBranch}_${GIT_COMMIT_SHORT}_${buildTime}"
|
|
||||||
|
def customTag = params.CUSTOM_TAG?.trim()
|
||||||
|
def tagPattern = ~/^[a-zA-Z0-9._-]+$/
|
||||||
|
|
||||||
|
// 判断最终Tag
|
||||||
|
if (customTag && customTag ==~ tagPattern) {
|
||||||
|
echo "✅ 使用自定义镜像 Tag: ${customTag}"
|
||||||
|
env.IMAGE_TAG = customTag
|
||||||
|
} else if (customTag) {
|
||||||
|
echo "⚠️ 自定义 Tag '${customTag}' 不符合规范,将使用默认生成的 Tag: ${defaultTag}"
|
||||||
|
|
||||||
|
def confirmed = true
|
||||||
|
timeout(time: 1, unit: 'MINUTES') {
|
||||||
|
try {
|
||||||
|
input(
|
||||||
|
message: """⚠️ Tag 命名不规范:
|
||||||
|
${customTag}
|
||||||
|
|
||||||
|
将使用自动生成的 Tag:
|
||||||
|
${defaultTag}
|
||||||
|
|
||||||
|
是否继续构建?""",
|
||||||
|
ok: '确认'
|
||||||
|
)
|
||||||
|
} catch (err) {
|
||||||
|
// 用户点击“取消”或中断
|
||||||
|
echo "🚫 用户取消构建"
|
||||||
|
confirmed = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (confirmed) {
|
||||||
|
echo "✅ 用户确认使用自动生成的 Tag:${defaultTag}"
|
||||||
|
env.IMAGE_TAG = defaultTag
|
||||||
|
} else {
|
||||||
|
error("流水线已终止。")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
env.IMAGE_TAG = defaultTag
|
||||||
|
echo "未输入自定义 Tag, 使用自动生成规则: ${env.IMAGE_TAG}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Maven 编译') {
|
stage('Maven 编译') {
|
||||||
steps {
|
steps {
|
||||||
sh "cd ${WORKSPACE}/ && mvn clean install -P ${params.BUILD_env} -Dmaven.test.skip=true"
|
sh "cd ${WORKSPACE}/ && mvn clean install -Dmaven.test.skip=true"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,8 +135,7 @@ pipeline {
|
|||||||
script {
|
script {
|
||||||
// 构建镜像,添加标签信息
|
// 构建镜像,添加标签信息
|
||||||
sh """
|
sh """
|
||||||
docker build --build-arg BUILD_PROFILE=${params.BUILD_env} \
|
docker build -t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} \
|
||||||
-t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} \
|
|
||||||
--label "git-branch='${params.Code_branch}'" \
|
--label "git-branch='${params.Code_branch}'" \
|
||||||
--label "git-commit='${GIT_COMMIT_SHORT}'" \
|
--label "git-commit='${GIT_COMMIT_SHORT}'" \
|
||||||
--label "git-author='${GIT_AUTHOR}'" \
|
--label "git-author='${GIT_AUTHOR}'" \
|
||||||
|
|||||||
@@ -20,7 +20,12 @@ pipeline {
|
|||||||
choice(
|
choice(
|
||||||
name: 'BUILD_env',
|
name: 'BUILD_env',
|
||||||
choices: ['sit', 'test', 'prod'],
|
choices: ['sit', 'test', 'prod'],
|
||||||
description: '选择构建的环境配置:'
|
description: '选择存放镜像的仓库命名空间:'
|
||||||
|
)
|
||||||
|
string(
|
||||||
|
name: 'CUSTOM_TAG',
|
||||||
|
defaultValue: '',
|
||||||
|
description: '可选:自定义镜像 Tag (字母、数字、点、下划线、短横线), 留空则自动生成 “ v+构建次数_分支名_短哈希_构建时间 ”'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
environment {
|
environment {
|
||||||
@@ -51,6 +56,7 @@ pipeline {
|
|||||||
).trim()
|
).trim()
|
||||||
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
|
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
|
||||||
env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=format:%s | sed -e \'s/"/\\"/g\'', returnStdout: true).trim()
|
env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=format:%s | sed -e \'s/"/\\"/g\'', returnStdout: true).trim()
|
||||||
|
|
||||||
// Jenkins构建次数
|
// Jenkins构建次数
|
||||||
def buildNumber = env.BUILD_NUMBER // Jenkins内置变量,直接获取当前Job的构建序号
|
def buildNumber = env.BUILD_NUMBER // Jenkins内置变量,直接获取当前Job的构建序号
|
||||||
// 当前分支名(处理/为-,如feature/docker_1015 → feature-docker_1015)
|
// 当前分支名(处理/为-,如feature/docker_1015 → feature-docker_1015)
|
||||||
@@ -58,15 +64,55 @@ pipeline {
|
|||||||
def formattedBranch = branchName.replace('/', '-').replace('_', '-') // 替换分支名中的/和_为-
|
def formattedBranch = branchName.replace('/', '-').replace('_', '-') // 替换分支名中的/和_为-
|
||||||
// 构建时间(格式:202510181215,年-月-日-时-分,无分隔符)
|
// 构建时间(格式:202510181215,年-月-日-时-分,无分隔符)
|
||||||
def buildTime = sh(script: 'date +%Y%m%d%H%M', returnStdout: true).trim()
|
def buildTime = sh(script: 'date +%Y%m%d%H%M', returnStdout: true).trim()
|
||||||
// 最终Tag(格式:v+构建次数_分支名_短哈希_构建时间)
|
def defaultTag = "v${buildNumber}_${formattedBranch}_${GIT_COMMIT_SHORT}_${buildTime}"
|
||||||
env.IMAGE_TAG = "v${buildNumber}_${formattedBranch}_${GIT_COMMIT_SHORT}_${buildTime}"
|
|
||||||
|
def customTag = params.CUSTOM_TAG?.trim()
|
||||||
|
def tagPattern = ~/^[a-zA-Z0-9._-]+$/
|
||||||
|
|
||||||
|
// 判断最终Tag
|
||||||
|
if (customTag && customTag ==~ tagPattern) {
|
||||||
|
echo "✅ 使用自定义镜像 Tag: ${customTag}"
|
||||||
|
env.IMAGE_TAG = customTag
|
||||||
|
} else if (customTag) {
|
||||||
|
echo "⚠️ 自定义 Tag '${customTag}' 不符合规范,将使用默认生成的 Tag: ${defaultTag}"
|
||||||
|
|
||||||
|
def confirmed = true
|
||||||
|
timeout(time: 1, unit: 'MINUTES') {
|
||||||
|
try {
|
||||||
|
input(
|
||||||
|
message: """⚠️ Tag 命名不规范:
|
||||||
|
${customTag}
|
||||||
|
|
||||||
|
将使用自动生成的 Tag:
|
||||||
|
${defaultTag}
|
||||||
|
|
||||||
|
是否继续构建?""",
|
||||||
|
ok: '确认'
|
||||||
|
)
|
||||||
|
} catch (err) {
|
||||||
|
// 用户点击“取消”或中断
|
||||||
|
echo "🚫 用户取消构建"
|
||||||
|
confirmed = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (confirmed) {
|
||||||
|
echo "✅ 用户确认使用自动生成的 Tag:${defaultTag}"
|
||||||
|
env.IMAGE_TAG = defaultTag
|
||||||
|
} else {
|
||||||
|
error("流水线已终止。")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
env.IMAGE_TAG = defaultTag
|
||||||
|
echo "未输入自定义 Tag, 使用自动生成规则: ${env.IMAGE_TAG}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Maven 编译') {
|
stage('Maven 编译') {
|
||||||
steps {
|
steps {
|
||||||
sh "cd ${WORKSPACE}/ && mvn clean install -P ${params.BUILD_env} -Dmaven.test.skip=true"
|
sh "cd ${WORKSPACE}/ && mvn clean install -Dmaven.test.skip=true"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,8 +135,7 @@ pipeline {
|
|||||||
script {
|
script {
|
||||||
// 构建镜像,添加标签信息
|
// 构建镜像,添加标签信息
|
||||||
sh """
|
sh """
|
||||||
docker build --build-arg BUILD_PROFILE=${params.BUILD_env} \
|
docker build -t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} \
|
||||||
-t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} \
|
|
||||||
--label "git-branch='${params.Code_branch}'" \
|
--label "git-branch='${params.Code_branch}'" \
|
||||||
--label "git-commit='${GIT_COMMIT_SHORT}'" \
|
--label "git-commit='${GIT_COMMIT_SHORT}'" \
|
||||||
--label "git-author='${GIT_AUTHOR}'" \
|
--label "git-author='${GIT_AUTHOR}'" \
|
||||||
|
|||||||
@@ -20,7 +20,12 @@ pipeline {
|
|||||||
choice(
|
choice(
|
||||||
name: 'BUILD_env',
|
name: 'BUILD_env',
|
||||||
choices: ['sit', 'test', 'prod'],
|
choices: ['sit', 'test', 'prod'],
|
||||||
description: '选择构建的环境配置:'
|
description: '选择存放镜像的仓库命名空间:'
|
||||||
|
)
|
||||||
|
string(
|
||||||
|
name: 'CUSTOM_TAG',
|
||||||
|
defaultValue: '',
|
||||||
|
description: '可选:自定义镜像 Tag (字母、数字、点、下划线、短横线), 留空则自动生成 “ v+构建次数_分支名_短哈希_构建时间 ”'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
environment {
|
environment {
|
||||||
@@ -51,6 +56,7 @@ pipeline {
|
|||||||
).trim()
|
).trim()
|
||||||
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
|
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
|
||||||
env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=format:%s | sed -e \'s/"/\\"/g\'', returnStdout: true).trim()
|
env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=format:%s | sed -e \'s/"/\\"/g\'', returnStdout: true).trim()
|
||||||
|
|
||||||
// Jenkins构建次数
|
// Jenkins构建次数
|
||||||
def buildNumber = env.BUILD_NUMBER // Jenkins内置变量,直接获取当前Job的构建序号
|
def buildNumber = env.BUILD_NUMBER // Jenkins内置变量,直接获取当前Job的构建序号
|
||||||
// 当前分支名(处理/为-,如feature/docker_1015 → feature-docker_1015)
|
// 当前分支名(处理/为-,如feature/docker_1015 → feature-docker_1015)
|
||||||
@@ -58,15 +64,55 @@ pipeline {
|
|||||||
def formattedBranch = branchName.replace('/', '-').replace('_', '-') // 替换分支名中的/和_为-
|
def formattedBranch = branchName.replace('/', '-').replace('_', '-') // 替换分支名中的/和_为-
|
||||||
// 构建时间(格式:202510181215,年-月-日-时-分,无分隔符)
|
// 构建时间(格式:202510181215,年-月-日-时-分,无分隔符)
|
||||||
def buildTime = sh(script: 'date +%Y%m%d%H%M', returnStdout: true).trim()
|
def buildTime = sh(script: 'date +%Y%m%d%H%M', returnStdout: true).trim()
|
||||||
// 最终Tag(格式:v+构建次数_分支名_短哈希_构建时间)
|
def defaultTag = "v${buildNumber}_${formattedBranch}_${GIT_COMMIT_SHORT}_${buildTime}"
|
||||||
env.IMAGE_TAG = "v${buildNumber}_${formattedBranch}_${GIT_COMMIT_SHORT}_${buildTime}"
|
|
||||||
|
def customTag = params.CUSTOM_TAG?.trim()
|
||||||
|
def tagPattern = ~/^[a-zA-Z0-9._-]+$/
|
||||||
|
|
||||||
|
// 最终Tag
|
||||||
|
if (customTag && customTag ==~ tagPattern) {
|
||||||
|
echo "✅ 使用自定义镜像 Tag: ${customTag}"
|
||||||
|
env.IMAGE_TAG = customTag
|
||||||
|
} else if (customTag) {
|
||||||
|
echo "⚠️ 自定义 Tag '${customTag}' 不符合规范,将使用默认生成的 Tag: ${defaultTag}"
|
||||||
|
|
||||||
|
def confirmed = true
|
||||||
|
timeout(time: 1, unit: 'MINUTES') {
|
||||||
|
try {
|
||||||
|
input(
|
||||||
|
message: """⚠️ Tag 命名不规范:
|
||||||
|
${customTag}
|
||||||
|
|
||||||
|
将使用自动生成的 Tag:
|
||||||
|
${defaultTag}
|
||||||
|
|
||||||
|
是否继续构建?""",
|
||||||
|
ok: '确认'
|
||||||
|
)
|
||||||
|
} catch (err) {
|
||||||
|
// 用户点击“取消”或中断
|
||||||
|
echo "🚫 用户取消构建"
|
||||||
|
confirmed = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (confirmed) {
|
||||||
|
echo "✅ 用户确认使用自动生成的 Tag:${defaultTag}"
|
||||||
|
env.IMAGE_TAG = defaultTag
|
||||||
|
} else {
|
||||||
|
error("流水线已终止。")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
env.IMAGE_TAG = defaultTag
|
||||||
|
echo "未输入自定义 Tag, 使用自动生成规则: ${env.IMAGE_TAG}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Maven 编译') {
|
stage('Maven 编译') {
|
||||||
steps {
|
steps {
|
||||||
sh "cd ${WORKSPACE}/ && mvn clean install -P ${params.BUILD_env} -Dmaven.test.skip=true"
|
sh "cd ${WORKSPACE}/ && mvn clean install -Dmaven.test.skip=true"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,8 +135,7 @@ pipeline {
|
|||||||
script {
|
script {
|
||||||
// 构建镜像,添加标签信息
|
// 构建镜像,添加标签信息
|
||||||
sh """
|
sh """
|
||||||
docker build --build-arg BUILD_PROFILE=${params.BUILD_env} \
|
docker build -t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} \
|
||||||
-t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} \
|
|
||||||
--label "git-branch='${params.Code_branch}'" \
|
--label "git-branch='${params.Code_branch}'" \
|
||||||
--label "git-commit='${GIT_COMMIT_SHORT}'" \
|
--label "git-commit='${GIT_COMMIT_SHORT}'" \
|
||||||
--label "git-author='${GIT_AUTHOR}'" \
|
--label "git-author='${GIT_AUTHOR}'" \
|
||||||
|
|||||||
@@ -19,7 +19,12 @@ pipeline {
|
|||||||
choice(
|
choice(
|
||||||
name: 'BUILD_env',
|
name: 'BUILD_env',
|
||||||
choices: ['sit', 'test', 'prod'],
|
choices: ['sit', 'test', 'prod'],
|
||||||
description: '选择构建的环境配置:'
|
description: '选择存放镜像的仓库命名空间:'
|
||||||
|
)
|
||||||
|
string(
|
||||||
|
name: 'CUSTOM_TAG',
|
||||||
|
defaultValue: '',
|
||||||
|
description: '可选:自定义镜像 Tag (字母、数字、点、下划线、短横线), 留空则自动生成 “ v+构建次数_分支名_短哈希_构建时间 ”'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
environment {
|
environment {
|
||||||
@@ -31,8 +36,9 @@ pipeline {
|
|||||||
stages {
|
stages {
|
||||||
stage('Checkout代码') {
|
stage('Checkout代码') {
|
||||||
steps {
|
steps {
|
||||||
echo "阶段一"
|
git branch: "${params.Code_branch}",
|
||||||
git branch: "${params.Code_branch}", credentialsId: 'fly_gitlab_auth', url: 'http://106.53.194.199/go/lessie-sourcing-api.git'
|
credentialsId: 'fly_gitlab_auth',
|
||||||
|
url: 'http://106.53.194.199/go/lessie-sourcing-api.git'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('获取信息') {
|
stage('获取信息') {
|
||||||
@@ -49,6 +55,7 @@ pipeline {
|
|||||||
).trim()
|
).trim()
|
||||||
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
|
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
|
||||||
env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=format:%s | sed -e \'s/"/\\"/g\'', returnStdout: true).trim()
|
env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=format:%s | sed -e \'s/"/\\"/g\'', returnStdout: true).trim()
|
||||||
|
|
||||||
// Jenkins构建次数
|
// Jenkins构建次数
|
||||||
def buildNumber = env.BUILD_NUMBER // Jenkins内置变量,直接获取当前Job的构建序号
|
def buildNumber = env.BUILD_NUMBER // Jenkins内置变量,直接获取当前Job的构建序号
|
||||||
// 当前分支名(处理/为-,如feature/docker_1015 → feature-docker_1015)
|
// 当前分支名(处理/为-,如feature/docker_1015 → feature-docker_1015)
|
||||||
@@ -56,8 +63,47 @@ pipeline {
|
|||||||
def formattedBranch = branchName.replace('/', '-').replace('_', '-') // 替换分支名中的/和_为-
|
def formattedBranch = branchName.replace('/', '-').replace('_', '-') // 替换分支名中的/和_为-
|
||||||
// 构建时间(格式:202510181215,年-月-日-时-分,无分隔符)
|
// 构建时间(格式:202510181215,年-月-日-时-分,无分隔符)
|
||||||
def buildTime = sh(script: 'date +%Y%m%d%H%M', returnStdout: true).trim()
|
def buildTime = sh(script: 'date +%Y%m%d%H%M', returnStdout: true).trim()
|
||||||
// 最终Tag(格式:v+构建次数_分支名_短哈希_构建时间)
|
def defaultTag = "v${buildNumber}_${formattedBranch}_${GIT_COMMIT_SHORT}_${buildTime}"
|
||||||
env.IMAGE_TAG = "v${buildNumber}_${formattedBranch}_${GIT_COMMIT_SHORT}_${buildTime}"
|
|
||||||
|
def customTag = params.CUSTOM_TAG?.trim()
|
||||||
|
def tagPattern = ~/^[a-zA-Z0-9._-]+$/
|
||||||
|
|
||||||
|
if (customTag && customTag ==~ tagPattern) {
|
||||||
|
echo "✅ 使用自定义镜像 Tag: ${customTag}"
|
||||||
|
env.IMAGE_TAG = customTag
|
||||||
|
} else if (customTag) {
|
||||||
|
echo "⚠️ 自定义 Tag '${customTag}' 不符合规范,将使用默认生成的 Tag: ${defaultTag}"
|
||||||
|
|
||||||
|
def confirmed = true
|
||||||
|
timeout(time: 1, unit: 'MINUTES') {
|
||||||
|
try {
|
||||||
|
input(
|
||||||
|
message: """⚠️ Tag 命名不规范:
|
||||||
|
${customTag}
|
||||||
|
|
||||||
|
将使用自动生成的 Tag:
|
||||||
|
${defaultTag}
|
||||||
|
|
||||||
|
是否继续构建?""",
|
||||||
|
ok: '确认'
|
||||||
|
)
|
||||||
|
} catch (err) {
|
||||||
|
// 用户点击“取消”或中断
|
||||||
|
echo "🚫 用户取消构建"
|
||||||
|
confirmed = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (confirmed) {
|
||||||
|
echo "✅ 用户确认使用自动生成的 Tag:${defaultTag}"
|
||||||
|
env.IMAGE_TAG = defaultTag
|
||||||
|
} else {
|
||||||
|
error("流水线已终止。")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
env.IMAGE_TAG = defaultTag
|
||||||
|
echo "未输入自定义 Tag, 使用自动生成规则: ${env.IMAGE_TAG}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
5
k8s_yaml/kubectl 命令/常用命令.md
Normal file
5
k8s_yaml/kubectl 命令/常用命令.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# 查看pod日志
|
||||||
|
kubectl logs --tail=10 test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
|
||||||
|
# 查看指定命名空间的 Pod 和节点信息
|
||||||
|
kubectl get pods -n test-lessie -o wide
|
||||||
84
k8s_yaml/kubectl 命令/查看pod日志.md
Normal file
84
k8s_yaml/kubectl 命令/查看pod日志.md
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
## 对应关系总结
|
||||||
|
|
||||||
|
| Linux 命令 | kubectl logs 等效命令 |
|
||||||
|
|---------------:|---------------------|
|
||||||
|
| cat logfile | `kubectl logs <pod-name>` |
|
||||||
|
| tail -n 10 | `kubectl logs --tail=10 <pod-name>` |
|
||||||
|
| tail -f | `kubectl logs -f <pod-name>` |
|
||||||
|
| head -n 10 | `kubectl logs --tail=1000 <pod-name> \| head -n 10` |
|
||||||
|
| grep "error" | `kubectl logs <pod-name> \| grep "error"` |
|
||||||
|
|
||||||
|
> 说明:`head` 在 kubectl 中没有直接等价参数,常用方法是获取较多末尾行再用 `head` 截取,或在集群外使用日志聚合/查询工具。
|
||||||
|
|
||||||
|
|
||||||
|
## 查看 Pod 日志(示例:pod=test-flymoon-admin-deployment-964fb6b74-ns4br,namespace=`test-lessie`)
|
||||||
|
|
||||||
|
显示所有日志内容(等同于 cat)
|
||||||
|
```bash
|
||||||
|
kubectl logs test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
查看最后 10 行(等同于 tail -n 10)
|
||||||
|
```bash
|
||||||
|
kubectl logs --tail=10 test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
查看最后 50 行
|
||||||
|
```bash
|
||||||
|
kubectl logs --tail=50 test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
查看前 10 行(等同于 head -n 10)
|
||||||
|
```bash
|
||||||
|
kubectl logs --tail=1000 test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie | head -n 10
|
||||||
|
```
|
||||||
|
|
||||||
|
实时跟踪日志(等同于 tail -f)
|
||||||
|
```bash
|
||||||
|
kubectl logs -f test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
从最后 10 行开始实时跟踪
|
||||||
|
```bash
|
||||||
|
kubectl logs -f --tail=10 test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
实时跟踪并显示时间戳
|
||||||
|
```bash
|
||||||
|
kubectl logs -f --timestamps test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
查看最近 1 小时的日志
|
||||||
|
```bash
|
||||||
|
kubectl logs --since=1h test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
查看最近 10 分钟的日志
|
||||||
|
```bash
|
||||||
|
kubectl logs --since=10m test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
查看指定时间以来的日志(使用 RFC3339 时间格式)
|
||||||
|
```bash
|
||||||
|
kubectl logs --since=2024-01-15T10:00:00Z test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
查看之前实例的日志(Pod 重启后)
|
||||||
|
```bash
|
||||||
|
kubectl logs --previous test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
只查看特定容器的日志(Pod 有多个容器时)
|
||||||
|
```bash
|
||||||
|
kubectl logs -c <container-name> test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
带时间戳显示
|
||||||
|
```bash
|
||||||
|
kubectl logs --timestamps test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
|
|
||||||
|
限制日志字节数
|
||||||
|
```bash
|
||||||
|
kubectl logs --limit-bytes=10240 test-flymoon-admin-deployment-964fb6b74-ns4br -n test-lessie
|
||||||
|
```
|
||||||
20
k8s_yaml/test/Readme.md
Normal file
20
k8s_yaml/test/Readme.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
## Python
|
||||||
|
- 集群内 svc 域名:`http://test-lessie-agents-svc.test-lessie.svc.cluster.local:8000`
|
||||||
|
- 集群外部:`http://<Node_IP>:38000`
|
||||||
|
|
||||||
|
## Go
|
||||||
|
- 集群内部:`http://test-lessie-sourcing-api-svc.test-lessie.svc.cluster.local:8100`
|
||||||
|
- 集群外部:`http://<Node_IP>:30810`
|
||||||
|
|
||||||
|
## Java
|
||||||
|
- **flymoon-agent**
|
||||||
|
- 集群内部:`http://test-flymoon-agent-svc.test-lessie.svc.cluster.local:8070`
|
||||||
|
- 集群外部:`http://<Node_IP>:30807`
|
||||||
|
- **flymoon-admin**
|
||||||
|
- 集群内部:`http://test-flymoon-admin-svc.test-lessie.svc.cluster.local:8080`
|
||||||
|
- 集群外部:`http://<Node_IP>:30808`
|
||||||
|
- **flymoon-payment**
|
||||||
|
- 集群内部:`http://test-flymoon-payment-svc.test-lessie.svc.cluster.local:8090`
|
||||||
|
- 集群外部:`http://<Node_IP>:30809`
|
||||||
|
|
||||||
|
## 主站前端
|
||||||
20
k8s_yaml/test/network-test-pod.yaml
Normal file
20
k8s_yaml/test/network-test-pod.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: network-test-pod
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: network-test
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: network-tools
|
||||||
|
image: nicolaka/netshoot:latest
|
||||||
|
command: ["/bin/sh"]
|
||||||
|
args: ["-c", "sleep 3600"] # 保持运行1小时
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: "64Mi"
|
||||||
|
cpu: "50m"
|
||||||
|
limits:
|
||||||
|
memory: "128Mi"
|
||||||
|
cpu: "100m"
|
||||||
91
k8s_yaml/test/test-flymoon-admin.yaml
Normal file
91
k8s_yaml/test/test-flymoon-admin.yaml
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# ----------------------------
|
||||||
|
# Deployment
|
||||||
|
# ----------------------------
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: test-flymoon-admin-deployment
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-admin
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: test-flymoon-admin
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate # 滚动更新策略
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 1 # 最大新增副本数
|
||||||
|
maxUnavailable: 0 # 最大不可用副本数
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-admin
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: dxin-image-repository # 镜像仓库凭证Secret
|
||||||
|
volumes:
|
||||||
|
- name: flymoon-admin-logs-volume
|
||||||
|
hostPath:
|
||||||
|
path: /data/logs/flymoon-admin/
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
containers:
|
||||||
|
- name: test-flymoon-admin # 容器名称
|
||||||
|
image: uswccr.ccs.tencentyun.com/lessietest/flymoon-admin:v0.0.1 # 容器镜像
|
||||||
|
imagePullPolicy: IfNotPresent # 镜像拉取策略 ,有则不拉
|
||||||
|
env:
|
||||||
|
- name: POD_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: SPRING_PROFILES_ACTIVE
|
||||||
|
value: "s1"
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080 # 容器暴露的端口
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "100m" # 容器请求分配0.1个CPU核心(这不是实际占用,但调度会以这里进行参考)
|
||||||
|
memory: "1Gi" # 容器请求分配1Gi内存(这会实际预留)
|
||||||
|
limits:
|
||||||
|
cpu: "1" # 最多可以使用1个CPU核心
|
||||||
|
memory: "3Gi" # 容器最多可以使用3Gi内存
|
||||||
|
volumeMounts:
|
||||||
|
- name: flymoon-admin-logs-volume
|
||||||
|
mountPath: /app/logs/
|
||||||
|
subPathExpr: flymoon-admin-log-$(POD_NAME)
|
||||||
|
|
||||||
|
---
|
||||||
|
# ----------------------------
|
||||||
|
# Service
|
||||||
|
# 集群内部:http://test-flymoon-admin-svc.test-lessie.svc.cluster.local:8080
|
||||||
|
# 集群外部:http://<Node-IP>:30808
|
||||||
|
# ----------------------------
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: test-flymoon-admin-svc
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-admin
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
type: NodePort
|
||||||
|
selector: # 必须匹配 Deployment 的 labels 才能关联 Pod
|
||||||
|
app: test-flymoon-admin
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8080 # ClusterIP 内部端口
|
||||||
|
targetPort: 8080 # 容器端口
|
||||||
|
nodePort: 30808 # 节点对外端口(30000-32767)
|
||||||
|
|
||||||
91
k8s_yaml/test/test-flymoon-agent.yaml
Normal file
91
k8s_yaml/test/test-flymoon-agent.yaml
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# ----------------------------
|
||||||
|
# Deployment
|
||||||
|
# ----------------------------
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: test-flymoon-agent-deployment
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-agent
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: test-flymoon-agent
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate # 滚动更新策略
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 1 # 最大新增副本数
|
||||||
|
maxUnavailable: 0 # 最大不可用副本数
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-agent
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: dxin-image-repository # 镜像仓库凭证Secret
|
||||||
|
volumes:
|
||||||
|
- name: flymoon-agent-logs-volume
|
||||||
|
hostPath:
|
||||||
|
path: /data/logs/flymoon-agent/
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
containers:
|
||||||
|
- name: test-flymoon-agent # 容器名称
|
||||||
|
image: uswccr.ccs.tencentyun.com/lessietest/flymoon-agent:v0.0.1 # 容器镜像
|
||||||
|
imagePullPolicy: IfNotPresent # 镜像拉取策略 ,有则不拉
|
||||||
|
env:
|
||||||
|
- name: POD_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: SPRING_PROFILES_ACTIVE
|
||||||
|
value: "s1"
|
||||||
|
ports:
|
||||||
|
- containerPort: 8070 # 容器暴露的端口
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "100m" # 容器请求分配0.1个CPU核心(这不是实际占用,但调度会以这里进行参考)
|
||||||
|
memory: "1Gi" # 容器请求分配1Gi内存(这会实际预留)
|
||||||
|
limits:
|
||||||
|
cpu: "1" # 最多可以使用1个CPU核心
|
||||||
|
memory: "3Gi" # 容器最多可以使用3Gi内存
|
||||||
|
volumeMounts:
|
||||||
|
- name: flymoon-agent-logs-volume
|
||||||
|
mountPath: /app/logs/
|
||||||
|
subPathExpr: flymoon-agent-log-$(POD_NAME)
|
||||||
|
|
||||||
|
---
|
||||||
|
# ----------------------------
|
||||||
|
# Service
|
||||||
|
# 集群内部:http://test-flymoon-agent-svc.test-lessie.svc.cluster.local:8070
|
||||||
|
# 集群外部:http://<Node-IP>:30807
|
||||||
|
# ----------------------------
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: test-flymoon-agent-svc
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-agent
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
type: NodePort
|
||||||
|
selector: # 必须匹配 Deployment 的 labels 才能关联 Pod
|
||||||
|
app: test-flymoon-agent
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8070 # ClusterIP 内部端口
|
||||||
|
targetPort: 8070 # 容器端口
|
||||||
|
nodePort: 30807 # 节点对外端口(30000-32767)
|
||||||
|
|
||||||
91
k8s_yaml/test/test-flymoon-payment.yaml
Normal file
91
k8s_yaml/test/test-flymoon-payment.yaml
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# ----------------------------
|
||||||
|
# Deployment
|
||||||
|
# ----------------------------
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: test-flymoon-payment-deployment
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-payment
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: test-flymoon-payment
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate # 滚动更新策略
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 1 # 最大新增副本数
|
||||||
|
maxUnavailable: 0 # 最大不可用副本数
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-payment
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: dxin-image-repository # 镜像仓库凭证Secret
|
||||||
|
volumes:
|
||||||
|
- name: flymoon-payment-logs-volume
|
||||||
|
hostPath:
|
||||||
|
path: /data/logs/flymoon-payment/
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
containers:
|
||||||
|
- name: test-flymoon-payment # 容器名称
|
||||||
|
image: uswccr.ccs.tencentyun.com/lessietest/flymoon-payment:v0.0.1 # 容器镜像
|
||||||
|
imagePullPolicy: IfNotPresent # 镜像拉取策略 ,有则不拉
|
||||||
|
env:
|
||||||
|
- name: POD_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: SPRING_PROFILES_ACTIVE
|
||||||
|
value: "s1"
|
||||||
|
ports:
|
||||||
|
- containerPort: 8090 # 容器暴露的端口
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "100m" # 容器请求分配0.1个CPU核心(这不是实际占用,但调度会以这里进行参考)
|
||||||
|
memory: "1Gi" # 容器请求分配1Gi内存(这会实际预留)
|
||||||
|
limits:
|
||||||
|
cpu: "1" # 最多可以使用1个CPU核心
|
||||||
|
memory: "3Gi" # 容器最多可以使用3Gi内存
|
||||||
|
volumeMounts:
|
||||||
|
- name: flymoon-payment-logs-volume
|
||||||
|
mountPath: /app/logs/
|
||||||
|
subPathExpr: flymoon-payment-log-$(POD_NAME)
|
||||||
|
|
||||||
|
---
|
||||||
|
# ----------------------------
|
||||||
|
# Service
|
||||||
|
# 集群内部:http://test-flymoon-payment-svc.test-lessie.svc.cluster.local:8090
|
||||||
|
# 集群外部:http://<Node-IP>:30809
|
||||||
|
# ----------------------------
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: test-flymoon-payment-svc
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: test-flymoon-payment
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
spec:
|
||||||
|
type: NodePort
|
||||||
|
selector: # 必须匹配 Deployment 的 labels 才能关联 Pod
|
||||||
|
app: test-flymoon-payment
|
||||||
|
environment: test
|
||||||
|
project: flymoon
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8090 # ClusterIP 内部端口
|
||||||
|
targetPort: 8090 # 容器端口
|
||||||
|
nodePort: 30809 # 节点对外端口(30000-32767)
|
||||||
|
|
||||||
@@ -20,8 +20,8 @@ spec:
|
|||||||
strategy:
|
strategy:
|
||||||
type: RollingUpdate # 滚动更新策略
|
type: RollingUpdate # 滚动更新策略
|
||||||
rollingUpdate:
|
rollingUpdate:
|
||||||
maxSurge: 1 # 最大新增副本数
|
maxSurge: 1 # 最大新增副本数(先加)
|
||||||
maxUnavailable: 1 # 最大不可用副本数
|
maxUnavailable: 0 # 最大不可用副本数(不减)
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
@@ -65,8 +65,8 @@ spec:
|
|||||||
- containerPort: 8000 # 容器暴露的端口
|
- containerPort: 8000 # 容器暴露的端口
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: "1" # 容器请求分配1个CPU核心
|
cpu: "0.5" # 容器请求分配0.5个CPU核心(这不是实际占用,但调度会以这里进行参考)
|
||||||
memory: "2Gi" # 容器请求分配2Gi内存
|
memory: "2Gi" # 容器请求分配1Gi内存(这会实际预留)
|
||||||
limits:
|
limits:
|
||||||
cpu: "2" # 最多可以使用2个CPU核心
|
cpu: "2" # 最多可以使用2个CPU核心
|
||||||
memory: "8Gi" # 容器最多可以使用8Gi内存
|
memory: "8Gi" # 容器最多可以使用8Gi内存
|
||||||
@@ -84,6 +84,7 @@ spec:
|
|||||||
# Service
|
# Service
|
||||||
# 集群内部:http://test-lessie-agents-svc.test-lessie.svc.cluster.local:8000
|
# 集群内部:http://test-lessie-agents-svc.test-lessie.svc.cluster.local:8000
|
||||||
# 集群外部:http://<Node_IP>:38000
|
# 集群外部:http://<Node_IP>:38000
|
||||||
|
# curl -v -X POST http://43.153.12.208:30800/api/chat/stream -H "Content-Type: application/json" -d '{"message": "hello"}'
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
93
k8s_yaml/test/test-lessie-go-api.yaml
Normal file
93
k8s_yaml/test/test-lessie-go-api.yaml
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# ----------------------------
|
||||||
|
# Deployment
|
||||||
|
# ----------------------------
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: test-lessie-go-api-deployment
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: test-lessie-go-api
|
||||||
|
environment: test
|
||||||
|
project: lessie
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: test-lessie-go-api
|
||||||
|
environment: test
|
||||||
|
project: lessie
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate # 滚动更新策略
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 1 # 最大新增副本数
|
||||||
|
maxUnavailable: 0 # 最大不可用副本数
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: test-lessie-go-api
|
||||||
|
environment: test
|
||||||
|
project: lessie
|
||||||
|
spec:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: dxin-image-repository # 镜像仓库凭证Secret
|
||||||
|
volumes:
|
||||||
|
- name: go-logs-volume
|
||||||
|
hostPath:
|
||||||
|
path: /data/logs/lessie-go-api/
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
containers:
|
||||||
|
- name: test-lessie-go-api # 容器名称
|
||||||
|
image: uswccr.ccs.tencentyun.com/lessietest/go_lessie-sourcing-api:latest # 容器镜像
|
||||||
|
imagePullPolicy: IfNotPresent # 镜像拉取策略 ,有则不拉
|
||||||
|
env:
|
||||||
|
- name: POD_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: APP_ENV
|
||||||
|
value: "s1"
|
||||||
|
- name: APP_PORT
|
||||||
|
value: "8100"
|
||||||
|
ports:
|
||||||
|
- containerPort: 8100 # 容器暴露的端口
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "100m" # 容器请求分配0.1个CPU核心(这不是实际占用,但调度会以这里进行参考)
|
||||||
|
memory: "1.5Gi" # 容器请求分配1.5Gi内存(这会实际预留)
|
||||||
|
limits:
|
||||||
|
cpu: "1" # 最多可以使用1个CPU核心
|
||||||
|
memory: "3Gi" # 容器最多可以使用3Gi内存
|
||||||
|
volumeMounts:
|
||||||
|
- name: go-logs-volume
|
||||||
|
mountPath: /app/logs/
|
||||||
|
subPathExpr: go-log-$(POD_NAME)
|
||||||
|
|
||||||
|
---
|
||||||
|
# ----------------------------
|
||||||
|
# Service
|
||||||
|
# 集群内部:http://test-lessie-sourcing-api-svc.test-lessie.svc.cluster.local:8100
|
||||||
|
# 集群外部:http://<Node-IP>:30810
|
||||||
|
# ----------------------------
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: test-lessie-go-api-svc
|
||||||
|
namespace: test-lessie
|
||||||
|
labels:
|
||||||
|
app: test-lessie-go-api
|
||||||
|
environment: test
|
||||||
|
project: lessie
|
||||||
|
spec:
|
||||||
|
type: NodePort
|
||||||
|
selector: # 必须匹配 Deployment 的 labels 才能关联 Pod
|
||||||
|
app: test-lessie-go-api
|
||||||
|
environment: test
|
||||||
|
project: lessie
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8100 # ClusterIP 内部端口
|
||||||
|
targetPort: 8100 # 容器端口
|
||||||
|
nodePort: 30810 # 节点对外端口(30000-32767)
|
||||||
|
|
||||||
Reference in New Issue
Block a user