8000 Release 0.1beta additional changes by serhii-chechun · Pull Request #3 · Altinity/clickhouse-operator · GitHub
[go: up one dir, main page]

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
9334b1c
Add CRD parser and artifacts
serhii-chechun Jan 14, 2019
5196cfe
parser update
serhii-chechun Jan 14, 2019
ea5f85e
typo correction
serhii-chechun Jan 14, 2019
947dda8
Added comments regarding implicit inheritance of values from .deploy…
serhii-chechun Jan 15, 2019
914686a
CRD parser implementation updates
serhii-chechun Jan 15, 2019
aca6af4
clickhouse configuration: adding zookeeper section
serhii-chechun Jan 21, 2019
9313ed0
Add CR object example
serhii-chechun Jan 21, 2019
f80e625
CRO parser: k8s objects generator updates
serhii-chechun Jan 21, 2019
7bd7870
Minor improvements
serhii-chechun Jan 21, 2019
7479a2f
code refactoring
serhii-chechun Jan 21, 2019
5fbd626
add manifests
sunsingerus Jan 22, 2019
0c3414c
Add IDE folders to .gitignore
sunsingerus Jan 22, 2019
7b0a985
Add vendor into codebase
serhii-chechun Jan 22, 2019
b829043
liveliness and readiness probes
sunsingerus Jan 22, 2019
f992de1
N-retries readiness check
sunsingerus Jan 22, 2019
4581e89
stateful set for CH node
sunsingerus Jan 22, 2019
5b508e0
Add Dockerfile of ClickHouse Operator
serhii-chechun Jan 22, 2019
bd03fac
Add deps configs and vendored packages
serhii-chechun Jan 22, 2019
8050eec
Add codegen script
serhii-chechun Jan 22, 2019
4e39987
Clickhouse operator main and app packages
serhii-chechun Jan 22, 2019
8241329
Add CRD APIs
serhii-chechun Jan 22, 2019
48a55aa
Add custom clientset
serhii-chechun Jan 22, 2019
bb16ec3
Add ClickHouseInstallation resource controller
serhii-chechun Jan 22, 2019
879bfd4
Runtime loop updates
serhii-chechun Jan 22, 2019
fe85260
Remove debug information
serhii-chechun Jan 23, 2019
703d100
remove copy/paste typos
serhii-chechun Jan 23, 2019
cdccbb6
Merge branch 'master' into dev-schechun
serhii-chechun Jan 23, 2019
4c73c2a
Readme update
serhii-chechun Jan 23, 2019
4126eed
Update README.md
serhii-chechun Jan 23, 2019
d9a0404
Update README.md
serhii-chechun Jan 23, 2019
b8ccbf5
Update README.md
8000 serhii-chechun Jan 23, 2019
ecc1ca0
docs/instroduction
sunsingerus Jan 23, 2019
b1edadb
rename introduction
sunsingerus Jan 23, 2019
e02019c
docs/zookeeper
sunsingerus Jan 23, 2019
a738dea
docs/zookeeper - simple explanation
sunsingerus Jan 23, 2019
defcaaf
docs/storage class clarification
sunsingerus Jan 23, 2019
581ec07
docs/zookeeper polishing
sunsingerus Jan 23, 2019
35b9b50
dep locks update
serhii-chechun Jan 23, 2019
10f3b24
Add CHI object example
serhii-chechun Jan 23, 2019
f23a1d8
YAML variables type fixes
serhii-chechun Jan 23, 2019
55b9dd4
Remove relocated example file
serhii-chechun Jan 23, 2019
a4ac4a1
Update ClickHouseInstallation Resource API
serhii-chechun Jan 23, 2019
6caa2fb
CHI object parser integration with CHI controller
serhii-chechun Jan 23, 2019
f07947f
Release version update
serhii-chechun Jan 23, 2019
e983d3b
remove clikhouse and test manifests
sunsingerus Jan 24, 2019
01191d1
Merge branch 'release-0.1beta' into dev-vladislav
sunsingerus Jan 24, 2019
592e05e
Merge branch 'release-0.1beta' into dev-schechun
serhii-chechun Jan 24, 2019
0f70523
manifests to work with: clickhouse and test
sunsingerus Jan 24, 2019
d2c8066
parser.setDeploymentDefaults (bug fix)
serhii-chechun Jan 24, 2019
06752c6
Merge remote-tracking branch 'origin/dev-vladislav' into dev-schechun
serhii-chechun Jan 24, 2019
14623a5
Including CHI name into prefix
serhii-chechun Jan 24, 2019
1cfa8d2
objects name pattern update
serhii-chechun Jan 24, 2019
d428784
bug fixes after merge with controller code
serhii-chechun Jan 24, 2019
331ccdb
Add k8s object creator code
serhii-chechun Jan 24, 2019
bdb6028
default PVC template update
serhii-chechun Jan 24, 2019
12644a3
ClickHouse Operator installation manifest
serhii-chechun Jan 24, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/clickhouse-operator/app/clickhouse_operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func Run() {
chiClient, kubeClient,
chiInformerFactory.Clickhouse().V1().ClickHouseInstallations(),
kubeInformerFactory.Apps().V1().StatefulSets(),
kubeInformerFactory.Core().V1().Pods(),
kubeInformerFactory.Core().V1().ConfigMaps(),
kubeInformerFactory.Core().V1().Services())
kubeInformerFactory.Start(ctx.Done())
chiInformerFactory.Start(ctx.Done())
Expand Down
15 changes: 15 additions & 0 deletions manifests/clickhouse/01-service-client.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Setup Service to provide access to Zookeeper for clients
apiVersion: v1
kind: Service
metadata:
name: clickhouse-service-client
labels:
app: clickhouse
spec:
ports:
- port: 9000
name: client
- port: 8123
name: http
selector:
dns: chi1
12 changes: 12 additions & 0 deletions manifests/clickhouse/02-headless-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Setup Headless Service for StatefulSet
apiVersion: v1
kind: Service
metadata:
name: chpod-hs
labels:
app: chpod
spec:
clusterIP: None
selector:
dns: chi1

68 changes: 68 additions & 0 deletions manifests/clickhouse/03-config.d-configmap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: etc-clickhouse-server-config-d-common
data:
zookeeper.xml: |-
<yandex>
<zookeeper>
<node>
<host>zookeeper-service-client</host>
<port>2181</port>
</node>
</zookeeper>
</yandex>

remote_servers.xml: |-
<yandex>
<remote_servers>

<benchmark_cluster>
<shard>
<replica>
<!-- chpod1 -->
<host>chpod1.chpod-hs.default.svc.cluster.local</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<!-- chpod2 -->
<host>chpod2.chpod-hs.default.svc.cluster.local</host>
<port>9000</port>
</replica>
</shard>
</benchmark_cluster>

<repl_cluster>
<shard>
<internal_replication>true</internal_replication>
<replica>
<!-- chpod1 -->
<host>chpod1.chpod-hs.default.svc.cluster.local</host>
<port>9000</port>
</replica>
<replica>
<!-- chpod3 -->
<host>chpod3.chpod-hs.default.svc.cluster.local</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<!-- chpod2 -->
<host>chpod2.chpod-hs.default.svc.cluster.local</host>
<port>9000</port>
</replica>
<replica>
<!-- chpod4 -->
<host>chpod4.chpod-hs.default.svc.cluster.local</host>
<port>9000</port>
</replica>
</shard>
</repl_cluster>

</remote_servers>
</yandex>

8 changes: 8 additions & 0 deletions manifests/clickhouse/04-storageclass-clickhouse.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: storage-clickhouse
provisioner: kubernetes.io/no-provisioner
#volumeBindingMode: WaitForFirstConsumer
volumeBindingMode: Immediate

