Last active
February 28, 2020 01:20
-
-
Save MichelDiz/3f00ad08fa960130b42022e835fe7460 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: helm.cattle.io/v1 | |
kind: HelmChart | |
metadata: | |
name: traefik | |
namespace: kube-system | |
spec: | |
chart: traefik | |
repo: https://nanosapp.github.io/chart-releases/stable | |
targetNamespace: kube-system | |
set: | |
image.tag: 2.1.4 | |
ports.grpc.port: 9080 | |
ports.web.port: 80 | |
ports.websecure.port: 443 | |
rbac.enabled: "true" | |
ssl.enabled: "true" | |
metrics.prometheus.enabled: "true" | |
kubernetes.ingressEndpoint.useDefaultPublishedService: "true" | |
dashboard.enabled: "true" | |
dashboard.domain: "traefik.me" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This is a headless service which is necessary for discovery for a dgraph-zero StatefulSet. | |
# https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#creating-a-statefulset | |
kind: IngressRoute | |
apiVersion: traefik.containo.us/v1alpha1 | |
metadata: | |
name: dgraph-ratel-ingress | |
namespace: default | |
annotations: | |
kubernetes.io/ingress.class: "traefik" | |
spec: | |
entryPoints: | |
- web | |
routes: | |
- match: Host(`ratel.dgraph.me`) | |
kind: Rule | |
services: | |
- name: dgraph-ratel | |
port: 8000 | |
--- | |
kind: IngressRoute | |
apiVersion: traefik.containo.us/v1alpha1 | |
metadata: | |
name: dgraph-http-ingress | |
namespace: default | |
annotations: | |
kubernetes.io/ingress.class: "traefik" | |
spec: | |
entryPoints: | |
- web | |
routes: | |
- match: Host(`api.dgraph.me`) | |
kind: Rule | |
services: | |
- name: dgraph-alpha | |
port: 8080 | |
--- | |
kind: IngressRoute | |
apiVersion: traefik.containo.us/v1alpha1 | |
metadata: | |
name: dgraph-grpc-ingress | |
namespace: default | |
annotations: | |
kubernetes.io/ingress.class: traefik | |
ingress.kubernetes.io/protocol: h2c | |
traefik.ingress.kubernetes.io/service.serversscheme: h2c | |
traefik.ingress.kubernetes.io/service.passhostheader: "true" | |
spec: | |
entryPoints: | |
- web | |
routes: | |
- match: Host(`grpc.dgraph.me`) | |
kind: Rule | |
services: | |
- name: dgraph-alpha-grpc | |
port: 9080 | |
scheme: h2c | |
--- | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: dgraph-zero | |
labels: | |
app: dgraph-zero | |
spec: | |
ports: | |
- port: 5080 | |
targetPort: 5080 | |
name: zero-grpc | |
- port: 6080 | |
targetPort: 6080 | |
protocol: TCP | |
name: zero-http | |
# We want all pods in the StatefulSet to have their addresses published for | |
# the sake of the other Dgraph Zero pods even before they're ready, since they | |
# have to be able to talk to each other in order to become ready. | |
publishNotReadyAddresses: true | |
selector: | |
app: dgraph-zero | |
--- | |
# This is a headless service which is necessary for discovery for a dgraph-alpha StatefulSet. | |
# https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#creating-a-statefulset | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: dgraph-alpha | |
labels: | |
app: dgraph-alpha | |
spec: | |
ports: | |
- port: 7080 | |
targetPort: 7080 | |
name: alpha-grpc-int | |
- port: 8080 | |
targetPort: 8080 | |
protocol: TCP | |
name: alpha-http | |
# We want all pods in the StatefulSet to have their addresses published for | |
# the sake of the other Dgraph alpha pods even before they're ready, since they | |
# have to be able to talk to each other in order to become ready. | |
publishNotReadyAddresses: true | |
selector: | |
app: dgraph-alpha | |
--- | |
# This is a headless service which is necessary for discovery for a dgraph-alpha StatefulSet. | |
# https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#creating-a-statefulset | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: dgraph-alpha-grpc | |
labels: | |
app: dgraph-alpha | |
annotations: | |
service.alpha.kubernetes.io/app-protocols: '{"grpc":"HTTP2"}' | |
spec: | |
ports: | |
- port: 9080 | |
targetPort: 9080 | |
protocol: TCP | |
name: alpha-grpc | |
publishNotReadyAddresses: true | |
#type: ClusterIP | |
selector: | |
app: dgraph-alpha | |
--- | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: dgraph-ratel | |
labels: | |
app: dgraph-ratel | |
spec: | |
ports: | |
- port: 8000 | |
protocol: TCP | |
selector: | |
app: dgraph-ratel | |
--- | |
# This StatefulSet runs 3 Dgraph Zero. | |
apiVersion: apps/v1 | |
kind: StatefulSet | |
metadata: | |
name: dgraph-zero | |
spec: | |
serviceName: "dgraph-zero" | |
replicas: 3 | |
selector: | |
matchLabels: | |
app: dgraph-zero | |
template: | |
metadata: | |
labels: | |
app: dgraph-zero | |
spec: | |
affinity: | |
podAntiAffinity: | |
preferredDuringSchedulingIgnoredDuringExecution: | |
- weight: 100 | |
podAffinityTerm: | |
labelSelector: | |
matchExpressions: | |
- key: app | |
operator: In | |
values: | |
- dgraph-zero | |
topologyKey: kubernetes.io/hostname | |
containers: | |
- name: zero | |
image: dgraph/dgraph:latest | |
imagePullPolicy: IfNotPresent | |
ports: | |
- containerPort: 5080 | |
name: zero-grpc | |
- containerPort: 6080 | |
name: zero-http | |
volumeMounts: | |
- name: datadir | |
mountPath: /dgraph | |
env: | |
- name: POD_NAMESPACE | |
valueFrom: | |
fieldRef: | |
fieldPath: metadata.namespace | |
command: | |
- bash | |
- "-c" | |
- | | |
set -ex | |
[[ `hostname` =~ -([0-9]+)$ ]] || exit 1 | |
ordinal=${BASH_REMATCH[1]} | |
idx=$(($ordinal + 1)) | |
if [[ $ordinal -eq 0 ]]; then | |
exec dgraph zero --my=$(hostname -f):5080 --idx $idx --replicas 3 | |
else | |
exec dgraph zero --my=$(hostname -f):5080 --peer dgraph-zero-0.dgraph-zero.${POD_NAMESPACE}.svc.cluster.local:5080 --idx $idx --replicas 3 | |
fi | |
livenessProbe: | |
httpGet: | |
path: /health | |
port: 6080 | |
initialDelaySeconds: 15 | |
periodSeconds: 10 | |
timeoutSeconds: 5 | |
failureThreshold: 6 | |
successThreshold: 1 | |
readinessProbe: | |
httpGet: | |
path: /state | |
port: 6080 | |
initialDelaySeconds: 15 | |
periodSeconds: 10 | |
timeoutSeconds: 5 | |
failureThreshold: 6 | |
successThreshold: 1 | |
terminationGracePeriodSeconds: 60 | |
volumes: | |
- name: datadir | |
persistentVolumeClaim: | |
claimName: datadir | |
updateStrategy: | |
type: RollingUpdate | |
volumeClaimTemplates: | |
- metadata: | |
name: datadir | |
annotations: | |
volume.alpha.kubernetes.io/storage-class: anything | |
spec: | |
accessModes: | |
- "ReadWriteOnce" | |
resources: | |
requests: | |
storage: 5Gi | |
--- | |
# This StatefulSet runs 3 replicas of Dgraph Alpha. | |
apiVersion: apps/v1 | |
kind: StatefulSet | |
metadata: | |
name: dgraph-alpha | |
spec: | |
serviceName: "dgraph-alpha" | |
replicas: 3 | |
selector: | |
matchLabels: | |
app: dgraph-alpha | |
template: | |
metadata: | |
labels: | |
app: dgraph-alpha | |
spec: | |
affinity: | |
podAntiAffinity: | |
preferredDuringSchedulingIgnoredDuringExecution: | |
- weight: 100 | |
podAffinityTerm: | |
labelSelector: | |
matchExpressions: | |
- key: app | |
operator: In | |
values: | |
- dgraph-alpha | |
topologyKey: kubernetes.io/hostname | |
# Initializing the Alphas: | |
# | |
# You may want to initialize the Alphas with data before starting, e.g. | |
# with data from the Dgraph Bulk Loader: https://docs.dgraph.io/deploy/#bulk-loader. | |
# You can accomplish by uncommenting this initContainers config. This | |
# starts a container with the same /dgraph volume used by Alpha and runs | |
# before Alpha starts. | |
# | |
# You can copy your local p directory to the pod's /dgraph/p directory | |
# with this command: | |
# | |
# kubectl cp path/to/p dgraph-alpha-0:/dgraph/ -c init-alpha | |
# (repeat for each alpha pod) | |
# | |
# When you're finished initializing each Alpha data directory, you can signal | |
# it to terminate successfully by creating a /dgraph/doneinit file: | |
# | |
# kubectl exec dgraph-alpha-0 -c init-alpha touch /dgraph/doneinit | |
# | |
# Note that pod restarts cause re-execution of Init Containers. Since | |
# /dgraph is persisted across pod restarts, the Init Container will exit | |
# automatically when /dgraph/doneinit is present and proceed with starting | |
# the Alpha process. | |
# | |
# Tip: StatefulSet pods can start in parallel by configuring | |
# .spec.podManagementPolicy to Parallel: | |
# | |
# https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#deployment-and-scaling-guarantees | |
# | |
# initContainers: | |
# - name: init-alpha | |
# image: dgraph/dgraph:latest | |
# command: | |
# - bash | |
# - "-c" | |
# - | | |
# trap "exit" SIGINT SIGTERM | |
# echo "Write to /dgraph/doneinit when ready." | |
# until [ -f /dgraph/doneinit ]; do sleep 2; done | |
# volumeMounts: | |
# - name: datadir | |
# mountPath: /dgraph | |
containers: | |
- name: alpha | |
image: dgraph/dgraph:latest | |
imagePullPolicy: IfNotPresent | |
ports: | |
- containerPort: 7080 | |
name: alpha-grpc-int | |
- containerPort: 8080 | |
name: alpha-http | |
- containerPort: 9080 | |
name: alpha-grpc | |
volumeMounts: | |
- name: datadir | |
mountPath: /dgraph | |
env: | |
# This should be the same namespace as the dgraph-zero | |
# StatefulSet to resolve a Dgraph Zero's DNS name for | |
# Alpha's --zero flag. | |
- name: POD_NAMESPACE | |
valueFrom: | |
fieldRef: | |
fieldPath: metadata.namespace | |
command: | |
- bash | |
- "-c" | |
- | | |
set -ex | |
dgraph alpha --my=$(hostname -f):7080 --lru_mb 2048 --zero dgraph-zero-0.dgraph-zero.${POD_NAMESPACE}.svc.cluster.local:5080 | |
livenessProbe: | |
httpGet: | |
path: /health?live=1 | |
port: 8080 | |
initialDelaySeconds: 15 | |
periodSeconds: 10 | |
timeoutSeconds: 5 | |
failureThreshold: 6 | |
successThreshold: 1 | |
readinessProbe: | |
httpGet: | |
path: /health | |
port: 8080 | |
initialDelaySeconds: 15 | |
periodSeconds: 10 | |
timeoutSeconds: 5 | |
failureThreshold: 6 | |
successThreshold: 1 | |
terminationGracePeriodSeconds: 600 | |
volumes: | |
- name: datadir | |
persistentVolumeClaim: | |
claimName: datadir | |
updateStrategy: | |
type: RollingUpdate | |
volumeClaimTemplates: | |
- metadata: | |
name: datadir | |
annotations: | |
volume.alpha.kubernetes.io/storage-class: anything | |
spec: | |
accessModes: | |
- "ReadWriteOnce" | |
resources: | |
requests: | |
storage: 5Gi | |
--- | |
apiVersion: apps/v1 | |
kind: Deployment | |
metadata: | |
namespace: default | |
name: dgraph-ratel | |
labels: | |
app: dgraph-ratel | |
spec: | |
selector: | |
matchLabels: | |
app: dgraph-ratel | |
template: | |
metadata: | |
labels: | |
app: dgraph-ratel | |
spec: | |
containers: | |
- name: ratel | |
image: dgraph/dgraph:latest | |
ports: | |
- containerPort: 8000 | |
command: | |
- dgraph-ratel |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment