# k8s_examples_vttablet-pod-template.yaml
kind: Pod
apiVersion: v1
metadata:
  name: vttablet-{{uid}}
  labels:
    component: vttablet
    keyspace: "{{keyspace}}"
    shard: "{{shard_label}}"
    tablet: "{{alias}}"
    app: vitess
spec:
  containers:
    - name: vttablet
      image: vitess/lite:v2.0.0-alpha5
      volumeMounts:
        - name: syslog
          mountPath: /dev/log
        - name: vtdataroot
          mountPath: /vt/vtdataroot
        - name: certs
          readOnly: true
          mountPath: /etc/ssl/certs
      resources:
        limits:
          memory: "1Gi"
          cpu: "500m"
      command:
        - bash
        - "-c"
        - >-
          set -e

          mysql_socket="$VTDATAROOT/{{tablet_subdir}}/mysql.sock"

          mkdir -p $VTDATAROOT/tmp

          chown -R vitess /vt

          while [ ! -e $mysql_socket ]; do
          echo "[$(date)] waiting for $mysql_socket" ;
          sleep 1 ;
          done

          su -p -s /bin/bash -c "mysql -u vt_dba -S $mysql_socket
          -e 'CREATE DATABASE IF NOT EXISTS vt_{{keyspace}}'" vitess

          su -p -s /bin/bash -c "/vt/bin/vttablet
          -topo_implementation etcd
          -etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
          -log_dir $VTDATAROOT/tmp
          -alsologtostderr
          -port {{port}}
          -grpc_port {{grpc_port}}
          -service_map 'grpc-queryservice,grpc-tabletmanager,grpc-updatestream'
          -binlog_player_protocol grpc
          -tablet-path {{alias}}
          -tablet_hostname $(hostname -i)
          -init_keyspace {{keyspace}}
          -init_shard {{shard}}
          -target_tablet_type {{tablet_type}}
          -mysqlctl_socket $VTDATAROOT/mysqlctl.sock
          -db-config-app-uname vt_app
          -db-config-app-dbname vt_{{keyspace}}
          -db-config-app-charset utf8
          -db-config-dba-uname vt_dba
          -db-config-dba-dbname vt_{{keyspace}}
          -db-config-dba-charset utf8
          -db-config-repl-uname vt_repl
          -db-config-repl-dbname vt_{{keyspace}}
          -db-config-repl-charset utf8
          -db-config-filtered-uname vt_filtered
          -db-config-filtered-dbname vt_{{keyspace}}
          -db-config-filtered-charset utf8
          -enable-rowcache
          -rowcache-bin /usr/bin/memcached
          -rowcache-socket $VTDATAROOT/{{tablet_subdir}}/memcache.sock
          -health_check_interval 5s
          -restore_from_backup {{backup_flags}}" vitess
    - name: mysql
      image: vitess/lite:v2.0.0-alpha5
      volumeMounts:
        - name: syslog
          mountPath: /dev/log
        - name: vtdataroot
          mountPath: /vt/vtdataroot
      resources:
        limits:
          memory: "1Gi"
          cpu: "500m"
      command:
        - sh
        - "-c"
        - >-
          mkdir -p $VTDATAROOT/tmp &&
          chown -R vitess /vt

          su -p -c "/vt/bin/mysqlctld
          -log_dir $VTDATAROOT/tmp
          -alsologtostderr
          -tablet_uid {{uid}}
          -socket_file $VTDATAROOT/mysqlctl.sock
          -db-config-app-uname vt_app
          -db-config-app-dbname vt_{{keyspace}}
          -db-config-app-charset utf8
          -db-config-dba-uname vt_dba
          -db-config-dba-dbname vt_{{keyspace}}
          -db-config-dba-charset utf8
          -db-config-repl-uname vt_repl
          -db-config-repl-dbname vt_{{keyspace}}
          -db-config-repl-charset utf8
          -db-config-filtered-uname vt_filtered
          -db-config-filtered-dbname vt_{{keyspace}}
          -db-config-filtered-charset utf8
          -bootstrap_archive mysql-db-dir_10.0.13-MariaDB.tbz" vitess
        # The bootstrap archive above contains an empty mysql data dir
        # with user permissions set up as required by Vitess. The archive is
        # included in the Docker image.
      env:
        - name: EXTRA_MY_CNF
          value: /vt/config/mycnf/master_mariadb.cnf
  volumes:
    - name: syslog
      hostPath: {path: /dev/log}
    - name: vtdataroot
      emptyDir: {}
    - name: certs
      hostPath: {path: /etc/ssl/certs}