k8s:services:setting_up_an_opensearch_cluster
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| k8s:services:setting_up_an_opensearch_cluster [2023/10/27 20:51] – created admin | k8s:services:setting_up_an_opensearch_cluster [2023/10/27 20:58] (current) – admin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | # Setting up an opensearch cluster | ||
| + | Kubernetes YAML: | ||
| + | ```yaml | ||
| + | apiVersion: v1 | ||
| + | kind: Secret | ||
| + | metadata: | ||
| + | annotations: | ||
| + | field.cattle.io/ | ||
| + | name: s3-credentials | ||
| + | namespace: opensearch | ||
| + | stringData: | ||
| + | accessKey: <from S3 service> | ||
| + | secretKey: <from S3 service> | ||
| + | --- | ||
| + | apiVersion: v1 | ||
| + | kind: Secret | ||
| + | metadata: | ||
| + | annotations: | ||
| + | field.cattle.io/ | ||
| + | name: opensearch-admin-credentials-prod | ||
| + | namespace: opensearch | ||
| + | stringData: | ||
| + | username: admin | ||
| + | password: < | ||
| + | --- | ||
| + | apiVersion: v1 | ||
| + | kind: Secret | ||
| + | metadata: | ||
| + | name: opensearch-securityconfig-prod | ||
| + | namespace: opensearch | ||
| + | stringData: | ||
| + | internal_users.yml: | ||
| + | _meta: | ||
| + | type: " | ||
| + | config_version: | ||
| + | admin: | ||
| + | hash: "< | ||
| + | reserved: true | ||
| + | backend_roles: | ||
| + | - " | ||
| + | description: | ||
| + | --- | ||
| + | apiVersion: opensearch.opster.io/ | ||
| + | kind: OpenSearchCluster | ||
| + | metadata: | ||
| + | name: opensearch-prod | ||
| + | namespace: opensearch | ||
| + | spec: | ||
| + | bootstrap: | ||
| + | resources: {} | ||
| + | confMgmt: {} | ||
| + | dashboards: | ||
| + | enable: true | ||
| + | opensearchCredentialsSecret: | ||
| + | name: opensearch-admin-credentials-prod | ||
| + | replicas: 1 | ||
| + | resources: | ||
| + | limits: | ||
| + | cpu: ' | ||
| + | memory: 2Gi | ||
| + | requests: | ||
| + | cpu: ' | ||
| + | memory: 1Gi | ||
| + | service: | ||
| + | type: ClusterIP | ||
| + | tls: | ||
| + | caSecret: {} | ||
| + | enable: true | ||
| + | generate: true | ||
| + | secret: {} | ||
| + | version: 2.8.0 | ||
| + | general: | ||
| + | drainDataNodes: | ||
| + | httpPort: 9200 | ||
| + | keystore: | ||
| + | - keyMappings: | ||
| + | accessKey: s3.client.default.access_key | ||
| + | secretKey: s3.client.default.secret_key | ||
| + | secret: | ||
| + | name: s3-credentials | ||
| + | pluginsList: | ||
| + | - repository-s3 | ||
| + | serviceName: | ||
| + | version: 2.8.0 | ||
| + | initHelper: {} | ||
| + | nodePools: | ||
| + | - additionalConfig: | ||
| + | http.cors.allow-credentials: | ||
| + | http.cors.allow-origin: | ||
| + | / | ||
| + | http.cors.enabled: | ||
| + | s3.client.default.endpoint: | ||
| + | s3.client.default.path_style_access: | ||
| + | s3.client.default.protocol: | ||
| + | component: masters | ||
| + | diskSize: 25Gi | ||
| + | jvm: ' | ||
| + | persistence: | ||
| + | pvc: | ||
| + | accessModes: | ||
| + | - ReadWriteOnce | ||
| + | storageClass: | ||
| + | replicas: 3 | ||
| + | resources: | ||
| + | limits: | ||
| + | cpu: ' | ||
| + | memory: 4Gi | ||
| + | requests: | ||
| + | cpu: ' | ||
| + | memory: 4Gi | ||
| + | roles: | ||
| + | - data | ||
| + | - cluster_manager | ||
| + | security: | ||
| + | config: | ||
| + | adminCredentialsSecret: | ||
| + | name: opensearch-admin-credentials-prod | ||
| + | adminSecret: | ||
| + | securityConfigSecret: | ||
| + | name: opensearch-securityconfig-prod | ||
| + | tls: | ||
| + | http: | ||
| + | caSecret: {} | ||
| + | generate: true | ||
| + | secret: {} | ||
| + | transport: | ||
| + | caSecret: {} | ||
| + | generate: true | ||
| + | perNode: true | ||
| + | secret: {} | ||
| + | --- | ||
| + | apiVersion: networking.k8s.io/ | ||
| + | kind: Ingress | ||
| + | metadata: | ||
| + | annotations: | ||
| + | cert-manager.io/ | ||
| + | nginx.ingress.kubernetes.io/ | ||
| + | name: opensearch-api | ||
| + | namespace: opensearch | ||
| + | spec: | ||
| + | rules: | ||
| + | - host: opensearch-api.cluster.machine-deck.jeffries-tube.at | ||
| + | http: | ||
| + | paths: | ||
| + | - backend: | ||
| + | service: | ||
| + | name: opensearch-prod-masters | ||
| + | port: | ||
| + | number: 9200 | ||
| + | path: / | ||
| + | pathType: Prefix | ||
| + | tls: | ||
| + | - hosts: | ||
| + | - opensearch-api.cluster.machine-deck.jeffries-tube.at | ||
| + | secretName: opensearch-api-tls | ||
| + | --- | ||
| + | apiVersion: networking.k8s.io/ | ||
| + | kind: Ingress | ||
| + | metadata: | ||
| + | annotations: | ||
| + | cert-manager.io/ | ||
| + | nginx.ingress.kubernetes.io/ | ||
| + | name: opensearch-dashboards | ||
| + | namespace: opensearch | ||
| + | spec: | ||
| + | rules: | ||
| + | - host: opensearch.cluster.machine-deck.jeffries-tube.at | ||
| + | http: | ||
| + | paths: | ||
| + | - backend: | ||
| + | service: | ||
| + | name: opensearch-prod-dashboards | ||
| + | port: | ||
| + | number: 5601 | ||
| + | path: / | ||
| + | pathType: Prefix | ||
| + | tls: | ||
| + | - hosts: | ||
| + | - opensearch.cluster.machine-deck.jeffries-tube.at | ||
| + | secretName: opensearch-dashboards-tls | ||
| + | ``` | ||
| + | |||
| + | ## Troubleshooting | ||
| + | |||
| + | * Make sure the sysctl setting vm.max_map_count is 262144 on all cluster nodes | ||
| + | * If something goes wrong start all over, first install tends to hang if certain race conditions are met | ||
| + | * delete the opensearch cluster definition | ||
| + | * delete the PVC | ||
| + | * delete the released local-disk PV | ||
| + | * For Ceph S3: there is usually no bucket path, just the name | ||