apiVersion: v1 kind: PersistentVolume metadata: name: elasticsearch-pv-volume namespace: logging labels: type: local app: elasticsearch spec: storageClassName: manual capacity: storage: 250Mi accessModes: - ReadWriteOnce hostPath: path: "/var/elasticsearch/data" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: elasticsearch-pv-claim namespace: logging labels: app: elasticsearch spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 250Mi --- apiVersion: v1 kind: ConfigMap metadata: name: elasticsearch-config namespace: logging data: elasticsearch.yml: | discovery.type: single-node cluster.name: "docker-cluster" network.host: 0.0.0.0 xpack.security.enabled: true --- apiVersion: apps/v1 kind: Deployment metadata: name: elasticsearch namespace: logging spec: selector: matchLabels: component: elasticsearch template: metadata: labels: component: elasticsearch spec: containers: - name: elasticsearch imagePullPolicy: IfNotPresent image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 env: - name: ELASTIC_PASSWORD value: "secret" ports: - containerPort: 9200 name: http protocol: TCP resources: limits: cpu: 500m memory: 4Gi requests: cpu: 500m memory: 4Gi volumeMounts: - name: elasticsearch-storage mountPath: /usr/share/elasticsearch/data - name : config mountPath: /usr/share/elasticsearch/config/elasticsearch.yml subPath: elasticsearch.yml readOnly: false volumes: - name: elasticsearch-storage persistentVolumeClaim: claimName: elasticsearch-pv-claim - name: config configMap: name: elasticsearch-config --- apiVersion: v1 kind: Service metadata: name: elasticsearch namespace: logging labels: service: elasticsearch spec: type: NodePort selector: component: elasticsearch ports: - port: 9200 targetPort: 9200