Nextcloud in K8s: MVP
This is the minumum needed to run a multinode customer in kubernetes. Each customer will run in their own namespace with a nextcloud container and a redis container. There is a proxysql cluster running in its own namespace, used by all customer. This is a monorepo that uses kustomize to allow using this repo for both prod and test (and other things we can think of in the future).
This commit is contained in:
commit
1c192c41fd
8
customers/base/kustomization.yaml
Normal file
8
customers/base/kustomization.yaml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
resources:
|
||||||
|
- nextcloud-configmap.yml
|
||||||
|
- nextcloud-deployment.yml
|
||||||
|
- nextcloud-ingress.yml
|
||||||
|
- nextcloud-service.yml
|
||||||
|
- redis-deployment.yml
|
||||||
|
- redis-service.yml
|
||||||
|
- s3-service.yml
|
173
customers/base/nextcloud-configmap.yml
Normal file
173
customers/base/nextcloud-configmap.yml
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: nextcloud-configmap
|
||||||
|
data:
|
||||||
|
000-default.conf: |
|
||||||
|
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so
|
||||||
|
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerAdmin webmaster@localhost
|
||||||
|
DocumentRoot /var/www/html
|
||||||
|
# Log format config
|
||||||
|
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" common
|
||||||
|
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
|
||||||
|
|
||||||
|
# Header config
|
||||||
|
RemoteIPHeader X-Forwarded-For
|
||||||
|
RemoteIPInternalProxy 37.156.195.14
|
||||||
|
RemoteIPInternalProxy 37.156.195.19
|
||||||
|
RemoteIPInternalProxy 37.156.195.84
|
||||||
|
RemoteIPInternalProxy 37.156.195.92
|
||||||
|
#ErrorDocument 404 /404.html
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined env=forwarded
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||||
|
<Directory /var/www/html/>
|
||||||
|
LimitRequestBody 0
|
||||||
|
Require all granted
|
||||||
|
AllowOverride All
|
||||||
|
Options FollowSymLinks MultiViews
|
||||||
|
|
||||||
|
<IfModule mod_dav.c>
|
||||||
|
Dav off
|
||||||
|
</IfModule>
|
||||||
|
</Directory>
|
||||||
|
</VirtualHost>
|
||||||
|
<VirtualHost *:443>
|
||||||
|
ServerAdmin webmaster@localhost
|
||||||
|
DocumentRoot /var/www/html
|
||||||
|
# Log format config
|
||||||
|
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" common
|
||||||
|
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
|
||||||
|
|
||||||
|
# Header config
|
||||||
|
RemoteIPHeader X-Forwarded-For
|
||||||
|
RemoteIPInternalProxy 37.156.195.14
|
||||||
|
RemoteIPInternalProxy 37.156.195.19
|
||||||
|
RemoteIPInternalProxy 37.156.195.84
|
||||||
|
RemoteIPInternalProxy 37.156.195.92
|
||||||
|
#ErrorDocument 404 /404.html
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined env=forwarded
|
||||||
|
SSLEngine On
|
||||||
|
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
|
||||||
|
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
|
||||||
|
<Directory /var/www/html/>
|
||||||
|
LimitRequestBody 0
|
||||||
|
Require all granted
|
||||||
|
AllowOverride All
|
||||||
|
Options FollowSymLinks MultiViews
|
||||||
|
|
||||||
|
<IfModule mod_dav.c>
|
||||||
|
Dav off
|
||||||
|
</IfModule>
|
||||||
|
</Directory>
|
||||||
|
</VirtualHost>
|
||||||
|
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
|
||||||
|
config.php: |
|
||||||
|
<?php
|
||||||
|
$CONFIG = array (
|
||||||
|
'memcache.local' => '\\OC\\Memcache\\APCu',
|
||||||
|
'appstoreenabled' => false,
|
||||||
|
'apps_paths' =>
|
||||||
|
array (
|
||||||
|
0 =>
|
||||||
|
array (
|
||||||
|
'path' => '/var/www/html/apps',
|
||||||
|
'url' => '/apps',
|
||||||
|
'writable' => false,
|
||||||
|
),
|
||||||
|
1 =>
|
||||||
|
array (
|
||||||
|
'path' => '/var/www/html/custom_apps',
|
||||||
|
'url' => '/custom_apps',
|
||||||
|
'writable' => true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'memcache.distributed' => '\\OC\\Memcache\\Redis',
|
||||||
|
'memcache.locking' => '\\OC\\Memcache\\Redis',
|
||||||
|
'redis' =>
|
||||||
|
array (
|
||||||
|
'host' => '{{REDIS_HOST}}',
|
||||||
|
'port' => 6379,
|
||||||
|
),
|
||||||
|
'forcessl' => true,
|
||||||
|
'overwriteprotocol' => 'https',
|
||||||
|
'objectstore' =>
|
||||||
|
array (
|
||||||
|
'class' => '\\OC\\Files\\ObjectStore\\S3',
|
||||||
|
'arguments' =>
|
||||||
|
array (
|
||||||
|
'bucket' => '{{OBJECTSTORE_S3_BUCKET}}',
|
||||||
|
'key' => '{{OBJECTSTORE_S3_KEY}}',
|
||||||
|
'secret' => '{{OBJECTSTORE_S3_SECRET}}',
|
||||||
|
'region' => '{{OBJECTSTORE_S3_REGION}}',
|
||||||
|
'hostname' => '{{OBJECTSTORE_S3_HOST}}',
|
||||||
|
'port' => '',
|
||||||
|
'objectPrefix' => 'urn:oid:',
|
||||||
|
'autocreate' => false,
|
||||||
|
'use_ssl' => true,
|
||||||
|
'use_path_style' => true,
|
||||||
|
'legacy_auth' => false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'csrf.disabled' => true,
|
||||||
|
'passwordsalt' => '{{NEXTCLOUD_PASSWORDSALT}}',
|
||||||
|
'secret' => '{{NEXTCLOUD_SECRET}}',
|
||||||
|
'trusted_domains' =>
|
||||||
|
array (
|
||||||
|
0 => '{{NEXTCLOUD_TRUSTED_DOMAINS}}'
|
||||||
|
),
|
||||||
|
'config_is_read_only' => true,
|
||||||
|
'datadirectory' => '/var/www/html/data',
|
||||||
|
'dbhost' => '{{MYSQL_HOST}}:{{MYSQL_PORT}}',
|
||||||
|
'dbname' => '{{MYSQL_DATABASE}}',
|
||||||
|
'dbpassword' => '{{MYSQL_PASSWORD}}',
|
||||||
|
'dbport' => '{{MYSQL_PORT}}',
|
||||||
|
'dbtableprefix' => 'oc_',
|
||||||
|
'dbtype' => 'mysql',
|
||||||
|
'dbuser' => '{{MYSQL_USER}}',
|
||||||
|
'gs.enabled' => 'true',
|
||||||
|
'gs.federation' => 'global',
|
||||||
|
'gs.trustedHosts' => ['*.sunet.se'],
|
||||||
|
'gss.jwt.key' => '{{GSS_JWT_KEY}}',
|
||||||
|
'gss.master.url' => '{{GSS_MASTER_URL}}',
|
||||||
|
'gss.mode' => 'slave',
|
||||||
|
'gss.user.discovery.module' => '\\OCA\\GlobalSiteSelector\\UserDiscoveryModules\\ManualUserMapping',
|
||||||
|
'installed' => true,
|
||||||
|
'instanceid' => '{{NEXTCLOUD_INSTANCEID}}',
|
||||||
|
'log_type' => 'file',
|
||||||
|
'loglevel' => 0,
|
||||||
|
'lookup_server' => '{{LOOKUP_SERVER}}',
|
||||||
|
'mail_domain' => '{{MAIL_DOMAIN}}',
|
||||||
|
'mail_from_address' => '{{MAIL_FROM_ADDRESS}}',
|
||||||
|
'mail_sendmailmode' => 'smtp',
|
||||||
|
'mail_smtpauth' => 1,
|
||||||
|
'mail_smtpauthtype' => 'LOGIN',
|
||||||
|
'mail_smtphost' => '{{MAIL_SMTPHOST}}',
|
||||||
|
'mail_smtpmode' => 'smtp',
|
||||||
|
'mail_smtpname' => '{{MAIL_SMTPNAME}}',
|
||||||
|
'mail_smtppassword' => '{{MAIL_SMTPPASSWORD}}',
|
||||||
|
'mail_smtpport' => '587',
|
||||||
|
'mail_smtpsecure' => 'tls',
|
||||||
|
'mail_template_class' => 'OCA\DriveEmailTemplate\EMailTemplate',
|
||||||
|
'mysql.utf8mb4' => true,
|
||||||
|
'overwritehost' => '{{SITE_NAME}}',
|
||||||
|
'overwrite.cli.url' => 'https://{{SITE_NAME}}',
|
||||||
|
'templatedirectory' => '',
|
||||||
|
'skeletondirectory' => '',
|
||||||
|
'twofactor_enforced' => 'true',
|
||||||
|
'twofactor_enforced_groups' =>
|
||||||
|
array (
|
||||||
|
0 => 'admin',
|
||||||
|
),
|
||||||
|
'version' => '{{NEXTCLOUD_VERSION_STRING}}',
|
||||||
|
'app_install_overwrite' =>
|
||||||
|
array (
|
||||||
|
0 => 'globalsiteselector',
|
||||||
|
),
|
||||||
|
|
||||||
|
);
|
180
customers/base/nextcloud-deployment.yml
Normal file
180
customers/base/nextcloud-deployment.yml
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
kind: StatefulSet
|
||||||
|
apiVersion: apps/v1
|
||||||
|
metadata:
|
||||||
|
name: customer-node
|
||||||
|
labels:
|
||||||
|
app: customer-node
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: customer-node
|
||||||
|
updateStrategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: nextcloud-data
|
||||||
|
spec:
|
||||||
|
storageClassName: mayastor-3
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: customer-node
|
||||||
|
spec:
|
||||||
|
restartPolicy: Always
|
||||||
|
containers:
|
||||||
|
- name: customer
|
||||||
|
image: docker.sunet.se/drive/nextcloud-custom:25.0.3.3-4
|
||||||
|
volumeMounts:
|
||||||
|
- name: nextcloud-data
|
||||||
|
mountPath: /var/www/html/config
|
||||||
|
subPath: config
|
||||||
|
- name: default-config
|
||||||
|
mountPath: /etc/apache2/sites-enabled/000-default.conf
|
||||||
|
subPath: 000-default.conf
|
||||||
|
- name: hugepage
|
||||||
|
mountPath: /dev/hugepages
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 1500m
|
||||||
|
hugepages-2Mi: 2048Mi
|
||||||
|
memory: 2048Mi
|
||||||
|
requests:
|
||||||
|
cpu: 500m
|
||||||
|
hugepages-2Mi: 2048Mi
|
||||||
|
memory: 256Mi
|
||||||
|
readinessProbe:
|
||||||
|
tcpSocket:
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 60
|
||||||
|
livenessProbe:
|
||||||
|
tcpSocket:
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 20
|
||||||
|
periodSeconds: 180
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
name: nextcloud-http
|
||||||
|
command: ["/bin/bash"]
|
||||||
|
args: ["-c", "apachectl -D FOREGROUND"]
|
||||||
|
initContainers:
|
||||||
|
- image: docker.sunet.se/sunet/docker-jinja:latest
|
||||||
|
name: init-config
|
||||||
|
volumeMounts:
|
||||||
|
- name: nextcloud-config-template
|
||||||
|
mountPath: /tmp/config.php.template
|
||||||
|
subPath: config.php
|
||||||
|
- name: nextcloud-data
|
||||||
|
mountPath: /var/www/html/config
|
||||||
|
subPath: config
|
||||||
|
env:
|
||||||
|
- name: GSS_MASTER_URL
|
||||||
|
value: "https://drive.test.sunet.se"
|
||||||
|
- name: GSS_JWT_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: gss-secret
|
||||||
|
key: "jwt_key"
|
||||||
|
- name: LOOKUP_SERVER
|
||||||
|
value: "https://lookup.drive.test.sunet.se"
|
||||||
|
- name: MAIL_DOMAIN
|
||||||
|
value: "drive.test.sunet.se"
|
||||||
|
- name: MAIL_FROM_ADDRESS
|
||||||
|
value: "noreply"
|
||||||
|
- name: MAIL_SMTPHOST
|
||||||
|
value: "smtp.sunet.se"
|
||||||
|
- name: MAIL_SMTPNAME
|
||||||
|
value: "noreply@drive.test.sunet.se"
|
||||||
|
- name: MAIL_SMTPPASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: mail-secret
|
||||||
|
key: "smtp_password"
|
||||||
|
- name: MYSQL_DATABASE
|
||||||
|
value: "nextcloud_customer"
|
||||||
|
- name: MYSQL_USER
|
||||||
|
value: "nextcloud_customer"
|
||||||
|
- name: MYSQL_HOST
|
||||||
|
value: "proxysqlcluster.proxysql"
|
||||||
|
- name: MYSQL_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: db-secret
|
||||||
|
key: "db_password"
|
||||||
|
- name: MYSQL_PORT
|
||||||
|
value: "6033"
|
||||||
|
- name: NEXTCLOUD_TRUSTED_DOMAINS
|
||||||
|
value: "customer.drive.test.sunet.se"
|
||||||
|
- name: NEXTCLOUD_ADMIN_USER
|
||||||
|
value: admin
|
||||||
|
- name: NEXTCLOUD_VERSION_STRING
|
||||||
|
value: "25.0.3.3"
|
||||||
|
- name: NEXTCLOUD_ADMIN_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nc-secret
|
||||||
|
key: "nc_admin_password"
|
||||||
|
- name: NEXTCLOUD_PASSWORDSALT
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nc-secret
|
||||||
|
key: "nc_passwordsalt"
|
||||||
|
- name: NEXTCLOUD_INSTANCEID
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nc-secret
|
||||||
|
key: "nc_instanceid"
|
||||||
|
- name: NEXTCLOUD_SECRET
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nc-secret
|
||||||
|
key: "nc_secret"
|
||||||
|
- name: OBJECTSTORE_S3_REGION
|
||||||
|
value: "us-east-1"
|
||||||
|
- name: OBJECTSTORE_S3_HOST
|
||||||
|
value: "s3.sto4.safedc.net"
|
||||||
|
- name: OBJECTSTORE_S3_BUCKET
|
||||||
|
value: "primary-customer-drive-test.sunet.se"
|
||||||
|
- name: OBJECTSTORE_S3_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: s3-secret
|
||||||
|
key: "s3_key"
|
||||||
|
- name: OBJECTSTORE_S3_SECRET
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: s3-secret
|
||||||
|
key: "s3_secret"
|
||||||
|
- name: OBJECTSTORE_S3_USEPATH_STYLE
|
||||||
|
value: "true"
|
||||||
|
- name: OBJECTSTORE_S3_AUTOCREATE
|
||||||
|
value: "true"
|
||||||
|
- name: OBJECTSTORE_S3_SSL
|
||||||
|
value: "true"
|
||||||
|
- name: REDIS_HOST
|
||||||
|
value: "redis"
|
||||||
|
- name: SITE_NAME
|
||||||
|
value: "customer.drive.test.sunet.se"
|
||||||
|
command: ["/bin/bash", "-c", "/usr/bin/j2 -f env -o /var/www/html/config/config.php /tmp/config.php.template"]
|
||||||
|
volumes:
|
||||||
|
- name: nextcloud-config-template
|
||||||
|
configMap:
|
||||||
|
name: nextcloud-configmap
|
||||||
|
items:
|
||||||
|
- key: "config.php"
|
||||||
|
path: "config.php"
|
||||||
|
- name: default-config
|
||||||
|
configMap:
|
||||||
|
name: nextcloud-configmap
|
||||||
|
items:
|
||||||
|
- key: "000-default.conf"
|
||||||
|
path: "000-default.conf"
|
||||||
|
- name: hugepage
|
||||||
|
emptyDir:
|
||||||
|
medium: HugePages
|
31
customers/base/nextcloud-ingress.yml
Normal file
31
customers/base/nextcloud-ingress.yml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: customer-ingress
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: traefik
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
spec:
|
||||||
|
defaultBackend:
|
||||||
|
service:
|
||||||
|
name: customer-node
|
||||||
|
port:
|
||||||
|
number: 8443
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- customer.drive.test.sunet.se
|
||||||
|
secretName: tls-secret
|
||||||
|
|
||||||
|
rules:
|
||||||
|
- host: customer.drive.test.sunet.se
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: customer-node
|
||||||
|
port:
|
||||||
|
number: 80
|
24
customers/base/nextcloud-service.yml
Normal file
24
customers/base/nextcloud-service.yml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
items:
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: customer-node
|
||||||
|
name: customer-node
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
app: customer-node
|
||||||
|
sessionAffinity: None
|
||||||
|
type: ClusterIP
|
||||||
|
status:
|
||||||
|
loadBalancer: {}
|
||||||
|
kind: List
|
||||||
|
metadata:
|
||||||
|
resourceVersion: ""
|
||||||
|
selfLink: ""
|
28
customers/base/redis-deployment.yml
Normal file
28
customers/base/redis-deployment.yml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: redis
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: redis
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: default
|
||||||
|
image: redis:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- containerPort: 6379
|
||||||
|
args:
|
||||||
|
- "--save"
|
||||||
|
- ""
|
||||||
|
- "--appendonly"
|
||||||
|
- "no"
|
||||||
|
|
17
customers/base/redis-service.yml
Normal file
17
customers/base/redis-service.yml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
name: redis
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: redis-port
|
||||||
|
nodePort: 30379
|
||||||
|
port: 6379
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 6379
|
||||||
|
selector:
|
||||||
|
app: redis
|
||||||
|
type: NodePort
|
10
customers/base/s3-service.yml
Normal file
10
customers/base/s3-service.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: sto4
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: s3.sto4.safedc.net
|
||||||
|
ports:
|
||||||
|
- port: 443
|
7
customers/overlays/vr/test/kustomization.yaml
Normal file
7
customers/overlays/vr/test/kustomization.yaml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
apiVersion: 'kustomize.config.k8s.io/v1beta1'
|
||||||
|
kind: Kustomization
|
||||||
|
bases:
|
||||||
|
- ../../../base
|
||||||
|
patchesStrategicMerge:
|
||||||
|
- nextcloud-deployment.yml
|
||||||
|
- nextcloud-ingress.yml
|
34
customers/overlays/vr/test/nextcloud-deployment.yml
Normal file
34
customers/overlays/vr/test/nextcloud-deployment.yml
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
kind: StatefulSet
|
||||||
|
apiVersion: apps/v1
|
||||||
|
metadata:
|
||||||
|
name: customer-node
|
||||||
|
labels:
|
||||||
|
app: customer-node
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: customer-node
|
||||||
|
spec:
|
||||||
|
initContainers:
|
||||||
|
- image: docker.sunet.se/sunet/docker-jinja:latest
|
||||||
|
name: init-config
|
||||||
|
env:
|
||||||
|
- name: MYSQL_DATABASE
|
||||||
|
value: "nextcloud_vr"
|
||||||
|
- name: MYSQL_USER
|
||||||
|
value: "nextcloud_vr"
|
||||||
|
- name: GSS_MASTER_URL
|
||||||
|
value: "https://drive.test.sunet.se"
|
||||||
|
- name: LOOKUP_SERVER
|
||||||
|
value: "https://lookup.drive.test.sunet.se"
|
||||||
|
- name: MAIL_DOMAIN
|
||||||
|
value: "drive.test.sunet.se"
|
||||||
|
- name: MAIL_SMTPNAME
|
||||||
|
value: "noreply@drive.test.sunet.se"
|
||||||
|
- name: NEXTCLOUD_TRUSTED_DOMAINS
|
||||||
|
value: "vr.drive.test.sunet.se"
|
||||||
|
- name: OBJECTSTORE_S3_BUCKET
|
||||||
|
value: "primary-vr-drive-test.sunet.se"
|
||||||
|
- name: SITE_NAME
|
||||||
|
value: "vr.drive.test.sunet.se"
|
26
customers/overlays/vr/test/nextcloud-ingress.yml
Normal file
26
customers/overlays/vr/test/nextcloud-ingress.yml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: customer-ingress
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: traefik
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- vr.drive.test.sunet.se
|
||||||
|
secretName: tls-secret
|
||||||
|
|
||||||
|
rules:
|
||||||
|
- host: vr.drive.test.sunet.se
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: customer-node
|
||||||
|
port:
|
||||||
|
number: 80
|
6
proxysql/base/kustomization.yaml
Normal file
6
proxysql/base/kustomization.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
resources:
|
||||||
|
- proxysql-configmap.yml
|
||||||
|
- proxysql-db-service.yml
|
||||||
|
- proxysql-deployment.yml
|
||||||
|
- proxysql-namespace.yml
|
||||||
|
- proxysql-service.yml
|
408
proxysql/base/proxysql-configmap.yml
Normal file
408
proxysql/base/proxysql-configmap.yml
Normal file
|
@ -0,0 +1,408 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: proxysql-configmap
|
||||||
|
namespace: proxysql
|
||||||
|
data:
|
||||||
|
proxysql.cnf: |
|
||||||
|
datadir="/var/lib/proxysql"
|
||||||
|
|
||||||
|
admin_variables=
|
||||||
|
{
|
||||||
|
admin_credentials="admin:{{ADMIN_PASSWORD}};cluster:{{CLUSTER_PASSWORD}}"
|
||||||
|
mysql_ifaces="0.0.0.0:6032"
|
||||||
|
refresh_interval=2000
|
||||||
|
cluster_username="cluster"
|
||||||
|
cluster_password="{{CLUSTER_PASSWORD}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql_variables=
|
||||||
|
{
|
||||||
|
threads=4
|
||||||
|
max_connections=2048
|
||||||
|
default_query_delay=0
|
||||||
|
default_query_timeout=36000000
|
||||||
|
have_compress=true
|
||||||
|
poll_timeout=2000
|
||||||
|
interfaces="0.0.0.0:6033;/tmp/proxysql.sock"
|
||||||
|
default_schema="information_schema"
|
||||||
|
stacksize=1048576
|
||||||
|
server_version="8.0.23"
|
||||||
|
connect_timeout_server=3000
|
||||||
|
monitor_username="proxysql"
|
||||||
|
monitor_password="{{MONITOR_PASSWORD}}"
|
||||||
|
monitor_history=600000
|
||||||
|
monitor_connect_interval=60000
|
||||||
|
monitor_ping_interval=10000
|
||||||
|
monitor_read_only_interval=1500
|
||||||
|
monitor_read_only_timeout=500
|
||||||
|
ping_interval_server_msec=120000
|
||||||
|
ping_timeout_server=500
|
||||||
|
commands_stats=true
|
||||||
|
sessions_sort=true
|
||||||
|
connect_retries_on_failure=10
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql_galera_hostgroups =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
|
||||||
|
writer_hostgroup=10
|
||||||
|
backup_writer_hostgroup=20
|
||||||
|
reader_hostgroup=30
|
||||||
|
offline_hostgroup=9999
|
||||||
|
max_writers=1
|
||||||
|
writer_is_also_reader=2
|
||||||
|
max_transactions_behind=30
|
||||||
|
active=1
|
||||||
|
}
|
||||||
|
)
|
||||||
|
mysql_query_rules =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
rule_id=100
|
||||||
|
active=1
|
||||||
|
match_pattern="^SELECT .* FOR UPDATE"
|
||||||
|
destination_hostgroup=10
|
||||||
|
apply=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rule_id=200
|
||||||
|
active=1
|
||||||
|
match_pattern="^SELECT .*"
|
||||||
|
destination_hostgroup=30
|
||||||
|
apply=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rule_id=300
|
||||||
|
active=1
|
||||||
|
match_pattern=".*"
|
||||||
|
destination_hostgroup=10
|
||||||
|
apply=1
|
||||||
|
}
|
||||||
|
)
|
||||||
|
mysql_servers =
|
||||||
|
(
|
||||||
|
{ address="multinode-db1" , port=3306 , hostgroup=10, max_connections=100 },
|
||||||
|
{ address="multinode-db2" , port=3306 , hostgroup=20, max_connections=100 },
|
||||||
|
{ address="multinode-db3" , port=3306 , hostgroup=30, max_connections=100 }
|
||||||
|
)
|
||||||
|
|
||||||
|
mysql_users =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
username="nextcloud_antagning"
|
||||||
|
password="{{ANTAGNING_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_bth"
|
||||||
|
password="{{BTH_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_chalmers"
|
||||||
|
password="{{CHALMERS_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_du"
|
||||||
|
password="{{DU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_esh"
|
||||||
|
password="{{ESH_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_fhs"
|
||||||
|
password="{{FHS_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_gu"
|
||||||
|
password="{{GU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_hb"
|
||||||
|
password="{{HB_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_hhs"
|
||||||
|
password="{{HHS_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_hig"
|
||||||
|
password="{{HIG_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_his"
|
||||||
|
password="{{HIS_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_hj"
|
||||||
|
password="{{HJ_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_hv"
|
||||||
|
password="{{HV_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_irf"
|
||||||
|
password="{{IRF_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_kb"
|
||||||
|
password="{{KB_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_ki"
|
||||||
|
password="{{KI_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_kkh"
|
||||||
|
password="{{KKH_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_kmh"
|
||||||
|
password="{{KMH_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_konstfack"
|
||||||
|
password="{{KONSTFACK_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_kth"
|
||||||
|
password="{{KTH_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_kva"
|
||||||
|
password="{{KVA_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_liu"
|
||||||
|
password="{{LIU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_lnu"
|
||||||
|
password="{{LNU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_ltu"
|
||||||
|
password="{{LTU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_lu"
|
||||||
|
password="{{LU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_mau"
|
||||||
|
password="{{MAU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_miun"
|
||||||
|
password="{{MIUN_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_nordunet"
|
||||||
|
password="{{NORDUNET_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_nrm"
|
||||||
|
password="{{NRM_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_oru"
|
||||||
|
password="{{ORU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_rkh"
|
||||||
|
password="{{RKH_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_shh"
|
||||||
|
password="{{SHH_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_sics"
|
||||||
|
password="{{SICS_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_slu"
|
||||||
|
password="{{SLU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_smhi"
|
||||||
|
password="{{SMHI_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_sp"
|
||||||
|
password="{{SP_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_swamid"
|
||||||
|
password="{{SWAMID_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_ths"
|
||||||
|
password="{{THS_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_uhr"
|
||||||
|
password="{{UHR_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_umu"
|
||||||
|
password="{{UMU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_uniarts"
|
||||||
|
password="{{UNIARTS_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_uu"
|
||||||
|
password="{{UU_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_vinnova"
|
||||||
|
password="{{VINNOVA_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username="nextcloud_vr"
|
||||||
|
password="{{VR_PASSWORD}}"
|
||||||
|
default_hostgroup=10
|
||||||
|
transaction_persistent=1
|
||||||
|
active=1
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
proxysql_servers =
|
||||||
|
(
|
||||||
|
{ hostname = "proxysql-0.proxysqlcluster", port = 6032, weight = 1 },
|
||||||
|
{ hostname = "proxysql-1.proxysqlcluster", port = 6032, weight = 1 },
|
||||||
|
{ hostname = "proxysql-2.proxysqlcluster", port = 6032, weight = 1 }
|
||||||
|
)
|
33
proxysql/base/proxysql-db-service.yml
Normal file
33
proxysql/base/proxysql-db-service.yml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db1
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db1.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db2
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db2.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db3
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db3.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
311
proxysql/base/proxysql-deployment.yml
Normal file
311
proxysql/base/proxysql-deployment.yml
Normal file
|
@ -0,0 +1,311 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: proxysql
|
||||||
|
namespace: proxysql
|
||||||
|
labels:
|
||||||
|
app: proxysql
|
||||||
|
spec:
|
||||||
|
replicas: 3
|
||||||
|
serviceName: proxysqlcluster
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: proxysql
|
||||||
|
updateStrategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: proxysql-data
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
storageClassName: mayastor-3
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 2Gi
|
||||||
|
- metadata:
|
||||||
|
name: proxysql-etc
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
storageClassName: mayastor-3
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 2Gi
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: proxysql
|
||||||
|
spec:
|
||||||
|
restartPolicy: Always
|
||||||
|
containers:
|
||||||
|
- image: docker.sunet.se/drive/proxysql:latest
|
||||||
|
name: proxysql
|
||||||
|
volumeMounts:
|
||||||
|
- name: proxysql-data
|
||||||
|
mountPath: /var/lib/proxysql
|
||||||
|
subPath: data
|
||||||
|
- name: proxysql-etc
|
||||||
|
mountPath: /etc
|
||||||
|
subPath: etc
|
||||||
|
ports:
|
||||||
|
- containerPort: 6033
|
||||||
|
name: proxysql-mysql
|
||||||
|
- containerPort: 6032
|
||||||
|
name: proxysql-admin
|
||||||
|
initContainers:
|
||||||
|
- image: docker.sunet.se/sunet/docker-jinja:latest
|
||||||
|
name: init-config
|
||||||
|
volumeMounts:
|
||||||
|
- name: proxysql-config-template
|
||||||
|
mountPath: /tmp/proxysql.cnf.template
|
||||||
|
subPath: proxysql.cnf
|
||||||
|
- name: proxysql-etc
|
||||||
|
mountPath: /etc
|
||||||
|
subPath: etc
|
||||||
|
env:
|
||||||
|
- name: ADMIN_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_admin_password"
|
||||||
|
- name: CLUSTER_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_cluster_password"
|
||||||
|
- name: MONITOR_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_monitor_password"
|
||||||
|
- name: ANTAGNING_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_antagning_password"
|
||||||
|
- name: BTH_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_bth_password"
|
||||||
|
- name: CHALMERS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_chalmers_password"
|
||||||
|
- name: DU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_du_password"
|
||||||
|
- name: ESH_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_esh_password"
|
||||||
|
- name: FHS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_fhs_password"
|
||||||
|
- name: GU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_gu_password"
|
||||||
|
- name: HB_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_hb_password"
|
||||||
|
- name: HHS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_hhs_password"
|
||||||
|
- name: HIG_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_hig_password"
|
||||||
|
- name: HIS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_his_password"
|
||||||
|
- name: HJ_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_hj_password"
|
||||||
|
- name: HV_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_hv_password"
|
||||||
|
- name: IRF_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_irf_password"
|
||||||
|
- name: KB_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_kb_password"
|
||||||
|
- name: KI_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_ki_password"
|
||||||
|
- name: KKH_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_kkh_password"
|
||||||
|
- name: KMH_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_kmh_password"
|
||||||
|
- name: KONSTFACK_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_konstfack_password"
|
||||||
|
- name: KTH_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_kth_password"
|
||||||
|
- name: KVA_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_kva_password"
|
||||||
|
- name: LIU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_liu_password"
|
||||||
|
- name: LNU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_lnu_password"
|
||||||
|
- name: LTU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_ltu_password"
|
||||||
|
- name: LU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_lu_password"
|
||||||
|
- name: MAU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_mau_password"
|
||||||
|
- name: MIUN_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_miun_password"
|
||||||
|
- name: NORDUNET_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_nordunet_password"
|
||||||
|
- name: NRM_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_nrm_password"
|
||||||
|
- name: ORU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_oru_password"
|
||||||
|
- name: RKH_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_rkh_password"
|
||||||
|
- name: SHH_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_shh_password"
|
||||||
|
- name: SICS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_sics_password"
|
||||||
|
- name: SLU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_slu_password"
|
||||||
|
- name: SMHI_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_smhi_password"
|
||||||
|
- name: SP_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_sp_password"
|
||||||
|
- name: SWAMID_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_swamid_password"
|
||||||
|
- name: THS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_ths_password"
|
||||||
|
- name: UHR_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_uhr_password"
|
||||||
|
- name: UMU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_umu_password"
|
||||||
|
- name: UNIARTS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_uniarts_password"
|
||||||
|
- name: UU_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_uu_password"
|
||||||
|
- name: VINNOVA_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_vinnova_password"
|
||||||
|
- name: VR_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: proxysql-secret
|
||||||
|
key: "proxysql_vr_password"
|
||||||
|
command: ["/bin/sh", "-c", "/usr/bin/j2 -f env -o /etc/proxysql.cnf /tmp/proxysql.cnf.template"]
|
||||||
|
volumes:
|
||||||
|
- name: proxysql-config-template
|
||||||
|
configMap:
|
||||||
|
name: proxysql-configmap
|
||||||
|
items:
|
||||||
|
- key: "proxysql.cnf"
|
||||||
|
path: "proxysql.cnf"
|
7
proxysql/base/proxysql-namespace.yml
Normal file
7
proxysql/base/proxysql-namespace.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: proxysql
|
||||||
|
spec:
|
||||||
|
finalizers:
|
||||||
|
- kubernetes
|
38
proxysql/base/proxysql-service.yml
Normal file
38
proxysql/base/proxysql-service.yml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
labels:
|
||||||
|
app: proxysql
|
||||||
|
name: proxysql
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: proxysql-mysql
|
||||||
|
nodePort: 30033
|
||||||
|
port: 6033
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 6033
|
||||||
|
- name: proxysql-admin
|
||||||
|
nodePort: 30032
|
||||||
|
port: 6032
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 6032
|
||||||
|
selector:
|
||||||
|
app: proxysql
|
||||||
|
type: NodePort
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: proxysqlcluster
|
||||||
|
namespace: proxysql
|
||||||
|
labels:
|
||||||
|
app: proxysql
|
||||||
|
spec:
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
- port: 6032
|
||||||
|
name: proxysql-admin
|
||||||
|
selector:
|
||||||
|
app: proxysql
|
6
proxysql/overlays/prod/kustomization.yaml
Normal file
6
proxysql/overlays/prod/kustomization.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: 'kustomize.config.k8s.io/v1beta1'
|
||||||
|
kind: Kustomization
|
||||||
|
bases:
|
||||||
|
- ../../base
|
||||||
|
patchesStrategicMerge:
|
||||||
|
- proxysql-db-service.yml
|
33
proxysql/overlays/prod/proxysql-db-service.yml
Normal file
33
proxysql/overlays/prod/proxysql-db-service.yml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db1
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db1.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db2
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db2.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db3
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db3.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
6
proxysql/overlays/test/kustomization.yaml
Normal file
6
proxysql/overlays/test/kustomization.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: 'kustomize.config.k8s.io/v1beta1'
|
||||||
|
kind: Kustomization
|
||||||
|
bases:
|
||||||
|
- ../../base
|
||||||
|
patchesStrategicMerge:
|
||||||
|
- proxysql-db-service.yml
|
33
proxysql/overlays/test/proxysql-db-service.yml
Normal file
33
proxysql/overlays/test/proxysql-db-service.yml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db1
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db1.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db2
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db2.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: multinode-db3
|
||||||
|
namespace: proxysql
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: multinode-db3.drive.test.sunet.se
|
||||||
|
ports:
|
||||||
|
- port: 3306
|
Loading…
Reference in a new issue