Netflix conductor打包
自定义 tar包基础准备
下载对应的JDK版本安装到Linux:
具体步骤如下:
step1:下载jdk11,地址:https://docs.oracle.com/en/java/javase/11/
step2:配置jdk11:
解压:tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz -C /root/jdk11/jdk-11.0.15.1
#解压到指定目录
step3:编辑环境变量:vi /etc/profile
添加一下内容:
#JAVA_HOME
export JAVA_HOME=/root/jdk11/jdk-11.0.15.1
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
step4:加载环境变量生效:source /etc/profile
step5:查看环境变量是否生效:
[root@master conductor-tar]# echo $PATH
/data/istio-1.16.2/bin:/root/jdk11/jdk-11.0.15.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
step6:查看环境变量是否配置成功
[root@master conductor-tar]# java -version
java version "11.0.15.1" 2022-04-22 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.15.1+2-LTS-10)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.15.1+2-LTS-10, mixed mode)
step7:解压congductorImage文件 到目录/server/下,执行:docker build -t conductor-server.tar .
请完成复制这段话尤其后面的点别忘了
X86环境打包
安装以上步骤更改对应的JDK11 jar包,如果是x86的就正常使用https://www.oracle.com/java/technologies/downloads/#java11
Arm环境打包
安装以上步骤更改对应的JDK11 jar包,如果是arm的就正常使用https://www.oracle.com/java/technologies/downloads/#java11
K8S部署流程
部署conductor
step1:根据上面的流程,生成tar,推送tar到harbor仓库或者直接使用
docker save -o conductor-server.tar
docker tag conductor-server.tar ip:port/目录/ conductor-server.tar(例如:127.0.0.1:1180/test/ conductor-server.tar)
docker push ip:port/目录/ conductor-server.tar
step2: yaml 编写
apiVersion: apps/v1
kind: Deployment
metadata:
name: conductor-server
namespace: conductor
labels:
app: conductor-server
spec:
selector:
matchLabels:
app: conductor-server
replicas: 1
template:
metadata:
labels:
app: conductor-server
spec:
containers:
- name: conductor-server
image: conductor/native-conductor-server:latest
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 0.1
memory: 4Gi
limits:
cpu: 0.2
memory: 4Gi
command:
- /bin/bash
args:
- /app/bootstrap.sh
env:
- name: CONFIG_PROP
value: "config-postgres.properties"
ports:
- containerPort: 8080
name: http
volumeMounts:
- name: db-config
mountPath: /app/config/config-postgres.properties
subPath: config-postgres.properties
- name: bootstrap
mountPath: /app/bootstrap.sh
subPath: bootstrap.sh
volumes:
- name: db-config
configMap:
name: server-db-config
- name: bootstrap
configMap:
name: server-bootstrap
restartPolicy: Always
---
kind: ConfigMap
apiVersion: v1
metadata:
name: server-db-config
namespace: conductor
data:
config-postgres.properties: |
# Servers.
#conductor.grpc-server.enabled=false
#memory
# Database persistence model.
#conductor.db.type=memory
# Dynomite Cluster details.
# format is host:port:rack separated by semicolon
#conductor.redis.hosts=native-redis.conductor.svc.cluster.local:6379
# Namespace for the keys stored in Dynomite/Redis
#conductor.redis.workflowNamespacePrefix=conductor
# Namespace prefix for the dyno queues
#conductor.redis.queueNamespacePrefix=conductor_queues
# No. of threads allocated to dyno-queues (optional)
#queues.dynomite.threads=10
#Database persistence type.
#conductor.redis.queuesNonQuorumPort=22122
#pgsql
conductor.db.type=postgres
spring.datasource.url=jdbc:postgresql://native-postgres.conductor.svc.cluster.local:5432/conductor
spring.datasource.username=postgres
spring.datasource.password=postgres
# Hikari pool sizes are -1 by default and prevent startup
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=2
# Elastic search instance indexing is enabled.
conductor.indexing.enabled=false
# Transport address to elasticsearch
conductor.elasticsearch.url=http://elasticsearch7-single.conductor.svc.cluster.local:9200
# Name of the elasticsearch cluster
conductor.elasticsearch.indexName=conductor
conductor.elasticsearch.clusterHealthColor=yellow
# Load sample kitchen sink workflow
# loadSample=true
---
kind: ConfigMap
apiVersion: v1
metadata:
name: server-bootstrap
namespace: conductor
data:
bootstrap.sh: |
#!/bin/bash
mkdir -p /app/logs
touch /app/logs/server.log
/app/startup.sh & tail -f /app/logs/server.log
---
apiVersion: v1
kind: Service
metadata:
name: conductor-server
namespace: conductor
spec:
selector:
app: conductor-server
type: NodePort
ports:
- name: http
protocol: TCP
port: 8080