服务的相关链接
软件开源连接Git hub
软件官方说明文档
官方软件下载包
docker hub 参考文档
kafka-eagel服务部署完日志会有报错
DruidDataSource.Druid-ConnectionPool-Create-2037200746 - ERROR - create connection error, url: jdbc:mysql://mysql:3306/kafkaeagle?useUnicode=true&characterEncoding=UTF8, errorCode 0, state 08001 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
需要使用MYSQL5.6的版本,以下是mysql的yaml部署文件
service.yaml文件做暴露服务端口,type类型根据需求定义
apiVersion: v1
kind: Service
metadata:
labels:
app: my-mysql
name: my-mysql
spec:
type: NodePort
ports:
- port: 3306
nodePort: 30006
protocol: TCP
targetPort: 3306
selector:
app: my-mysql
secret.yaml文件做数据库的用户名密码
apiVersion: v1
kind: Secret
metadata:
name: my-mysql
type: Opaque
data:
mysql-root-password: eWRhdGE=
mysql-password: eWRhdGE=
Pvc.yaml做mysql的动态存储
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-mysql
labels:
app: my-mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: course-nfs-storage
deployment.yaml应用部署文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-mysql
labels:
app: my-mysql
spec:
selector:
matchLabels:
app: my-mysql
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: my-mysql
spec:
containers:
- image: mysql:5.6
name: my-mysql
args:
- "--ignore-db-dir=lost+found"
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: mysql-root-password
name: my-mysql
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
key: mysql-password
name: my-mysql
- name: MYSQL_USER
value: kafka
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: my-mysql
需要创建数据库使用mysql作为源数据存放,需要先创建ke数据库,并赋权,没有kafka认证
#创建用户和库
create database ke character set 'UTF8';
create user kafka identified by 'kafka';
grant all privileges on ke.* to 'kafka'@'%' identified by 'kafka' with grant option;
grant all privileges on ke.* to 'kafka'@'localhost' identified by 'kafka' with grant option;
flush privileges;
完成mysql5.6数据库部署,并创建库和授予权限,那就开始部署服务,以下是eagel的yaml文件
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s.eip.work/layer: web
k8s.eip.work/name: kafka-eagle
name: kafka-eagle
namespace: qb-kafka
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.eip.work/layer: web
k8s.eip.work/name: kafka-eagle
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
k8s.eip.work/layer: web
k8s.eip.work/name: kafka-eagle
spec:
containers:
- env:
- name: ZKSERVER01
value: 'kafka-1589357149-zookeeper-headless:2181'
- name: DBTYPE
value: mysql
- name: DBUSERNAME
value: root
- name: DBPASSWORD
value: ydata
- name: DBURL
value: 'my-mysql.qb-kafka:3306'
image: 'wyfsxs/kafka-eagle:v1.4'
imagePullPolicy: Always
name: kafka-eagle
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: aliyun
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
annotations:
k8s.eip.work/workload: kafka-eagle
labels:
k8s.eip.work/layer: web
k8s.eip.work/name: kafka-eagle
name: kafka-eagle
namespace: qb-kafka
spec:
externalTrafficPolicy: Cluster
ports:
- name: bz2ppr
nodePort: 30048
port: 8048
protocol: TCP
targetPort: 8048
selector:
k8s.eip.work/layer: web
k8s.eip.work/name: kafka-eagle
sessionAffinity: None
type: NodePort
参数说明:
ZKSERVER01 kafka集群1的zook
ZKSERVER02 kafka集群2的zook
DBTYPE 数据库类型 空是sqllite,可以是mysql
DBUSERNAME mysql的话需要填,用户名
DBPASSWORD mysql的话需要填,密码
DBURL mysql的话需要填,数据库地址 到端口 127.0.0.1:3306
EAGEPORT 工程的端口,空的话,默认8048
KERBEROSFLAG 是否开启kafka安全,保留字段
KERBEROSDIR kafka keytab的地址,保留字段
一些需要输入的参数环境
Dockerfile也可以自己定制
FROM frolvlad/alpine-oraclejdk8:slim
ENV ZKSERVER01=""
ENV ZKSERVER02=""
ENV DBTYPE=""
ENV DBUSERNAME=""
ENV DBPASSWORD=""
ENV DBURL=""
ENV EAGEPORT=""
ENV KERBEROSFLAG=""
ENV KERBEROSDIR=""
ADD kafka-eagle /opt/kafka-eagle
ENV KE_HOME=/opt/kafka-eagle
WORKDIR /opt/kafka-eagle
VOLUME /opt/kafka-eagle
CMD /bin/sh /opt/kafka-eagle/bin/entrypoint.sh -a "${ZKSERVER01}" -b "${ZKSERVER02}" -c "${DBTYPE}" -d "${DBUSERNAME}" -e "${DBPASSWORD}" -f "${DBURL}" -p "${EAGEPORT}" -s "${KERBEROSFLAG}" -q "${KERBEROSDIR}"