Doc: K8S #285
13
script/k8s/README.md
Normal file
13
script/k8s/README.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
Spawn a cluster with minikube
|
||||||
|
|
||||||
|
```bash
|
||||||
|
minikube start
|
||||||
|
minikube kubectl -- apply -f config.yaml
|
||||||
|
minikube kubectl -- apply -f daemon.yaml
|
||||||
|
minikube dashboard
|
||||||
|
|
||||||
|
minikube kubectl -- exec -it garage-0 --container garage -- /garage status
|
||||||
|
# etc.
|
||||||
|
```
|
||||||
|
|
||||||
|
|
12
script/k8s/admin.yaml
Normal file
12
script/k8s/admin.yaml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: garage-admin
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: cluster-admin
|
||||||
|
subjects:
|
||||||
|
- apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: User
|
||||||
|
name: system:serviceaccount:default:default
|
30
script/k8s/config.yaml
Normal file
30
script/k8s/config.yaml
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: garage-config
|
||||||
|
namespace: default
|
||||||
|
data:
|
||||||
|
garage.toml: |-
|
||||||
|
metadata_dir = "/tmp/meta"
|
||||||
|
data_dir = "/tmp/data"
|
||||||
|
|
||||||
|
replication_mode = "3"
|
||||||
|
|
||||||
|
rpc_bind_addr = "[::]:3901"
|
||||||
|
rpc_secret = "1799bccfd7411eddcf9ebd316bc1f5287ad12a68094e1c6ac6abde7e6feae1ec"
|
||||||
|
|
||||||
|
bootstrap_peers = []
|
||||||
|
|
||||||
|
kubernetes_namespace = "default"
|
||||||
|
kubernetes_service_name = "garage-daemon"
|
||||||
|
kubernetes_skip_crd = false
|
||||||
|
|
||||||
|
[s3_api]
|
||||||
|
s3_region = "garage"
|
||||||
|
api_bind_addr = "[::]:3900"
|
||||||
|
root_domain = ".s3.garage.tld"
|
||||||
|
|
||||||
|
[s3_web]
|
||||||
|
bind_addr = "[::]:3902"
|
||||||
|
root_domain = ".web.garage.tld"
|
||||||
|
index = "index.html"
|
52
script/k8s/daemon.yaml
Normal file
52
script/k8s/daemon.yaml
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: garage
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: garage
|
||||||
|
serviceName: "garage"
|
||||||
|
replicas: 3
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: garage
|
||||||
|
spec:
|
||||||
|
terminationGracePeriodSeconds: 10
|
||||||
|
containers:
|
||||||
|
- name: garage
|
||||||
|
image: dxflrs/amd64_garage:v0.7.0-rc1
|
||||||
|
ports:
|
||||||
|
- containerPort: 3900
|
||||||
|
name: s3-api
|
||||||
|
- containerPort: 3902
|
||||||
|
name: web-api
|
||||||
|
volumeMounts:
|
||||||
|
- name: fast
|
||||||
|
mountPath: /mnt/fast
|
||||||
|
- name: slow
|
||||||
|
mountPath: /mnt/slow
|
||||||
|
- name: etc
|
||||||
|
mountPath: /etc/garage.toml
|
||||||
|
subPath: garage.toml
|
||||||
|
volumes:
|
||||||
|
- name: etc
|
||||||
|
configMap:
|
||||||
|
name: garage-config
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: fast
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 100Mi
|
||||||
|
- metadata:
|
||||||
|
name: slow
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 100Mi
|
||||||
|
|
21
script/telemetry/README.md
Normal file
21
script/telemetry/README.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
Configure your `[admin-api]` endpoint:
|
||||||
|
|
||||||
|
```
|
||||||
|
[admin]
|
||||||
|
api_bind_addr = "0.0.0.0:3903"
|
||||||
|
trace_sink = "http://localhost:4317"
|
||||||
|
```
|
||||||
|
|
||||||
|
Start the test stack:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd telemetry
|
||||||
|
docker-compose up
|
||||||
|
```
|
||||||
|
|
||||||
|
Access the web interfaces:
|
||||||
|
- [Kibana](http://localhost:5601) - Click on the hamburger menu, in the Observability section, click APM
|
||||||
|
- [Grafana](http://localhost:3000) - Set a password, then on the left menu, click Dashboard -> Browse. On the new page click Import -> Choose the test dashboard we ship `grafana-garage-dashboard-elasticsearch.json`
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,17 +4,16 @@ datasources:
|
||||||
- name: DS_ELASTICSEARCH
|
- name: DS_ELASTICSEARCH
|
||||||
type: elasticsearch
|
type: elasticsearch
|
||||||
access: proxy
|
access: proxy
|
||||||
url: http://elastic:9700
|
url: http://localhost:9200
|
||||||
password: ''
|
password: ''
|
||||||
user: ''
|
user: ''
|
||||||
database: metricbeat-*
|
database: apm-*
|
||||||
basicAuth: false
|
basicAuth: false
|
||||||
isDefault: true
|
isDefault: true
|
||||||
jsonData:
|
jsonData:
|
||||||
esVersion: 70
|
esVersion: 7.10.0
|
||||||
logLevelField: ''
|
logLevelField: ''
|
||||||
logMessageField: ''
|
logMessageField: ''
|
||||||
maxConcurrentShardRequests: 5
|
maxConcurrentShardRequests: 5
|
||||||
timeField: "@timestamp"
|
timeField: "@timestamp"
|
||||||
timeInterval: 10s
|
|
||||||
readOnly: false
|
readOnly: false
|
||||||
|
|
|
@ -13,7 +13,7 @@ receivers:
|
||||||
- job_name: "garage"
|
- job_name: "garage"
|
||||||
scrape_interval: 5s
|
scrape_interval: 5s
|
||||||
static_configs:
|
static_configs:
|
||||||
- targets: ["localhost:3909"]
|
- targets: ["localhost:3903"]
|
||||||
|
|
||||||
exporters:
|
exporters:
|
||||||
logging:
|
logging:
|
||||||
|
|
Loading…
Reference in a new issue