Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
340 lines (331 sloc) 10.9 KB
apiVersion: v1
kind: Template
labels:
template: zipkin-mysql-template
message: |-
The following service(s) have been created in your project: ${DATABASE_SERVICE_NAME}.
Username: ${MYSQL_USER}
Password: ${MYSQL_PASSWORD}
Database Name: ${MYSQL_DATABASE}
Connection URL: mysql://${DATABASE_SERVICE_NAME}:3306/
For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/5.7/README.md.
metadata:
annotations:
description: |-
MySQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/5.7/README.md.
NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template.
objects:
- apiVersion: v1
kind: Secret
metadata:
name: ${DATABASE_SERVICE_NAME}
labels:
project: zipkin-mysql
stringData:
database-password: ${MYSQL_PASSWORD}
database-root-password: ${MYSQL_ROOT_PASSWORD}
database-user: ${MYSQL_USER}
- apiVersion: v1
kind: Service
metadata:
labels:
project: zipkin-mysql
name: zipkin
spec:
ports:
- port: 80
protocol: TCP
targetPort: 9411
selector:
project: zipkin-mysql
type: LoadBalancer
- apiVersion: v1
kind: Service
metadata:
name: ${DATABASE_SERVICE_NAME}
labels:
project: zipkin-mysql
spec:
ports:
- name: mysql
port: 3306
selector:
name: ${DATABASE_SERVICE_NAME}
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ${DATABASE_SERVICE_NAME}
labels:
project: zipkin-mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: ${VOLUME_CAPACITY}
- apiVersion: v1
kind: ConfigMap
metadata:
labels:
project: zipkin-mysql
name: zipkin-mysql-cnf
data:
custom.cnf: |
[mysqld]
sql-mode=""
- apiVersion: v1
kind: ConfigMap
metadata:
labels:
project: zipkin-mysql
name: zipkin-mysql-initdb
data:
init.sql: |
CREATE TABLE IF NOT EXISTS zipkin_spans (
`trace_id` BIGINT NOT NULL,
`id` BIGINT NOT NULL,
`name` VARCHAR(255) NOT NULL,
`parent_id` BIGINT,
`debug` BIT(1),
`start_ts` BIGINT COMMENT 'Span.timestamp(): epoch micros used for endTs query and to implement TTL',
`duration` BIGINT COMMENT 'Span.duration(): micros used for minDuration and maxDuration query'
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
ALTER TABLE zipkin_spans ADD UNIQUE KEY(`trace_id`, `id`) COMMENT 'ignore insert on duplicate';
ALTER TABLE zipkin_spans ADD INDEX(`trace_id`, `id`) COMMENT 'for joining with zipkin_annotations';
ALTER TABLE zipkin_spans ADD INDEX(`trace_id`) COMMENT 'for getTracesByIds';
ALTER TABLE zipkin_spans ADD INDEX(`name`) COMMENT 'for getTraces and getSpanNames';
ALTER TABLE zipkin_spans ADD INDEX(`start_ts`) COMMENT 'for getTraces ordering and range';
CREATE TABLE IF NOT EXISTS zipkin_annotations (
`trace_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.trace_id',
`span_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.id',
`a_key` VARCHAR(255) NOT NULL COMMENT 'BinaryAnnotation.key or Annotation.value if type == -1',
`a_value` BLOB COMMENT 'BinaryAnnotation.value(), which must be smaller than 64KB',
`a_type` INT NOT NULL COMMENT 'BinaryAnnotation.type() or -1 if Annotation',
`a_timestamp` BIGINT COMMENT 'Used to implement TTL; Annotation.timestamp or zipkin_spans.timestamp',
`endpoint_ipv4` INT COMMENT 'Null when Binary/Annotation.endpoint is null',
`endpoint_ipv6` BINARY(16) COMMENT 'Null when Binary/Annotation.endpoint is null, or no IPv6 address',
`endpoint_port` SMALLINT COMMENT 'Null when Binary/Annotation.endpoint is null',
`endpoint_service_name` VARCHAR(255) COMMENT 'Null when Binary/Annotation.endpoint is null'
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
ALTER TABLE zipkin_annotations ADD UNIQUE KEY(`trace_id`, `span_id`, `a_key`, `a_timestamp`) COMMENT 'Ignore insert on duplicate';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`, `span_id`) COMMENT 'for joining with zipkin_spans';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`) COMMENT 'for getTraces/ByIds';
ALTER TABLE zipkin_annotations ADD INDEX(`endpoint_service_name`) COMMENT 'for getTraces and getServiceNames';
ALTER TABLE zipkin_annotations ADD INDEX(`a_type`) COMMENT 'for getTraces';
ALTER TABLE zipkin_annotations ADD INDEX(`a_key`) COMMENT 'for getTraces';
CREATE TABLE IF NOT EXISTS zipkin_dependencies (
`day` DATE NOT NULL,
`parent` VARCHAR(255) NOT NULL,
`child` VARCHAR(255) NOT NULL,
`call_count` BIGINT
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
ALTER TABLE zipkin_dependencies ADD UNIQUE KEY(`day`, `parent`, `child`);
- apiVersion: v1
kind: DeploymentConfig
metadata:
labels:
project: zipkin-mysql
name: zipkin
spec:
replicas: 1
selector:
project: zipkin-mysql
template:
metadata:
labels:
project: zipkin-mysql
spec:
containers:
- env:
- name: STORAGE_PORT_9042_TCP_ADDR
value: zipkin-cassandra:9411
- name: STORAGE_PORT_3306_TCP_ADDR
value: ${DATABASE_SERVICE_NAME}:3306
- name: MYSQL_USER
value: ${MYSQL_USER}
- name: MYSQL_PASS
value: ${MYSQL_PASSWORD}
- name: STORAGE_TYPE
value: mysql
- name: TRANSPORT_TYPE
value: http
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: openzipkin/zipkin:1.19.2
name: zipkin
readinessProbe:
httpGet:
path: /api/v1/services
port: 9411
initialDelaySeconds: 5
resources:
limits:
cpu: "400m"
memory: "800Mi"
requests:
cpu: "200m"
memory: "200Mi"
triggers:
- type: ConfigChange
- apiVersion: v1
kind: DeploymentConfig
metadata:
labels:
project: zipkin-mysql
name: ${DATABASE_SERVICE_NAME}
spec:
replicas: 1
selector:
name: ${DATABASE_SERVICE_NAME}
strategy:
type: Recreate
recreateParams:
post:
failurePolicy: Abort
execNewPod:
containerName: mysql
command:
- /bin/sh
- -c
- hostname && sleep 10 && /opt/rh/rh-mysql57/root/usr/bin/mysql -h $DATABASE_SERVICE_NAME -u $MYSQL_USER -D $MYSQL_DATABASE -p$MYSQL_PASSWORD -P 3306 < /docker-entrypoint-initdb.d/init.sql && echo Initialized database
env:
- name: DATABASE_SERVICE_NAME
value: ${DATABASE_SERVICE_NAME}
volumes:
- mysql-init-script
template:
metadata:
labels:
name: ${DATABASE_SERVICE_NAME}
spec:
containers:
- env:
- name: MYSQL_USER
valueFrom:
secretKeyRef:
key: database-user
name: ${DATABASE_SERVICE_NAME}
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
key: database-password
name: ${DATABASE_SERVICE_NAME}
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: database-root-password
name: ${DATABASE_SERVICE_NAME}
- name: MYSQL_DATABASE
value: ${MYSQL_DATABASE}
image: ' '
imagePullPolicy: IfNotPresent
livenessProbe:
initialDelaySeconds: 30
tcpSocket:
port: 3306
timeoutSeconds: 1
name: mysql
ports:
- containerPort: 3306
readinessProbe:
exec:
command:
- /bin/sh
- -i
- -c
- MYSQL_PWD="$MYSQL_PASSWORD" mysql -h 127.0.0.1 -u $MYSQL_USER -D $MYSQL_DATABASE
-e 'SELECT 1'
initialDelaySeconds: 5
timeoutSeconds: 1
resources:
limits:
memory: ${MEMORY_LIMIT}
volumeMounts:
- mountPath: /var/lib/mysql/data
name: ${DATABASE_SERVICE_NAME}-data
- mountPath: /docker-entrypoint-initdb.d/
name: mysql-init-script
- mountPath: /etc/mysql/conf.d/
name: mysql-confd
volumes:
- name: ${DATABASE_SERVICE_NAME}-data
persistentVolumeClaim:
claimName: ${DATABASE_SERVICE_NAME}
- configMap:
name: zipkin-mysql-initdb
name: mysql-init-script
- configMap:
name: zipkin-mysql-cnf
name: mysql-confd
triggers:
- imageChangeParams:
automatic: true
containerNames:
- mysql
from:
kind: ImageStreamTag
name: mysql:${MYSQL_VERSION}
namespace: ${NAMESPACE}
type: ImageChange
- type: ConfigChange
- apiVersion: v1
kind: Route
metadata:
labels:
project: zipkin-mysql
name: zipkin
spec:
port:
targetPort: 9411
to:
kind: Service
name: zipkin
parameters:
- description: Maximum amount of memory the container can use.
displayName: Memory Limit
name: MEMORY_LIMIT
required: true
value: 512Mi
- description: The OpenShift Namespace where the ImageStream resides.
displayName: Namespace
name: NAMESPACE
value: openshift
- description: The name of the OpenShift Service exposed for the database.
displayName: Database Service Name
name: DATABASE_SERVICE_NAME
required: true
value: zipkin-mysql
- description: Username for MySQL user that will be used for accessing the database.
displayName: MySQL Connection Username
name: MYSQL_USER
required: true
value: zipkin
- description: Password for the MySQL connection user.
displayName: MySQL Connection Password
from: '[a-zA-Z0-9]{16}'
generate: expression
name: MYSQL_PASSWORD
required: true
- description: Password for the MySQL root user.
displayName: MySQL root user Password
from: '[a-zA-Z0-9]{16}'
generate: expression
name: MYSQL_ROOT_PASSWORD
required: true
- description: Name of the MySQL database accessed.
displayName: MySQL Database Name
name: MYSQL_DATABASE
required: true
value: zipkin
- description: Volume space available for data, e.g. 512Mi, 2Gi.
displayName: Volume Capacity
name: VOLUME_CAPACITY
required: true
value: 1Gi
- description: Version of MySQL image to be used (5.5, 5.6, 5.7, or latest).
displayName: Version of MySQL Image
name: MYSQL_VERSION
required: true
value: "5.7"