- Kubernetes instance with the following version considerations:
clickhouse-operatorversions before0.16.0is compatible with Kubenetes after1.16and prior1.22.clickhouse-operatorversions0.16.0and after is compatible Kubernetes version1.16and after.
- Properly configured
kubectl curl
Verify the Docker manifest is available based on the version table, replacing {OPERATOR_VERSION} with the specific version. For example, for version 0.16.0, the URL would be https://github.com/Altinity/clickhouse-operator/raw/0.16.0/deploy/operator/clickhouse-operator-install-bundle.yaml.
clickhouse-operator version |
Kubernetes version | Kubernetes manifest URL |
|---|---|---|
| Current | Kubernetes 1.16+ | https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/deploy/operator/clickhouse-operator-install-bundle.yaml |
| Current | Kubernetes before 1.16 | (Beta) https://github.com/Altinity/clickhouse-operator/raw/master/deploy/operator/clickhouse-operator-install-bundle-v1beta1.yaml |
0.16.0 and greater |
Kubernetes 1.16+ | https://github.com/Altinity/clickhouse-operator/raw/{OPERATOR_VERSION}/deploy/operator/clickhouse-operator-install-bundle.yaml |
Before 0.16.0 |
Kubernetes after 1.16 and before 1.22 | kubectl apply -f https://github.com/Altinity/clickhouse-operator/raw/{OPERATOR_VERSION}/deploy/operator/clickhouse-operator-install.yaml |
clickhouse-operator-install-bundle.yaml file availability.
In is located in deploy/operator folder inside clickhouse-operator sources.
Operator installation process is quite straightforward and consists of one main step - deploy ClickHouse operator. We'll apply operator manifest directly from github repo
kubectl apply -f https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/deploy/operator/clickhouse-operator-install-bundle.yamlThe following results are expected:
customresourcedefinition.apiextensions.k8s.io/clickhouseinstallations.clickhouse.altinity.com created
serviceaccount/clickhouse-operator created
clusterrolebinding.rbac.authorization.k8s.io/clickhouse-operator created
deployment.apps/clickhouse-operator configured
Operator is deployed in kube-system namespace.
kubectl get pods --namespace kube-systemExpected results:
NAME READY STATUS RESTARTS AGE
...
clickhouse-operator-5c46dfc7bd-7cz5l 1/1 Running 0 43m
...
since 0.20.1 version official clickhouse-operator helm chart, also available
installation
helm repo add clickhouse-operator https://helm.altinity.com
helm install clickhouse-operator clickhouse-operator/altinity-clickhouse-operatorupgrade
helm repo update clickhouse-operator
helm upgrade clickhouse-operator clickhouse-operator/altinity-clickhouse-operatorLook https://github.com/Altinity/clickhouse-operator/tree/master/deploy/helm/clickhouse-operator/ for details
Let's walk over all resources created along with ClickHouse operator, which are:
- Custom Resource Definition
- Service account
- Cluster Role Binding
- Deployment
customresourcedefinition.apiextensions.k8s.io/clickhouseinstallations.clickhouse.altinity.com created
New Custom Resource Definition named ClickHouseInstallation is created.
k8s API is extended with new kind ClickHouseInstallation and we'll be able to manage k8s resource of kind: ClickHouseInstallation
serviceaccount/clickhouse-operator created
New Service Account named clickhouse-operator is created.
A service account provides an identity used to contact the apiserver by the processes that run in a Pod.
Processes in containers inside pods can contact the apiserver, and when they do, they are authenticated as a particular Service Account - clickhouse-operator in this case.
clusterrolebinding.rbac.authorization.k8s.io/clickhouse-operator created
New CluserRoleBinding named clickhouse-operator is created. A role binding grants the permissions defined in a role to a set of users. It holds a reference to the role being granted to the list of subjects (users, groups, or service accounts). In this case Role
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-adminis being granted to
subjects:
- kind: ServiceAccount
name: clickhouse-operator
namespace: kube-systemclickhouse-operator Service Account created earlier.
Permissions are granted cluster-wide with a ClusterRoleBinding.
deployment.apps/clickhouse-operator configured
New Deployment named clickhouse-operator is created.
ClickHouse operator app would be run by this deployment in kube-system namespace.
Check Custom Resource Definition
kubectl get customresourcedefinitionsExpected result
NAME CREATED AT
...
clickhouseinstallations.clickhouse.altinity.com 2019-01-25T10:17:57Z
...
Check Service Account
kubectl get serviceaccounts -n kube-systemExpected result
NAME SECRETS AGE
...
clickhouse-operator 1 27h
...
Check Cluster Role Binding
kubectl get clusterrolebindingExpected result
NAME AGE
...
clickhouse-operator 31m
...
Check deployment
kubectl get deployments --namespace kube-systemExpected result
NAME READY UP-TO-DATE AVAILABLE AGE
...
clickhouse-operator 1/1 1 1 31m
...