Сервисы в Kubernetes:
- Elasticsearch — elasticsearch
- MongoDB — mongodb-main
Namespace: staging
URL для входа в Web UI: graylog.domain.com
Генерация "PASSWORD_SECRET" и хеш пароля "ROOT_PASSWORD_SHA2"
PASSWORD_SECRET:
pwgen -s 80 1
Если пакет "pwgen" отсутствует в системе, то его необходимо установить.
ROOT_PASSWORD_SHA2:
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Вводим пароль и получаем его хеш:
Enter Password: qwerty 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
manifest.yml
apiVersion: v1 kind: ConfigMap metadata: name: graylog-config namespace: staging labels: app: graylog-app data: GRAYLOG_REST_LISTEN_URI: "http://0.0.0.0:9000/api/" GRAYLOG_WEB_LISTEN_URI: "http://0.0.0.0:9000/" GRAYLOG_WEB_ENDPOINT_URI: "https://graylog.domain.com/api/" GRAYLOG_PASSWORD_SECRET: "0JKrvpOPrAxH2GDlnZEc0hOcLPLxqMlacCxQnJOB7QOvA2S8AEaZWZtYJoXzIYTnkW9sDyuVwn4xwd8y" GRAYLOG_ROOT_PASSWORD_SHA2: "65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5" GRAYLOG_MONGODB_URI: "mongodb://mongodb-main/graylog" GRAYLOG_MESSAGE_JOURNAL_ENABLED: "false" GRAYLOG_ELASTICSEARCH_HOSTS: "http://elasticsearch:9200" GRAYLOG_ELASTICSEARCH_DISCOVERY_ENABLED: "true" GRAYLOG_ROOT_TIMEZONE: "Europe/Kiev" --- apiVersion: apps/v1 kind: Deployment metadata: name: graylog-app namespace: staging labels: app: graylog-app spec: replicas: 1 selector: matchLabels: app: graylog-app strategy: type: RollingUpdate progressDeadlineSeconds: 300 template: metadata: labels: app: graylog-app spec: containers: - image: graylog/graylog:2.4 name: graylog imagePullPolicy: "IfNotPresent" ports: - containerPort: 9000 - containerPort: 12201 - containerPort: 514 envFrom: - configMapRef: name: graylog-config nodeSelector: nodegroup: staging --- apiVersion: v1 kind: Service metadata: name: graylog-svc namespace: staging spec: ports: - name: web port: 9000 protocol: TCP - name: gelf port: 12201 protocol: UDP - name: syslog port: 514 protocol: UDP selector: app: graylog-app --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: graylog-ing namespace: staging annotations: kubernetes.io/ingress.class: ingress-staging certmanager.k8s.io/cluster-issuer: letsencrypt-production certmanager.k8s.io/acme-challenge-type: dns01 certmanager.k8s.io/acme-dns01-provider: dns nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/proxy-body-size: "0" spec: tls: - hosts: - graylog.domain.com secretName: graylog.domain.com-secret-tls rules: - host: graylog.domain.com http: paths: - path: / backend: serviceName: graylog-svc servicePort: 9000
Применяем манифест:
kubectl apply -f manifest.yml