数据平台组件搭建与配置指南
立即解锁
发布时间: 2025-08-30 01:43:09 阅读量: 3 订阅数: 18 AIGC 

# 数据平台组件搭建与配置指南
## 1. Elasticsearch 数据类型猜测与映射查看
当没有模板匹配字段或索引时,Elasticsearch 会尽力猜测数据类型。可以使用以下 `curl` 命令查看新索引生成的默认映射:
```bash
$ curl http://localhost:9200/apk8s-messages-*/_mapping
```
在配置的 Elasticsearch 7.1.1 中,`user` 字段被分配为 `long` 数值类型,`msg` 字段被索引为文本类型。
## 2. Logstash 的作用
Logstash 在处理和缓冲来自 Elasticsearch 索引操作的反压方面发挥着重要作用,尤其在高速处理大量数据的平台中。即使在小型集群中,Logstash 也可以扩展到十几个或更多节点,每个节点将数据消费并缓冲到单个 Elasticsearch 节点中。
## 3. Kibana 的部署与配置
Kibana 是 ELK 栈的前端组件,能与 Elasticsearch 无缝集成,是调试、开发和可视化 Elasticsearch 数据的优秀工具。以下是部署和配置 Kibana 的步骤:
### 3.1 创建目录和服务文件
创建目录 `cluster-apk8s-dev4/003-data/034-kibana`,并在该目录下创建 `10-service.yml` 文件,内容如下:
```yaml
apiVersion: v1
kind: Service
metadata:
name: kibana
namespace: data
labels:
app: kibana
spec:
selector:
app: kibana
ports:
- protocol: "TCP"
port: 80
targetPort: 5601
type: ClusterIP
```
应用 Kibana 服务:
```bash
$ kubectl apply -f 10-service.yml
```
### 3.2 创建配置映射文件
创建 `20-configmap.yml` 文件,内容如下:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: kibana
namespace: data
labels:
app: kibana
data:
kibana.yml: |-
server.name: kib.data.dev4.apk8s.dev
server.host: "0"
elasticsearch.hosts: http://elasticsearch:9200
```
应用 Kibana 配置映射:
```bash
$ kubectl apply -f 20-configmap.yml
```
### 3.3 创建部署文件
创建 `30-deployment.yml` 文件,内容如下:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
namespace: data
labels:
app: kibana
spec:
replicas: 1
revisionHistoryLimit: 1
selector:
matchLabels:
app: kibana
template:
metadata:
labels:
app: kibana
spec:
volumes:
- name: kibana-config-volume
configMap:
name: kibana
containers:
- name: kibana
image: docker.elastic.co/kibana/kibana-oss:7.1.1
imagePullPolicy: IfNotPresent
volumeMounts:
- name: kibana-config-volume
mountPath: /usr/share/kibana/config
env:
- name: CLUSTER_NAME
value: apk8s
ports:
- name: http
containerPort: 5601
```
应用 Kibana 部署:
```bash
$ kubectl apply -f 30-deployment.yml
```
### 3.4 创建入口文件
创建 `50-ingress.yml` 文件,内容如下:
```yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: kibana
namespace: data
labels:
app: kibana
annotations:
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: sysop-basic-auth
nginx.ingress.kubernetes.io/auth-realm: "Authentication Required"
spec:
rules:
- host: kib.data.dev4.apk8s.dev
http:
paths:
- backend:
serviceName: kibana
servicePort: 5601
path: /
tls:
- hosts:
- kib.data.dev4.apk8s.dev
secretName: data-production-tls
```
应用 Kibana 入口:
```bash
$ kubectl apply -f 50-ingress.yml
```
此入口将 Kibana 暴露在 `https://kib.data.dev4.apk8s.dev`,并使用基本认证进行安全保护,`sysop-basic-auth` 密钥包含基本认证的用户名和密码。
## 4. 数据实验室相关组件
### 4.1 Keycloak 的部署与配置
Keycloak 是一个免费的开源身份和访问管理应用程序,由 Red Hat 赞助。以下是部署和配置 Keycloak 的步骤:
#### 4.1.1 创建目录和服务文件
创建目录 `cluster-apk8s-dev4/003-data/005-keycloak`,并在该目录下创建 `10-service.yml` 文件,内容如下:
```yaml
apiVersion: v1
kind: Service
metadata:
name: web-keycloak
namespace: data
spec:
selector:
app: web-keycloak
ports:
- name: http-web
protocol: "TCP"
port: 8080
targetPort: http-web
type: ClusterIP
```
应用 Keycloak 服务:
```bash
$ kubectl apply -f 10-service.yml
```
#### 4.1.2 创建密钥文件
创建 `15-secret.yml` 文件,内容如下:
```yaml
apiVersion: v1
kind: Secret
metadata:
name: keycloak
namespace: data
labels:
app: keycloak
type: Opaque
stringData:
keycloak_user: "sysop"
keycloak_password: "verystrongpassword"
keystore_password: "anotherverystrongpassword"
```
应用 Keycloak 密钥:
```bash
$ kubectl apply -f 15-secret.yml
```
#### 4.1.3 创建部署文件
创建 `30-deployment.yml` 文件,内容如下:
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web-keycloak
namespace: data
spec:
serviceName: web-keycloak
replicas: 1
revisionHistoryLimit: 1
selector:
matchLabels:
app: web-keycloak
template:
metadata:
labels:
app: web-keycloak
spec:
initContainers:
- name: keycloak-init-chown
image: alpine:3.10.1
imagePullPolicy: IfNotPresent
volumeMounts:
- name: keycloak-db
mountPath: /data
command: ["chown"]
args: ["-R","1000:1000","/data"]
containers:
- name: web-keycloak
image: jboss/keycloak:6.0.1
imagePullPolicy: IfNotPresent
env:
- name: PROXY_ADDRESS_FORWARDING
val
```
0
0
复制全文
相关推荐









