otto 2 years ago
parent
commit
a84aa16b2c
  1. 64
      Jenkinsfile
  2. 6
      README.md
  3. 1
      cmd/server/main.go
  4. 7
      cmd/server/wire_gen.go
  5. 10
      go.mod
  6. 16
      go.sum
  7. 44
      job.yaml
  8. 4
      pkg/gift/gift.go
  9. 4
      pkg/room/room.go
  10. 19
      test/configs/config
  11. 42
      test/configs/config.yaml
  12. 59
      test/job_test.go

64
Jenkinsfile vendored

@ -1,64 +0,0 @@
def buildService(serverName){
docker.withRegistry('https://registry.internal.jumaiyx.cn', 'docker-registry-internal-backend') {
def img = docker.build("jm/$serverName:${env.BUILD_ID}",".")
img.push()
}
}
pipeline {
agent any
environment {
// 服务名
SERVER_NAME = 'feedback'
// 镜像名称,对应K8S_FILE里面Deployment.containers的name
IMAGE_NAME = 'feedback'
// git路径
GIT_URL = 'http://git.gz.internal.jumaiyx.cn/job/room-server-clear.git'
// 分支
GIT_BRANCH = '*/master'
// kubectl执行文件
K8S_FILE = 'feedback-dev.yaml'
// k8s deployment名称,对应K8S_FILE里面Deployment的name
K8S_DEPLOYMENT = 'feedback-deployment'
}
stages {
stage('git代码拉取') {
steps {
checkout([$class: 'GitSCM', branches: [[name: "${env.GIT_BRANCH}"]], extensions: [], userRemoteConfigs: [[url: "${env.GIT_URL}"]]])
echo 'git代码拉取 成功'
}
}
stage('docker镜像打包') {
steps {
echo "镜像版本:${env.BUILD_ID}"
buildService("${env.SERVER_NAME}")
echo 'docker镜像打包'
}
}
stage('传入k8s-master') {
steps {
//sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: "${env.K8S_FILE}")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo '将yaml传入k8s-master'
}
}
stage('部署服务') {
steps {
//sh "ssh root@192.168.1.156 kubectl apply -f /usr/local/k8s/${env.K8S_FILE}"
echo '部署服务'
//sh '''if if (( ${env.BUILD_ID} == 1 ))
//then
// ssh root@192.168.1.156 kubectl apply -f /usr/local/k8s/${env.K8S_FILE}
// echo '部署服务'
//fi'''
}
}
stage('更新image') {
steps {
sh "ssh root@192.168.1.156 kubectl set image Deployment/${env.K8S_DEPLOYMENT} ${env.IMAGE_NAME}=registry.internal.jumaiyx.cn/jm/${env.SERVER_NAME}:${env.BUILD_ID} -n dev"
echo '部署服务'
}
}
}
}

6
README.md

@ -2,9 +2,9 @@
```sh ```sh
docker login -u devops-internal -p yVZUucBSMTJ8HDct https://registry.internal.jumaiyx.cn docker login -u devops-internal -p yVZUucBSMTJ8HDct https://registry.internal.jumaiyx.cn
docker build -t registry.internal.jumaiyx.cn/jm/message:latest . docker build -t registry.internal.jumaiyx.cn/job/room-hot-compute:latest .
docker tag registry.internal.jumaiyx.cn/jm/message:latest registry.internal.jumaiyx.cn/jm/message:v1.0.0 docker tag registry.internal.jumaiyx.cn/job/room-hot-compute:latest registry.internal.jumaiyx.cn/job/room-hot-compute:v1.0.0
docker push registry.internal.jumaiyx.cn/jm/message:v1.0.0 docker push registry.internal.jumaiyx.cn/job/room-hot-compute:v1.0.0
``` ```

1
cmd/server/main.go

