Created
August 2, 2022 06:52
-
-
Save haeramkeem/2ed42702e5d0c410bb54d01f0d486356 to your computer and use it in GitHub Desktop.
Elasticsearch v7.17.3 - Build from official Elasticsearch helm chart
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
## ELASTICSEARCH 7.17.3 MANIFEST | |
## | |
## Source chart: helm.elastic.co/elasticsearch v7.17.3 | |
## Modifying this manifest is not recommended; rebuild it instead (via Helm) | |
## | |
## Modifications: | |
## 1. Remove `heritage: Helm` labels | |
## 2. Remove `chart: elasticsearch` labels | |
## 3. Remove `release: $HELM_RELASE` labels | |
## 4. Remove Helm testing pod | |
## | |
## Used values.yaml: | |
## 1. Modify `.replicas` to 2 | |
## 2. Modify `.minimumMasterNodes` to 1 | |
## 3. Fix image tag to `7.17.3` | |
## 4. Add `.volumeClaimTemplate.storageClassName: local-mnt` | |
## 5. Modify `.volumeClaimTemplate.resources.requests.storage` to 10Gi | |
--- | |
# Source: elasticsearch/templates/poddisruptionbudget.yaml | |
apiVersion: policy/v1 | |
kind: PodDisruptionBudget | |
metadata: | |
name: "elasticsearch-master-pdb" | |
spec: | |
maxUnavailable: 1 | |
selector: | |
matchLabels: | |
app: "elasticsearch-master" | |
--- | |
# Source: elasticsearch/templates/service.yaml | |
kind: Service | |
apiVersion: v1 | |
metadata: | |
name: elasticsearch-master | |
labels: | |
app: "elasticsearch-master" | |
annotations: | |
{} | |
spec: | |
type: ClusterIP | |
selector: | |
app: "elasticsearch-master" | |
publishNotReadyAddresses: false | |
ports: | |
- name: http | |
protocol: TCP | |
port: 9200 | |
- name: transport | |
protocol: TCP | |
port: 9300 | |
--- | |
# Source: elasticsearch/templates/service.yaml | |
kind: Service | |
apiVersion: v1 | |
metadata: | |
name: elasticsearch-master-headless | |
labels: | |
app: "elasticsearch-master" | |
annotations: | |
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" | |
spec: | |
clusterIP: None # This is needed for statefulset hostnames like elasticsearch-0 to resolve | |
# Create endpoints also if the related pod isn't ready | |
publishNotReadyAddresses: true | |
selector: | |
app: "elasticsearch-master" | |
ports: | |
- name: http | |
port: 9200 | |
- name: transport | |
port: 9300 | |
--- | |
# Source: elasticsearch/templates/statefulset.yaml | |
apiVersion: apps/v1 | |
kind: StatefulSet | |
metadata: | |
name: elasticsearch-master | |
labels: | |
app: "elasticsearch-master" | |
annotations: | |
esMajorVersion: "7" | |
spec: | |
serviceName: elasticsearch-master-headless | |
selector: | |
matchLabels: | |
app: "elasticsearch-master" | |
replicas: 2 | |
podManagementPolicy: Parallel | |
updateStrategy: | |
type: RollingUpdate | |
volumeClaimTemplates: | |
- metadata: | |
name: elasticsearch-master | |
spec: | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 10Gi | |
storageClassName: local-mnt | |
template: | |
metadata: | |
name: "elasticsearch-master" | |
labels: | |
app: "elasticsearch-master" | |
annotations: | |
{} | |
spec: | |
securityContext: | |
fsGroup: 1000 | |
runAsUser: 1000 | |
automountServiceAccountToken: true | |
affinity: | |
podAntiAffinity: | |
requiredDuringSchedulingIgnoredDuringExecution: | |
- labelSelector: | |
matchExpressions: | |
- key: app | |
operator: In | |
values: | |
- "elasticsearch-master" | |
topologyKey: kubernetes.io/hostname | |
terminationGracePeriodSeconds: 120 | |
volumes: | |
enableServiceLinks: true | |
initContainers: | |
- name: configure-sysctl | |
securityContext: | |
runAsUser: 0 | |
privileged: true | |
image: "docker.elastic.co/elasticsearch/elasticsearch:7.17.3" | |
imagePullPolicy: "IfNotPresent" | |
command: ["sysctl", "-w", "vm.max_map_count=262144"] | |
resources: | |
{} | |
containers: | |
- name: "elasticsearch" | |
securityContext: | |
capabilities: | |
drop: | |
- ALL | |
runAsNonRoot: true | |
runAsUser: 1000 | |
image: "docker.elastic.co/elasticsearch/elasticsearch:7.17.3" | |
imagePullPolicy: "IfNotPresent" | |
readinessProbe: | |
exec: | |
command: | |
- bash | |
- -c | |
- | | |
set -e | |
# If the node is starting up wait for the cluster to be ready (request params: "wait_for_status=green&timeout=1s" ) | |
# Once it has started only check that the node itself is responding | |
START_FILE=/tmp/.es_start_file | |
# Disable nss cache to avoid filling dentry cache when calling curl | |
# This is required with Elasticsearch Docker using nss < 3.52 | |
export NSS_SDB_USE_CACHE=no | |
http () { | |
local path="${1}" | |
local args="${2}" | |
set -- -XGET -s | |
if [ "$args" != "" ]; then | |
set -- "$@" $args | |
fi | |
if [ -n "${ELASTIC_PASSWORD}" ]; then | |
set -- "$@" -u "elastic:${ELASTIC_PASSWORD}" | |
fi | |
curl --output /dev/null -k "$@" "http://127.0.0.1:9200${path}" | |
} | |
if [ -f "${START_FILE}" ]; then | |
echo 'Elasticsearch is already running, lets check the node is healthy' | |
HTTP_CODE=$(http "/" "-w %{http_code}") | |
RC=$? | |
if [[ ${RC} -ne 0 ]]; then | |
echo "curl --output /dev/null -k -XGET -s -w '%{http_code}' \${BASIC_AUTH} http://127.0.0.1:9200/ failed with RC ${RC}" | |
exit ${RC} | |
fi | |
# ready if HTTP code 200, 503 is tolerable if ES version is 6.x | |
if [[ ${HTTP_CODE} == "200" ]]; then | |
exit 0 | |
elif [[ ${HTTP_CODE} == "503" && "7" == "6" ]]; then | |
exit 0 | |
else | |
echo "curl --output /dev/null -k -XGET -s -w '%{http_code}' \${BASIC_AUTH} http://127.0.0.1:9200/ failed with HTTP code ${HTTP_CODE}" | |
exit 1 | |
fi | |
else | |
echo 'Waiting for elasticsearch cluster to become ready (request params: "wait_for_status=green&timeout=1s" )' | |
if http "/_cluster/health?wait_for_status=green&timeout=1s" "--fail" ; then | |
touch ${START_FILE} | |
exit 0 | |
else | |
echo 'Cluster is not yet ready (request params: "wait_for_status=green&timeout=1s" )' | |
exit 1 | |
fi | |
fi | |
failureThreshold: 3 | |
initialDelaySeconds: 10 | |
periodSeconds: 10 | |
successThreshold: 3 | |
timeoutSeconds: 5 | |
ports: | |
- name: http | |
containerPort: 9200 | |
- name: transport | |
containerPort: 9300 | |
resources: | |
limits: | |
cpu: 1000m | |
memory: 2Gi | |
requests: | |
cpu: 1000m | |
memory: 2Gi | |
env: | |
- name: node.name | |
valueFrom: | |
fieldRef: | |
fieldPath: metadata.name | |
- name: cluster.initial_master_nodes | |
value: "elasticsearch-master-0,elasticsearch-master-1," | |
- name: discovery.seed_hosts | |
value: "elasticsearch-master-headless" | |
- name: cluster.name | |
value: "elasticsearch" | |
- name: network.host | |
value: "0.0.0.0" | |
- name: cluster.deprecation_indexing.enabled | |
value: "false" | |
- name: node.data | |
value: "true" | |
- name: node.ingest | |
value: "true" | |
- name: node.master | |
value: "true" | |
- name: node.ml | |
value: "true" | |
- name: node.remote_cluster_client | |
value: "true" | |
volumeMounts: | |
- name: "elasticsearch-master" | |
mountPath: /usr/share/elasticsearch/data |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment