diff --git a/container/dockerfiles/Dockerfile b/container/dockerfiles/Dockerfile index 1ffe27e4..fa1850e3 100644 --- a/container/dockerfiles/Dockerfile +++ b/container/dockerfiles/Dockerfile @@ -1,43 +1,28 @@ FROM openjdk:16-jdk-alpine3.13 -LABEL author="yangvipguang" - -ENV VERSION 2.3.1 - -RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories -RUN apk add --no-cache --virtual .build-deps \ - font-adobe-100dpi \ - ttf-dejavu \ - fontconfig \ - curl \ - apr \ - apr-util \ - apr-dev \ - tomcat-native \ - && apk del .build-deps - -RUN apk add --no-cache tini - - +LABEL author="fengxsong" +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --no-cache tini +ENV VERSION 2.4.2 +WORKDIR /opt/ ENV AGENT_HOME /opt/agent/ - -WORKDIR /tmp - -COPY $JAR_PATH/kafka-manager.jar app.jar -# COPY application.yml application.yml ##默认使用helm 挂载,防止敏感配置泄露 - COPY docker-depends/config.yaml $AGENT_HOME COPY docker-depends/jmx_prometheus_javaagent-0.15.0.jar $AGENT_HOME ENV JAVA_AGENT="-javaagent:$AGENT_HOME/jmx_prometheus_javaagent-0.15.0.jar=9999:$AGENT_HOME/config.yaml" ENV JAVA_HEAP_OPTS="-Xms1024M -Xmx1024M -Xmn100M " ENV JAVA_OPTS="-verbose:gc \ - -XX:MaxMetaspaceSize=256M -XX:+DisableExplicitGC -XX:+UseStringDeduplication \ - -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:-UseContainerSupport" + -XX:MaxMetaspaceSize=256M -XX:+DisableExplicitGC -XX:+UseStringDeduplication \ + -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:-UseContainerSupport" + +RUN wget https://github.com/didi/Logi-KafkaManager/releases/download/v${VERSION}/kafka-manager-${VERSION}.tar.gz && \ + tar xvf kafka-manager-${VERSION}.tar.gz && \ + mv kafka-manager-${VERSION}/kafka-manager.jar /opt/app.jar && \ + rm -rf kafka-manager-${VERSION}* + EXPOSE 8080 9999 ENTRYPOINT ["tini", "--"] -CMD ["sh","-c","java -jar $JAVA_AGENT $JAVA_HEAP_OPTS $JAVA_OPTS app.jar --spring.config.location=application.yml"] +CMD [ "sh", "-c", "java -jar $JAVA_AGENT $JAVA_HEAP_OPTS $JAVA_OPTS app.jar --spring.config.location=application.yml"] \ No newline at end of file diff --git a/container/helm/Chart.lock b/container/helm/Chart.lock new file mode 100644 index 00000000..04958b2d --- /dev/null +++ b/container/helm/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: mysql + repository: https://charts.bitnami.com/bitnami + version: 8.6.3 +digest: sha256:d250c463c1d78ba30a24a338a06a551503c7a736621d974fe4999d2db7f6143e +generated: "2021-06-24T11:34:54.625217+08:00" diff --git a/container/helm/Chart.yaml b/container/helm/Chart.yaml index 7161f735..088abfb0 100644 --- a/container/helm/Chart.yaml +++ b/container/helm/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: didi-km -description: A Helm chart for Kubernetes +description: Logi-KafkaManager # A chart can be either an 'application' or a 'library' chart. # @@ -21,4 +21,9 @@ version: 0.1.0 # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "2.4.2" +dependencies: + - condition: mysql.enabled + name: mysql + repository: https://charts.bitnami.com/bitnami + version: 8.x.x diff --git a/container/helm/charts/mysql-8.6.3.tgz b/container/helm/charts/mysql-8.6.3.tgz new file mode 100644 index 00000000..c5fde140 Binary files /dev/null and b/container/helm/charts/mysql-8.6.3.tgz differ diff --git a/container/helm/templates/configmap.yaml b/container/helm/templates/configmap.yaml index ffc75ec5..25940cc6 100644 --- a/container/helm/templates/configmap.yaml +++ b/container/helm/templates/configmap.yaml @@ -1,7 +1,17 @@ +{{- define "datasource.mysql" -}} +{{- if .Values.mysql.enabled }} + {{- printf "%s-mysql" (include "didi-km.fullname" .) -}} +{{- else -}} + {{- printf "%s" .Values.externalDatabase.host -}} +{{- end -}} +{{- end -}} + apiVersion: v1 kind: ConfigMap metadata: - name: km-cm + name: {{ include "didi-km.fullname" . }}-configs + labels: + {{- include "didi-km.labels" . | nindent 4 }} data: application.yml: | server: @@ -17,9 +27,9 @@ data: name: kafkamanager datasource: kafka-manager: - jdbc-url: jdbc:mysql://xxxxx:3306/kafka-manager?characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false - username: admin - password: admin + jdbc-url: jdbc:mysql://{{ include "datasource.mysql" . }}:3306/{{ .Values.mysql.auth.database }}?characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false + username: {{ .Values.mysql.auth.username }} + password: {{ .Values.mysql.auth.password }} driver-class-name: com.mysql.jdbc.Driver main: allow-bean-definition-overriding: true diff --git a/container/helm/templates/deployment.yaml b/container/helm/templates/deployment.yaml index 4754b53e..80ab2c29 100644 --- a/container/helm/templates/deployment.yaml +++ b/container/helm/templates/deployment.yaml @@ -42,6 +42,10 @@ spec: protocol: TCP resources: {{- toYaml .Values.resources | nindent 12 }} + volumeMounts: + - name: configs + mountPath: /tmp/application.yml + subPath: application.yml {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} @@ -54,3 +58,7 @@ spec: tolerations: {{- toYaml . | nindent 8 }} {{- end }} + volumes: + - name: configs + configMap: + name: {{ include "didi-km.fullname" . }}-configs diff --git a/container/helm/values.yaml b/container/helm/values.yaml index a5f49e40..8eadbb1a 100644 --- a/container/helm/values.yaml +++ b/container/helm/values.yaml @@ -5,13 +5,14 @@ replicaCount: 1 image: - repository: docker.io/yangvipguang/km + repository: docker.io/fengxsong/logi-kafka-manager pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. - tag: "v18" + tag: "2.4.2" imagePullSecrets: [] nameOverride: "" +# fullnameOverride must set same as release name fullnameOverride: "km" serviceAccount: @@ -77,3 +78,16 @@ nodeSelector: {} tolerations: [] affinity: {} + +# more configurations are set with configmap in file template/configmap.yaml +externalDatabase: + host: "" +mysql: + # if enabled is set to false, then you should manually specified externalDatabase.host + enabled: true + architecture: standalone + auth: + rootPassword: "s3cretR00t" + database: "logi_kafka_manager" + username: "logi_kafka_manager" + password: "n0tp@55w0rd"