143 changes: 143 additions & 0 deletions manifests/clickhouse/ch-statefulset-1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
# Setup Headless Service for StatefulSet
apiVersion: v1
kind: Service
metadata:
name: ch-node-hs-1
labels:
app: clickhouse
node: ch-node-1
spec:
ports:
- port: 8123
name: http
- port: 9000
name: native
- port: 9009
name: replication
clusterIP: None
selector:
app: clickhouse
node: ch-node-1
pod: ch-pod-1
---
apiVersion: v1
kind: ConfigMap
metadata:
name: etc-clickhouse-server-config-d-macros-ch-node-1
labels:
app: clickhouse
node: ch-node-1
data:
macros.xml: |-
<yandex>
<macros>
<shard>1</shard>
<replica>1</replica>
</macros>
</yandex>
---
# Setup ClickHouse StatefulSet
# Possible params:
# 1. replicas
# 2. memory
# 3. cpu
# 4. storage
# 5. storageClassName
# 6. user to run app
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: ch-stateful-set-1
labels:
app: clickhouse
node: ch-node-1
spec:
selector:
matchLabels:
app: clickhouse
node: ch-node-1
pod: ch-pod-1
serviceName: ch-node-hs-1
replicas: 1
updateStrategy:
type: RollingUpdate
podManagementPolicy: Parallel
template:
metadata:
labels:
app: clickhouse
node: ch-node-1
pod: ch-pod-1
spec:
affinity:
# Locate only one pod on each host
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- clickhouse
topologyKey: "kubernetes.io/hostname"
containers:
- name: clickhouse
imagePullPolicy: Always
image: yandex/clickhouse-server
livenessProbe:
tcpSocket:
port: 8123
# port: 9000
# Number of seconds after the container has started before liveness or readiness probes are initiated
initialDelaySeconds: 10
# How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1
periodSeconds: 10
# Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1.
timeoutSeconds: 10
# Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1
successThreshold: 1
# When a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up
failureThreshold: 3
readinessProbe:
exec:
# Try 5 times to access both native and http API entry points.
# In case of failure sleep for i*10 sec and retry
# This command can take long to to run, so adjust 'timeoutSeconds' accordingly
command:
- /bin/bash
- -c
- for i in 1 2 3 4 5; do echo "Attempt $i" && echo -n "version=" && clickhouse-client -q 'select version()' && HTTP=$(wget localhost:8123 -q --tries=1 --timeout=5 -O /dev/stdout) && echo "HTTP=$HTTP" && [ $HTTP == 'Ok.' ] && exit 0; echo "Attempt $i FAILED with above output"; sleep $(($i * 10)); done; exit 1
initialDelaySeconds: 20
periodSeconds: 60
# Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1.
timeoutSeconds: 200
# When a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up
failureThreshold: 3
ports:
- containerPort: 8123
name: http
- containerPort: 9000
name: native
- containerPort: 9009
name: replication
resources:
requests:
memory: "1Gi"
cpu: "0.5"
volumeMounts:
- name: etc-clickhouse-server-config-d-common-volume
10BC8 mountPath: /etc/clickhouse-server/config.d/remote_servers.xml
subPath: remote_servers.xml
- name: etc-clickhouse-server-config-d-common-volume
mountPath: /etc/clickhouse-server/config.d/zookeeper.xml
subPath: zookeeper.xml
- name: etc-clickhouse-server-config-d-macros-volume
mountPath: /etc/clickhouse-server/config.d/macros.xml
subPath: macros.xml
volumes:
- name: etc-clickhouse-server-config-d-common-volume
configMap:
name: etc-clickhouse-server-config-d-common
- name: etc-clickhouse-server-config-d-macros-volume
configMap:
name: etc-clickhouse-server-config-d-macros-ch-node-1
73 changes: 73 additions & 0 deletions manifests/clickhouse/chpod1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: etc-clickhouse-server-config-d-macros-chpod1
data:
macros.xml: |-
<yandex>
<macros>
<shard>1</shard>
<replica>1</replica>
</macros>
</yandex>
---
apiVersion: v1
kind: Pod
metadata:
name: chpod1
labels:
app: chpod1
dns: chi1
spec:
hostname: chpod1
subdomain: chpod-hs
containers:
- name: chpod1
image: yandex/clickhouse-server
livenessProbe:
tcpSocket:
port: 8123
# port: 9000
# Number of seconds after the container has started before liveness or readiness probes are initiated
initialDelaySeconds: 10
# How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1
periodSeconds: 10
# Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1.
timeoutSeconds: 10
# Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1
successThreshold: 1
# When a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up
failureThreshold: 3
readinessProbe:
exec:
# Try 5 times to access both native and http API entry points.
# In case of failure sleep for i*10 sec and retry
# This command can take long to to run, so adjust 'timeoutSeconds' accordingly
command:
- /bin/bash
- -c
- for i in 1 2 3 4 5; do echo "Attempt $i" && echo -n "version=" && clickhouse-client -q 'select version()' && HTTP=$(wget localhost:8123 -q --tries=1 --timeout=5 -O /dev/stdout) && echo "HTTP=$HTTP" && [ $HTTP == 'Ok.' ] && exit 0; echo "Attempt $i FAILED with above output"; sleep $(($i * 10)); done; exit 1
initialDelaySeconds: 20
periodSeconds: 60
# Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1.
timeoutSeconds: 200
# When a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up
failureThreshold: 3
volumeMounts:
- name: etc-clickhouse-server-config-d-common-volume
mountPath: /etc/clickhouse-server/config.d/remote_servers.xml
subPath: remote_servers.xml
- name: etc-clickhouse-server-config-d-common-volume
mountPath: /etc/clickhouse-server/config.d/zookeeper.xml
subPath: zookeeper.xml
- name: etc-clickhouse-server-config-d-macros-volume
mountPath: /etc/clickhouse-server/config.d/macros.xml
subPath: macros.xml
volumes:
- name: etc-clickhouse-server-config-d-common-volume
configMap:
name: etc-clickhouse-server-config-d-common
- name: etc-clickhouse-server-config-d-macros-volume
configMap:
name: etc-clickhouse-server-config-d-macros-chpod2

Loading
0