@ -35,4 +35,5 @@ func main() {
ctx := context.TODO() ctx := context.TODO()
l.WithContext(ctx) l.WithContext(ctx)
biz.Check(ctx) biz.Check(ctx)
} }

7
cmd/server/wire_gen.go

@ -10,6 +10,7 @@ import (
"git.gz.internal.jumaiyx.cn/jm/jmproto/conf" "git.gz.internal.jumaiyx.cn/jm/jmproto/conf"
"git.gz.internal.jumaiyx.cn/job/room-hot-compute/internal/biz" "git.gz.internal.jumaiyx.cn/job/room-hot-compute/internal/biz"
"git.gz.internal.jumaiyx.cn/job/room-hot-compute/internal/data" "git.gz.internal.jumaiyx.cn/job/room-hot-compute/internal/data"
"git.gz.internal.jumaiyx.cn/job/room-hot-compute/pkg/gift"
"git.gz.internal.jumaiyx.cn/job/room-hot-compute/pkg/room" "git.gz.internal.jumaiyx.cn/job/room-hot-compute/pkg/room"
"git.gz.internal.jumaiyx.cn/pkg/log" "git.gz.internal.jumaiyx.cn/pkg/log"
) )
@ -22,11 +23,15 @@ func wireApp(server *conf.Server, confData *conf.Data, logger log.Logger) (*biz.
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
giftClient, err := gift.NewGiftService(logger)
if err != nil {
return nil, nil, err
}
dataData, cleanup, err := data.NewData(confData, logger) dataData, cleanup, err := data.NewData(confData, logger)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
bizBiz := biz.NewBiz(logger, roomClient, dataData) bizBiz := biz.NewBiz(logger, roomClient, giftClient, dataData)
return bizBiz, func() { return bizBiz, func() {
cleanup() cleanup()
}, nil }, nil

10
go.mod

@ -3,14 +3,16 @@ module git.gz.internal.jumaiyx.cn/job/room-hot-compute
go 1.18 go 1.18
require ( require (
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221114080632-fdff5af719f3 git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221115073332-c5d64953ace0
git.gz.internal.jumaiyx.cn/pkg/config v0.0.0-20221014090146-8fd721834886 git.gz.internal.jumaiyx.cn/pkg/config v0.0.0-20221014090146-8fd721834886
git.gz.internal.jumaiyx.cn/pkg/k8s-client v0.0.0-20221111084006-d3558f68d33b git.gz.internal.jumaiyx.cn/pkg/k8s-client v0.0.0-20221115074539-90a2644b4f64
git.gz.internal.jumaiyx.cn/pkg/kubediscovery v0.0.0-20221104101240-01cad3403ec0 git.gz.internal.jumaiyx.cn/pkg/kubediscovery v0.0.0-20221104101240-01cad3403ec0
git.gz.internal.jumaiyx.cn/pkg/log v0.0.0-20221029084114-f67ca5716ca1 git.gz.internal.jumaiyx.cn/pkg/log v0.0.0-20221029084114-f67ca5716ca1
github.com/go-redis/redis/v8 v8.11.5 github.com/go-redis/redis/v8 v8.11.5
github.com/google/wire v0.5.0 github.com/google/wire v0.5.0
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
k8s.io/api v0.25.4
k8s.io/apimachinery v0.25.4
) )
require ( require (
@ -55,14 +57,12 @@ require (
golang.org/x/text v0.4.0 // indirect golang.org/x/text v0.4.0 // indirect
golang.org/x/time v0.2.0 // indirect golang.org/x/time v0.2.0 // indirect
google.golang.org/appengine v1.6.7 // indirect google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20221111202108-142d8a6fa32e // indirect google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1 // indirect
google.golang.org/grpc v1.50.1 // indirect google.golang.org/grpc v1.50.1 // indirect
google.golang.org/protobuf v1.28.1 // indirect google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.25.4 // indirect
k8s.io/apimachinery v0.25.4 // indirect
k8s.io/client-go v0.25.4 // indirect k8s.io/client-go v0.25.4 // indirect
k8s.io/klog/v2 v2.80.1 // indirect k8s.io/klog/v2 v2.80.1 // indirect
k8s.io/kube-openapi v0.0.0-20221110221610-a28e98eb7c70 // indirect k8s.io/kube-openapi v0.0.0-20221110221610-a28e98eb7c70 // indirect

16
go.sum

@ -1,15 +1,15 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221114074402-8ee109365a6b h1:PeQrex+iaICUQCmPhhcyryTjPDur4HwLbtxViXfdoBw= git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221115073332-c5d64953ace0 h1:xoBeBJykjioV0wo/d5hOmMXDztgwFIU5SvrpRYFMZjM=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221114074402-8ee109365a6b/go.mod h1:RuwVCwjm2L1MfZAePy5exPb/0OKHglXM+Q5lXrcdGxs= git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221115073332-c5d64953ace0/go.mod h1:RuwVCwjm2L1MfZAePy5exPb/0OKHglXM+Q5lXrcdGxs=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221114080632-fdff5af719f3 h1:ZAnktqr9aXVILpDrCBKLIizI9HU9CWuLz+Q8snJUoXk=
git.gz.internal.jumaiyx.cn/jm/jmproto v0.0.0-20221114080632-fdff5af719f3/go.mod h1:RuwVCwjm2L1MfZAePy5exPb/0OKHglXM+Q5lXrcdGxs=
git.gz.internal.jumaiyx.cn/pkg/config v0.0.0-20221014090146-8fd721834886 h1:LP4psj3ygJEKL6748ZQPNwYnYPmbo8dDwtwU08coRiw= git.gz.internal.jumaiyx.cn/pkg/config v0.0.0-20221014090146-8fd721834886 h1:LP4psj3ygJEKL6748ZQPNwYnYPmbo8dDwtwU08coRiw=
git.gz.internal.jumaiyx.cn/pkg/config v0.0.0-20221014090146-8fd721834886/go.mod h1:yEnzjNrnPNIr0Zq926QiJrbyReS+VZqX5bmkYhnSV7I= git.gz.internal.jumaiyx.cn/pkg/config v0.0.0-20221014090146-8fd721834886/go.mod h1:yEnzjNrnPNIr0Zq926QiJrbyReS+VZqX5bmkYhnSV7I=
git.gz.internal.jumaiyx.cn/pkg/id-encode v0.0.0-20221018014421-fe47b648265b h1:Bb+j4SrJMb00+QKQO1FcCDDOxzTnoBZCi2n0DrT39lE= git.gz.internal.jumaiyx.cn/pkg/id-encode v0.0.0-20221018014421-fe47b648265b h1:Bb+j4SrJMb00+QKQO1FcCDDOxzTnoBZCi2n0DrT39lE=
git.gz.internal.jumaiyx.cn/pkg/id-encode v0.0.0-20221018014421-fe47b648265b/go.mod h1:+1j9TQXFahHrK3TYJjXLuuDNCqKRscAWR2fD1ZhZE0c= git.gz.internal.jumaiyx.cn/pkg/id-encode v0.0.0-20221018014421-fe47b648265b/go.mod h1:+1j9TQXFahHrK3TYJjXLuuDNCqKRscAWR2fD1ZhZE0c=
git.gz.internal.jumaiyx.cn/pkg/k8s-client v0.0.0-20221111084006-d3558f68d33b h1:dfhLVPDgTb8R5a5zs4/Rin6e6kdfvuGK0/m4BpNvLJw= git.gz.internal.jumaiyx.cn/pkg/k8s-client v0.0.0-20221115073038-b4deb8b66870 h1:bdr+ZSnt3TKRWZMzEazTImMfX6JH4QZ9ic7mIrvbh9U=
git.gz.internal.jumaiyx.cn/pkg/k8s-client v0.0.0-20221111084006-d3558f68d33b/go.mod h1:PjyxKfTWowQjJcim7h5DB+9pE7gI0U7BYx2z200hVyc= git.gz.internal.jumaiyx.cn/pkg/k8s-client v0.0.0-20221115073038-b4deb8b66870/go.mod h1:PjyxKfTWowQjJcim7h5DB+9pE7gI0U7BYx2z200hVyc=
git.gz.internal.jumaiyx.cn/pkg/k8s-client v0.0.0-20221115074539-90a2644b4f64 h1:9SsbZJ5M29DkH2k8iYjM4GpOnegxN2WXgakq0SxO4Hk=
git.gz.internal.jumaiyx.cn/pkg/k8s-client v0.0.0-20221115074539-90a2644b4f64/go.mod h1:PjyxKfTWowQjJcim7h5DB+9pE7gI0U7BYx2z200hVyc=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085437-f3a4ed57181c h1:C/1lKDrxi2xM2BPGG843kEcmZivhOdEr7Eg86bDIBVY= git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085437-f3a4ed57181c h1:C/1lKDrxi2xM2BPGG843kEcmZivhOdEr7Eg86bDIBVY=
git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085437-f3a4ed57181c/go.mod h1:TujX5RTIJ6vz8QYG1R6JwssH5DHGrAVpdGBaWG+uVqY= git.gz.internal.jumaiyx.cn/pkg/kafka v0.0.0-20221010085437-f3a4ed57181c/go.mod h1:TujX5RTIJ6vz8QYG1R6JwssH5DHGrAVpdGBaWG+uVqY=
git.gz.internal.jumaiyx.cn/pkg/kubediscovery v0.0.0-20221104101240-01cad3403ec0 h1:G3Hb4Bz9Ku3hSkIIZZu33iN+CNqPEnjVbsOa+MVnat4= git.gz.internal.jumaiyx.cn/pkg/kubediscovery v0.0.0-20221104101240-01cad3403ec0 h1:G3Hb4Bz9Ku3hSkIIZZu33iN+CNqPEnjVbsOa+MVnat4=
@ -290,8 +290,8 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20221111202108-142d8a6fa32e h1:azcyH5lGzGy7pkLCbhPe0KkKxsM7c6UA/FZIXImKE7M= google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1 h1:jCw9YRd2s40X9Vxi4zKsPRvSPlHWNqadVkpbMsCPzPQ=
google.golang.org/genproto v0.0.0-20221111202108-142d8a6fa32e/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=

44
job.yaml

@ -1,44 +1,16 @@
apiVersion: apps/v1 apiVersion: batch/v1
kind: Deployment kind: Job
metadata: metadata:
name: feedback-deployment name: room-hot-compute-job
namespace: dev namespace: dev
labels:
app: feedback
spec: spec:
replicas: 2 # 节点资源 ttlSecondsAfterFinished: 10
selector: activeDeadlineSeconds: 10
matchLabels:
app: feedback
template: template:
metadata: # 资源的元数据/属性
labels: # 设定资源的标签
app: feedback
spec: spec:
containers: containers:
- image: registry.internal.jumaiyx.cn/jm/feedback:1 # 自动化版本往后配置 - name: room-hot-compute-job
name: feedback image: registry.internal.jumaiyx.cn/job/room-hot-compute:v1.0.0
imagePullPolicy: Always restartPolicy: Never
ports:
- name: grpc
containerPort: 9000
protocol: TCP
imagePullSecrets: imagePullSecrets:
- name: registry-harbor - name: registry-harbor
---
apiVersion: v1
kind: Service
metadata:
name: feedback-service # 改名字对应服务发现serviceName
namespace: dev
labels:
name: feedback
spec:
type: ClusterIP
ports:
- name: grpc
port: 9000
targetPort: grpc
protocol: TCP
selector:
app: feedback

4
pkg/gift/gift.go

@ -3,13 +3,13 @@ package gift
import ( import (
"context" "context"
v1 "git.gz.internal.jumaiyx.cn/jm/jmproto/gift/v1" v1 "git.gz.internal.jumaiyx.cn/jm/jmproto/gift/v1"
k8s_client "git.gz.internal.jumaiyx.cn/pkg/k8s-client" "git.gz.internal.jumaiyx.cn/pkg/k8s-client"
"git.gz.internal.jumaiyx.cn/pkg/kubediscovery" "git.gz.internal.jumaiyx.cn/pkg/kubediscovery"
"git.gz.internal.jumaiyx.cn/pkg/log" "git.gz.internal.jumaiyx.cn/pkg/log"
) )
func NewGiftService(log log.Logger) (v1.GiftClient, error) { func NewGiftService(log log.Logger) (v1.GiftClient, error) {
discovery, err := kubediscovery.Discovery(context.TODO(), log, "gift-service", kubediscovery.Namespace(k8s_client.DevNamespace)) discovery, err := kubediscovery.Discovery(context.TODO(), log, "gift-service", kubediscovery.Namespace(k8sclient.DevNamespace))
if err != nil { if err != nil {
log.Errorf("Connect room service failed:%v", err) log.Errorf("Connect room service failed:%v", err)
return nil, err return nil, err

4
pkg/room/room.go

@ -3,13 +3,13 @@ package room
import ( import (
"context" "context"
v1 "git.gz.internal.jumaiyx.cn/jm/jmproto/room/v1" v1 "git.gz.internal.jumaiyx.cn/jm/jmproto/room/v1"
k8s_client "git.gz.internal.jumaiyx.cn/pkg/k8s-client" "git.gz.internal.jumaiyx.cn/pkg/k8s-client"
"git.gz.internal.jumaiyx.cn/pkg/kubediscovery" "git.gz.internal.jumaiyx.cn/pkg/kubediscovery"
"git.gz.internal.jumaiyx.cn/pkg/log" "git.gz.internal.jumaiyx.cn/pkg/log"
) )
func NewRoomService(log log.Logger) (v1.RoomClient, error) { func NewRoomService(log log.Logger) (v1.RoomClient, error) {
discovery, err := kubediscovery.Discovery(context.TODO(), log, "room-service", kubediscovery.Namespace(k8s_client.DevNamespace)) discovery, err := kubediscovery.Discovery(context.TODO(), log, "room-service", kubediscovery.Namespace(k8sclient.DevNamespace))
if err != nil { if err != nil {
log.Errorf("Connect room service failed:%v", err) log.Errorf("Connect room service failed:%v", err)
return nil, err return nil, err

19
test/configs/config

@ -0,0 +1,19 @@
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1Ea3lOekF4TXpRek9Wb1hEVE15TURreU5EQXhNelF6T1Zvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS1VGClBZdjVCdlRYLzlXdjZhWU9vWmM5cUtnclVnQjRzZFBWYVVJMFFBRlV1cUhEeE1RMGdBc1RBL2xtUkxZL0NJRm8KS21pOHNYR1J4Wmh2Lytqd01iKzB6U0oxNzd5RVpGSmQyZlQ3QkRkRHdJVkdNRnVUYytUN2xnNzdLVXFENHBSMgp1Mm1hcmRuWGs3cmtzNUR0alg1QUdhdW45VWRiMmRrb3orYmc5aC9XWTB6NjczUysvcVBnUzBER1o3bUtUTm5zCjdQaXdYbDV2MFNqUDM0ejRNRjAxU0g1Y3RxQm12OUhUOERvL0pMRjlkNUVaaGtPWlBuL1RiTjZqSGRKenZqTzUKbjU4T1ZQQ3VKUGhrbm1VUE1pZDJISU1ncEdqMUN3NWJYQXdDZ0RmeVpuNG15WEJ6eU0wb0FSazBYbUd3QXpWegpkQ0g4d2ZGL2lPWi81SGpZaGswQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFBRlJRZEdnaENaNUFqckFidjJOenUvUzJ2cXAKRGQ3Z3FJUytXYVdTVDNoUXRYTjl2UUpiN3dGWktJb3l6Y3hZOUtOeldjT3Z5V05UZnliK2Z4dFI3RHJpRDV6WApUWngyZWdZSlN3R3Y3T0hPU0VGVHpTSXBRTlBLNURhejZ4b0ZsUE85M1lyZ1o1VTd0bVlRN3FTOUZXV1VWR3hZCk42TFpjbEtrYTM4MEFZRzd2TlZZNFdacHZDVG9Ed2xsb2JMOE85WVdWdmp2TGw1TDAwL201MDNNZTViREEydVEKSjdPa1dENGtiL2Rob0paQjdaOWZId0tWaTgxYUkxNm9ERlAwbTR5YWQvckZBS3FHUlcxdVpLTXNYK29JL0ttVApVcHp0QStzSXhZZXlBK1VaSXJoN1NjSkZ3amVHdE1YUkJIM0RRUzRZc05SdHkxUnZjUnJXSk1uU3Z1MD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://192.168.1.156:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lJTFV6blJtKzZqUkV3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TWpBNU1qY3dNVE0wTXpsYUZ3MHlNekE1TWpjd01UTTBOREJhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTNYOFZrc2x3N3AxQUF3aG4KbW5nRHU3NWRUUUpXUm1EN014a3ZPN0ZiWFFXVTVHUDg3bHpEV2pMeUt2L1NqZTZ5a1VTTkE5Z21kTmRrOTY0RgpnYWpyRnRHSUZXVzM2NVFXeitRT25ZVWFHQk9VRHQ2VFloOWlSRXJIRjhsR3NRVW0vVi9NemttMXpkY284ZEtHCm5VbktDWDhyMW5yVm53UkRiRTE2VEozcFRhK2tXdmVHYlFoRW5PZHpBMkJFTDl3cWR4bUljNm1GMnFla0ZDVXoKMlF1cGtMR3JOMlBEVGd2YmdwcS9pbTdldUIyYXNLczE2RjByMElrMk83VHhoK2twZkQrazVTLzdUdTEyWGttVwpkNWIyZHlVMFlCZFZDRUJFV1JiK3ROU3oxQXlVdEZQbEkxRmdabWZaajdKRGFkYzlDMG9ML2hoOFA0UzU3NFlECnFjaEZxUUlEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFJNVVaM2Fkb20vdFdRSDA4NERXeWZoRG0zVllJL0FoeDJ2dwozV0Z1S29KNFBsVzhQRDg4YkhLbDNOZTdrMktMa3diaitUUWFrQ3JQK21IY2k5UGVHRzNibjJ6Z3duSm5yekJzCkFTY01lTGh2TzVRbkV3Y0FqemJtYUg2SFVBUk8vQ1dwRjJma2hHQVV3SDlDZWQxN1RTZkRuVGUxKzRxaHkwaU8KSFEvMUs2YjFQVEFGQXhoY0k5NFp1Nzk2TEFObXhPWGpUeG5sSTVTa1Z6VGROTi9zUm40MnRMckEzeDRWWktrNApWNmE5Y3luZ3dvYzBXRmxNaU51aG1wOVo1VkNTOGpNT1E5dXljQnQvc09RcWpaYXhpMksrVUZsdFZNbk04cFNNCnZGaWtwbEorblFieVdPeWUwZkwzZ0YvQ1lERUxlOXEyeHlodGwrNyt0WUp3Sy9xWU5Ocz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBM1g4VmtzbHc3cDFBQXdobm1uZ0R1NzVkVFFKV1JtRDdNeGt2TzdGYlhRV1U1R1A4CjdsekRXakx5S3YvU2plNnlrVVNOQTlnbWROZGs5NjRGZ2FqckZ0R0lGV1czNjVRV3orUU9uWVVhR0JPVUR0NlQKWWg5aVJFckhGOGxHc1FVbS9WL016a20xemRjbzhkS0duVW5LQ1g4cjFuclZud1JEYkUxNlRKM3BUYStrV3ZlRwpiUWhFbk9kekEyQkVMOXdxZHhtSWM2bUYycWVrRkNVejJRdXBrTEdyTjJQRFRndmJncHEvaW03ZXVCMmFzS3MxCjZGMHIwSWsyTzdUeGgra3BmRCtrNVMvN1R1MTJYa21XZDViMmR5VTBZQmRWQ0VCRVdSYit0TlN6MUF5VXRGUGwKSTFGZ1ptZlpqN0pEYWRjOUMwb0wvaGg4UDRTNTc0WURxY2hGcVFJREFRQUJBb0lCQUVhR1IxVTBoSnZGUC9OMwpRcDJoWnZicFZ3WEZIN2xLK2RDOFRSakJrT2llZFZqL0tUS3dJSmRncjFEWG9iQUZkNS9mWnRMNWlNMGRKQTNrCnYrWVg1YnFmUHFncGVoVXRVdElndURLWmhjUnl2MnE0bmM3WlZVMlBUYk1hS0VNRzgvSXJCYWdOT2pEdk9COC8KUEJOcXdrU2gxRkIzVGZ0U3ZURUh2bEFVMjRzYk1NVWo3SkNQRDRjTXhocEc5VlI3dG1ZdzFkQ2MwcXM3L0FHRQp4aTg2NyszdXdYc1c2cWVOaytWY0tNdjJ6N0lNZ2g4Wk9aZnMwMlBIU1VVeTFQN0RnR1ZxenhvWnV2MjV3SG90Cll1eGdIbWxwdXFFRDdJcVBTQ1pTbTNPYldlODRvN3d4eTBKWnpsNUJGL1REUWtEdjM4NWRJaFVndlR3KzhMNU8KV21nU0dRRUNnWUVBM2lQbEptcy9sbm9XbUdzVytHM3RaOU1DRWI0WVFkTnk3RVRtM29VeXp3K0I5TVlOMW0vdQp5RnE5UjlITEdkU1hoS1YyMVlKUTBTTGcxc255WVNKV3F6UXloanJEalMxb2gyV2ZOYnBZWXhUL2wyQW1EcEFYCm93YUgyU0xZRm9sSlVtVE1NZE1nWEp2Rk8rREtqeFN3MDYzeXEvTExGeVZLR3lPOXVnWEJaMkVDZ1lFQS8wSVIKWEVKZVFMUFl0Q0l1Q25YOS9JOXF1azBvVHR3NDliaUpyUUlVQlY4Skg4cWJOTy81SXNZY2tyOGNIOExIQzBQTwpRcEttYzIyWTV1MmJJYnNEbEZEckt0bGdQQWpOVTFOdFd0RU9tUFY1UlBxUDdzaGxEZk1qNmRWNTlzZ0dxVEdRCmtKU01oczE1ekJJcURPNVVNeFpZbTlrcUczSE1EQ0NCVlFJVXEwa0NnWUJtMWRFb0p2QUo5anp0bEczTzFmelkKV291VHNSL0RvV0tMVkI1WWx1cjloaDFRTmp1RHNNK211ckx6UTRDMVZZQkxMTnBGWHcyUXM0ZkloemFJbHYvdQpRN3k3L1FvNEdmUlE4Yzl4YlBHcjlMV1oyeTNqQWZ1ZlFjK3p5bmlrZml1T1ZCRmZZM0NRenAvUTUzQitLa0x0Cnk1SVMzZFA4eEF0NVl1TmE4WDBtSVFLQmdRQ2RBSkFaQlNGZi9yN05uVEJnY3M2MEo2cG55TW1BSitoSkN5WnoKYVpIUzgrOXl4SFhPaThQYlphdHhmMmJYQ2tEUFp2ZFk3MGErUEswTmJSdzhGUUZRbXF6ckFDVTNCOXJ5NDUraAplbkRXR0Racy9Rakd3QytYOHZNbUFvNHdBanhHbVJ2b01kWjFtN0RNbW1lTzZKQ1ZrNnNRd1BRclNVVk9PRGdVCmgyRWJNUUtCZ0RQamNEdjN6SjJJVjFrY01kbjNEMWVyQjBFR0I1M2NYeHFoa0pET3Rqd3RUV3V2dHNIYzI0R3gKNmFQODI1QllUV2NQNEJ6dEFIN1A5RkE2QmlBa0t3T3lrWFR5dDg2RTBUZUM5L3FtSW9EY255aHdReHVCZlB3UQo2bVhxeVFLZFBOTnVoKzlReDBEcGxHMTkzVTFid0pya3k3b3hKc0dackg1OUdGK3VTT3J0Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==

42
test/configs/config.yaml

@ -0,0 +1,42 @@
server:
name: room
http:
addr: 0.0.0.0:8000
timeout: 30
grpc:
addr: 0.0.0.0:9000
timeout: 30
data:
database:
source: "host=192.168.1.156 user=metachat password=metachat dbname=feedback port=15433 sslmode=disable TimeZone=Asia/Shanghai"
# source: postgresql://metachat:metachat@127.0.0.1:15432/room
redis:
addr: 192.168.1.156:16378
password: MM5ZsXL0
read_timeout: 1
write_timeout: 1
etcd:
host: "127.0.0.1:20000"
log:
level: "debug"
name: "room"
kafka:
addr:
- "127.0.0.1:9092"
amqp:
host: 192.168.1.156:5672
username: jm
password: jm123456
id_encode:
uid:
salt: "test"
min_length: 8
rtctoken:
app_id: 6eeb2e6be9a141d1b0db920f36a5a9f3
app_certificate: 80438856882e4563841d56f3cefeb763
privilege_expiration: 3600
token_expiration: 3600

59
test/job_test.go

@ -0,0 +1,59 @@
package test
import (
"context"
k8sclient "git.gz.internal.jumaiyx.cn/pkg/k8s-client"
"git.gz.internal.jumaiyx.cn/pkg/log"
v1 "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"testing"
)
// pods=$(kubectl get pods --selector=job-name=room-hot-compute-job --output=jsonpath='{.items[*].metadata.name}')
// echo $pods
func TestCreateJob(t *testing.T) {
l := log.DefaultLogger()
job, err := k8sclient.NewJob(k8sclient.DevNamespace, l)
if err != nil {
t.Fatal(err)
}
ctx := context.TODO()
ttl := int32(60)
ttls := int64(60)
_, err = job.Create(ctx, &v1.Job{
ObjectMeta: metav1.ObjectMeta{
Name: "room-hot-compute-job",
Namespace: k8sclient.DevNamespace,
},
Spec: v1.JobSpec{
ActiveDeadlineSeconds: &ttls,
TTLSecondsAfterFinished: &ttl,
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Name: "room-hot-compute-job",
Labels: map[string]string{
"app": "room-job",
},
},
Spec: corev1.PodSpec{
RestartPolicy: corev1.RestartPolicyNever,
Containers: []corev1.Container{
{
Name: "room-hot-compute-job",
Image: "registry.internal.jumaiyx.cn/job/room-hot-compute:v1.0.0",
},
},
ImagePullSecrets: []corev1.LocalObjectReference{
{
Name: k8sclient.DockerRegistryHarbor,
},
},
},
},
},
})
if err != nil {
t.Fatal(err)
}
}
Loading…
Cancel
Save